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.
|
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
Code:
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.
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;
}
C'est ce que la Team Kyng a fait pour que ça marche.
Aucun commentaire:
Enregistrer un commentaire