Luffy: Concernant le partage des cartes Fransat HD et TNTSAT en utilisant radegast

sharingan_

DZSatien V.I.P
Inscrit
7/3/11
Messages
6 128
Bonjour tout le monde,
Avant la sortie de la version A1.15 du HD-100, il y avait un bug pour le partage des cartes Fransat HD et TNTSAT. Ce bug a été corrigé et pour vous en convaincre, il suffit juste de partager ces cartes entre 2 HD-100 par exemple. Pour ça, on a aussi du modifier aussi le mode client du HD-100. Mais, je sais que la majorité des intéressés, veulent l'utiliser avec Cccam ou Oscam. Pour CCcam, je crois que c'est difficile puisque personne ne peut le modifier. Par contre pour Oscam c'est une autre histoire, vous pouvez le modifier et le compiler vous mêmes. Je vais vous donner ce qu'on a dû faire et modifier pour que ça marche sur le HD-100, donc, ceux qui veulent que ça marche ailleurs, doivent faire la même chose.

Voici un exemple d'ECM de la TNTSAT:
Code:
80 71 27 01
Code:
[FONT=Verdana]80 2F 90 07 03 0B 00 09 05 67 01 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 85 FB 51 D4 F0 94 22 57 72 8B D4 67 23 C9 D9 F5 F0 08 CF F2 A1 3E B4 94 47 B5[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 06 15 01 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 3A F3 1F F5 08 0A 93 50 09 1B 2B 15 FC 2D 28 F4 F0 08 8F 6C B7 86 FA 33 66 30[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 07 01 00 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 16 F1 E4 65 5C 3F 05 D7 9E C3 9C E3 EA D6 A9 C6 F0 08 6A 09 1E 3D 1B 47 22 81 [/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 07 01 01 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 3D 1F C5 B6 3A 58 C2 74 01 A3 68 88 70 0C 3C B7 F0 08 29 A1 F1 52 A6 63 1A 2C[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 06 15 00 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 F1 6B 03 6C 3F 9D 43 6F 74 6B D3 B3 30 61 02 6F F0 08 E9 40 41 AB 9D F4 A1 39 [/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 09 05 67 00 E2 03 42 C3 00 E2 03 42 C3 FE EA 10 2B C1 3D AA B5 03 AD 78 28 76 20 32 01 91 A3 CE F0 08 0C 3C CE 85 2A 40 FF 04[/FONT]

Ce qu'on a fait de notre côté, avant d'envoyer la requête via radegast, on modifie l'ecm pour qu'il soit reconnaissable par la carte et aussi de réduire sa taille pour ne pas dépasser les 256 bytes, mais sans le tronquer.
On a fait ce choix:

Code:
[FONT=Verdana]80 71 27 01 [/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 09 05 67 [/FONT][U][COLOR=#0000cd][B]01[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 85 FB 51 D4 F0 94 22 57 72 8B D4 67 23 C9 D9 F5 F0 08 CF F2 A1 3E B4 94 47 B5  //enlevé parce que CWsSwap flag == 1[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 06 15 [/FONT][U][COLOR=#0000cd][B]01[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 3A F3 1F F5 08 0A 93 50 09 1B 2B 15 FC 2D 28 F4 F0 08 8F 6C B7 86 FA 33 66 30  //enlevé parce que CWsSwap flag == 1[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 07 01 [/FONT][U][COLOR=#0000cd][B]00[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 16 F1 E4 65 5C 3F 05 D7 9E C3 9C E3 EA D6 A9 C6 F0 08 6A 09 1E 3D 1B 47 22 81 [/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 07 01 [/FONT][U][COLOR=#0000cd][B]01[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 3D 1F C5 B6 3A 58 C2 74 01 A3 68 88 70 0C 3C B7 F0 08 29 A1 F1 52 A6 63 1A 2C  //enlevé parce que CWsSwap flag == 1[/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 08 06 15 [/FONT][U][COLOR=#0000cd][B]00[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 F1 6B 03 6C 3F 9D 43 6F 74 6B D3 B3 30 61 02 6F F0 08 E9 40 41 AB 9D F4 A1 39 [/FONT]
[FONT=Verdana]80 2F 90 07 03 0B 00 09 05 67 [/FONT][U][COLOR=#0000cd][B]00[/B][/COLOR][/U][FONT=Verdana] E2 03 42 C3 00 E2 03 42 C3 FE EA 10 2B C1 3D AA B5 03 AD 78 28 76 20 32 01 91 A3 CE F0 08 0C 3C CE 85 2A 40 FF 04                  [/FONT]
En gras et souligné, c'est le CWsSwap flag. On a donc décidé d'enlever les sous-Ecm avec un CWsSwap flag = 1, pour réduire la taille de l'ecm. En utilisant cette routine simple:

Code:
[FONT=Verdana]    int           k, pos;[/FONT]
[FONT=Verdana]    uint8_t* SubECMp;[/FONT]

[FONT=Verdana]    if( ECMp[4]==0x80 )[/FONT]
[FONT=Verdana]    {[/FONT]
[FONT=Verdana]        memcpy(ECM, ECMp, 4);[/FONT]
[FONT=Verdana]        ECM[1]    = 0x70;[/FONT]
[FONT=Verdana]        ECM[2]    = 0x01;[/FONT]
[FONT=Verdana]        pos    = 0x04;[/FONT]
[FONT=Verdana]        k = 4;[/FONT]
[FONT=Verdana]        while(k<Len)[/FONT]
[FONT=Verdana]        {[/FONT]
[FONT=Verdana]            SubECMp        = (uint8_t *)&ECMp[k];[/FONT]
[FONT=Verdana]            if( (pos+SubECMp[1]+2)>0xE0 )[/FONT]
[FONT=Verdana]            {[/FONT]
[FONT=Verdana]                break;[/FONT]
[FONT=Verdana]            }[/FONT]

[FONT=Verdana]            if (SubECMp[2]==0xD2)[/FONT]
[FONT=Verdana]            {[/FONT]
[FONT=Verdana]                if( SubECMp[0x0E] == 0x00 )[/FONT]
[FONT=Verdana]                {[/FONT]
[FONT=Verdana]                    memcpy(ECM+pos, SubECMp, SubECMp[1]+2);[/FONT]
[FONT=Verdana]                    ECM[2]    += SubECMp[1]+2;[/FONT]
[FONT=Verdana]                    pos    += SubECMp[1]+2;[/FONT]
[FONT=Verdana]                }[/FONT]
[FONT=Verdana]            }[/FONT]
[FONT=Verdana]            else if ( (SubECMp[2]==0x90 || SubECMp[2]==0x40) && SubECMp[3]==0x07 )[/FONT]
[FONT=Verdana]            {[/FONT]
[FONT=Verdana]                if( SubECMp[0x0A] == 0x00 )[/FONT]
[FONT=Verdana]                {[/FONT]
[FONT=Verdana]                    memcpy(ECM+pos, SubECMp, SubECMp[1]+2);[/FONT]
[FONT=Verdana]                    ECM[2]    += SubECMp[1]+2;[/FONT]
[FONT=Verdana]                    pos    += SubECMp[1]+2;[/FONT]
[FONT=Verdana]                }[/FONT]
[FONT=Verdana]            }[/FONT]
[FONT=Verdana]            k += SubECMp[1] + 2;[/FONT]
[FONT=Verdana]        }[/FONT]
[FONT=Verdana]        Len    = ECM[2]+3;[/FONT]
[FONT=Verdana]    }[/FONT]
Où, ECM est du même type que ECMp. ECMp étant l'ecm original et Len sa taille (longueur) originale. En exécutant cette procédure, la résultat est dans ECM[] et la taille aura aussi changé et toujours contenu dans Len.
C'est ce qu'on a fait pour que ça marche.
Salut.
 
merci.
et comment (ou ) ajouter ce code a oscam pour pouvoir la compiler par la suite....
 
Retour
Haut