Membres

dimanche 7 juillet 2013

Partage des cartes Fransat HD et TNTSAT en utilisant radegast

 Partage des cartes Fransat HD et TNTSAT en utilisant radegast

Avec les compliments de la Team Kyng : les modifications à apporter à Oscam pour le partage des cartes Fransat HD et TNTSAT en mode radegast.

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, la Team Kyng a du modifier aussi le mode client du HD-100. Mais, la majorité des intéressés, veulent l'utiliser avec Cccam ou Oscam. Pour CCcam, 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. La Team Kyng vous donne ce qu'elle 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
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
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
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
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
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
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

Ce que la Team Kyng a fait de son côté, avant d'envoyer la requête via radegast, c'est de modifier 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.
Elle a fait ce choix:

Code:

80 71 27 01
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  //enlevé parce que CWsSwap flag == 1
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  //enlevé parce que CWsSwap flag == 1
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
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  //enlevé parce que CWsSwap flag == 1
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
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
En gras et souligné, c'est le CWsSwap flag. La Team Kyng  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:
    int           k, pos;
    uint8_t* SubECMp;
    if( ECMp[4]==0x80 )
    {
        memcpy(ECM, ECMp, 4);
        ECM[1]    = 0x70;
        ECM[2]    = 0x01;
        pos    = 0x04;
        k = 4;
        while(k<Len)
        {
            SubECMp        = (uint8_t *)&ECMp[k];
            if( (pos+SubECMp[1]+2)>0xE0 )
            {
                break;
            }
            if (SubECMp[2]==0xD2)
            {
                if( SubECMp[0x0E] == 0x00 )
                {
                    memcpy(ECM+pos, SubECMp, SubECMp[1]+2);
                    ECM[2]    += SubECMp[1]+2;
                    pos    += SubECMp[1]+2;
                }
            }
            else if ( (SubECMp[2]==0x90 || SubECMp[2]==0x40) && SubECMp[3]==0x07 )
            {
                if( SubECMp[0x0A] == 0x00 )
                {
                    memcpy(ECM+pos, SubECMp, SubECMp[1]+2);
                    ECM[2]    += SubECMp[1]+2;
                    pos    += SubECMp[1]+2;
                }
            }
            k += SubECMp[1] + 2;
        }
        Len    = ECM[2]+3;
    }
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, le résultat est dans ECM[] et la taille aura aussi changé et toujours contenu dans Len.
C'est ce que la Team Kyng a fait pour que ça marche.





Aucun commentaire:

Enregistrer un commentaire