Viaccess 3 Algorithm

bis

VIP
Messages
5,037
ECM: 80702C019003032828E2033CD4A2E2033CD47BEA10990F4775 065F9B270B2948504D4FE602F0087137CFF87594C028
CWs: 990F4775065F9B27 0B2948504D4FE602
processDw->inputCW:990F4775065F9B27
Via3x_Core->init indata:065F9B2700000000
Via3x_Core->final indata:40D51E93E25FAE81
Via3x_Fct1:40D51E93815FAEE2
Via3x_Core->init indata:1850E997815FAEE2
Via3x_Core->final indata:AC0FA4DD8B4AE1FC
Via3x_Fct2:AC0FA4DDFCE18B4A
CW->After data mixing:FABE106D1850E997
CW->After 3Des:F97BBDE8E76061D8
Via3x_Core->init indata:E76061D8FCE18B4A
Via3x_Core->final indata:533F2C92C182864C
Via3x_Fct2:533F2C924C86C182
Via3x_Core->init indata:B5FD7C6A4C86C182
Via3x_Core->final indata:F377F9DEACDF3A72
Via3x_Fct1:F377F9DE72DF3AAC
processDw->outputDW after data mixing:95BF5B74B5FD7C6A
processDw->inputCW:0B2948504D4FE602
Via3x_Core->init indata:4D4FE60272DF3AAC
Via3x_Core->final indata:0BC563B690DFA01A
Via3x_Fct1:0BC563B61ADFA090
Via3x_Core->init indata:11F6E8C01ADFA090
Via3x_Core->final indata:A5A9A58A100BA1F3
Via3x_Fct2:A5A9A58AF3A1100B
CW->After data mixing:BEEEF60911F6E8C0
CW->After 3Des:17FB5995CEB0ABAD
Via3x_Core->init indata:CEB0ABADF3A1100B
Via3x_Core->final indata:7AEFE6E7BC107D5A
Via3x_Fct2:7AEFE6E75A7DBC10
Via3x_Core->init indata:4D86E5855A7DBC10
Via3x_Core->final indata:0B0C60317D269CCB
Via3x_Fct1:0B0C6031CB269C7D
processDw->outputDW after data mixing:059637D04D86E585
Final DW after xor: 12BF2DFE80EA55BF9C9970A54BD97EA2
Final DCW: 12BF2DFE80EA55BF9C9970A54BD97EA2


debut this code :


unsigned char HashTab2[] ={//art
0x03, 0x28, 0x20,
/*MASKTABLE T1 256*/
0x6F, 0x64, 0x8B, 0x8C, 0x91, 0xF6, 0x09, 0x63,
0x5A, 0x9C, 0xB6, 0xF2, 0x5D, 0xAA, 0xE1, 0x88,
0xCF, 0x66, 0x4A, 0x65, 0x7C, 0xFA, 0x48, 0x08,
0x36, 0x75, 0x34, 0x22, 0x86, 0xEC, 0x77, 0x1F,
0xEB, 0xF7, 0xE3, 0xAD, 0xB8, 0xD4, 0xBA, 0x9B,
0xE6, 0x8A, 0xD5, 0xC9, 0xC7, 0xDD, 0xF4, 0x73,
0x87, 0xC8, 0xE9, 0xE0, 0xC2, 0x55, 0x3F, 0x74,
0x8F, 0xD9, 0x31, 0x7E, 0x59, 0x6D, 0xFC, 0x25,
0xBE, 0x19, 0xEE, 0xFB, 0x43, 0xAB, 0xE7, 0x4F,
0x60, 0x42, 0xC1, 0x82, 0x30, 0xC6, 0x1C, 0x50,
0xD1, 0xCB, 0x85, 0xDA, 0x92, 0xDC, 0x7D, 0xCD,
0xD2, 0x3D, 0x24, 0x35, 0x61, 0xF0, 0xCA, 0x07,
0x90, 0x9E, 0xC4, 0x97, 0xED, 0x8D, 0x52, 0x12,
0xD6, 0xF1, 0x0D, 0x37, 0x54, 0xB0, 0x70, 0x4D,
0x45, 0x99, 0x9A, 0xF5, 0x3A, 0xA6, 0xB5, 0x16,
0x2C, 0x20, 0x58, 0x96, 0x32, 0x2D, 0x04, 0x0E,
0xB2, 0x56, 0x0C, 0x03, 0xA0, 0xA3, 0x6B, 0x2B,
0xA8, 0xA4, 0x4B, 0x2E, 0x44, 0x5E, 0xB4, 0x79,
0x2A, 0xC5, 0xBF, 0x15, 0xAE, 0x0B, 0x68, 0xBB,
0xDB, 0xB3, 0xD7, 0x49, 0x10, 0xEA, 0xEF, 0x89,
0x28, 0x8E, 0x3E, 0x13, 0x39, 0x6E, 0xA9, 0x1B,
0x76, 0xB9, 0x38, 0x1E, 0x0F, 0x57, 0x4E, 0x47,
0x9F, 0xB1, 0xFE, 0x94, 0x98, 0xFF, 0xF9, 0x23,
0xA1, 0x00, 0x5C, 0x95, 0x80, 0x6A, 0x78, 0xC3,
0x67, 0x84, 0xD8, 0x27, 0x2F, 0xC0, 0x0A, 0xF8,
0x7A, 0x51, 0x62, 0x6C, 0x7B, 0xBD, 0xF3, 0x21,
0xD3, 0x5B, 0xA2, 0x46, 0xE4, 0xAF, 0x53, 0xCE,
0x1A, 0x26, 0xE2, 0x41, 0x1D, 0x02, 0x93, 0x83,
0x01, 0x33, 0xBC, 0xD0, 0x72, 0x4C, 0xE8, 0x69,
0x05, 0xCC, 0x7F, 0xFD, 0xE5, 0x18, 0xA5, 0xDE,
0x17, 0x14, 0x71, 0xB7, 0x81, 0x9D, 0x29, 0x3C,
0xAC, 0x40, 0xA7, 0xDF, 0x11, 0x06, 0x5F, 0x3B,
/*TRIPLEDESKEY Service key*/
0x84, 0x84, 0xF3, 0x2D, 0x0A, 0x83, 0x96, 0x8B,
0x1D, 0x9C, 0xD5, 0x92, 0xC2, 0x72, 0x07, 0x47,
/*DESKEY Des1_Key*/
0x89, 0xCB, 0xB5, 0x4E, 0xEB, 0x94, 0xE3, 0x50,
/*XORTABLE XORArray*/
0x46, 0x8A, 0x85, 0xB4, 0xB4, 0x5F, 0x4D, 0x4A,
/*PERMTABLE PermArray*/
0x07, 0x04, 0x02, 0x03, 0x05, 0x00, 0x06, 0x01,
/*CW1XOR ChainArray*/
0x87, 0x00, 0x76, 0x8A, 0x35, 0x17, 0x29, 0xD5
};




#define MASKTABLE 3 //a1 + 4 0x004 is the MT T1 256
#define TRIPLEDESKEY 259 //a1 + 260 0x104 is the 3DES key 16
#define DESKEY 275 //a1 + 276 D1 8
#define XORTABLE 283 //a1 + 284 0x11C is the XORArray X1 8
#define PERMTABLE 291 //a1 + 292 P1 8
#define CW1XOR 299 //a1 + 300 C1 8

void Via3x_Core(const unsigned char *HashTab,unsigned char *data,int pos){

int v3 = 0;
printf("Via3x_Core->init indata:");
for(int x=0;x<8;x++) printf("%02X", data[x]);printf("\n");
do
{
int v4 = v3;
int v5 = (pos + v3++) & 7;
data[v4] ^= HashTab[v5+XORTABLE];

}
while ( v3 <= 3u );

data[4] = data[2] + (-28 * data[1] | data[2] ^ (HashTab[HashTab[MASKTABLE] ^ 0xBD] - ((data[3] ^ 0xEB) + data[3])));

data[5] = ((2 * data[2] | (data[0] ^ (data[0] + 6))) ^ 0x65) + data[0]+ ((data[1] ^ 0xED) + data[1]) * (data[3] ^ (data[3] + 41));
data[6] = data[1]+ ((((data[2] + (data[2] ^ 0x33)) & 0xA) + (data[0] ^ (data[0] - 83))) | (data[1] + ((data[3] * data[3]) | 1)));


int v6 = 0;
data[7] = ((data[3] * data[3] | data[0] | 1) & ((data[1] & 7) - data[2])) + data[3];
do
{
int v11 = v6++;
data[v11 + 4] = HashTab[data[v11 + 4]+MASKTABLE];
}
while ( v6 <= 3u );


printf("Via3x_Core->final indata:");
for(int x=0;x<8;x++) printf("%02X", data[x]);printf("\n");
}
int Init1(const unsigned char *HashTab,unsigned char *data)
{
int result; // eax@1

Via3x_Core(HashTab,data,0);
result = data[7];
data[7] = data[4];
data[4] = result;
return result;
}
int Init2(const unsigned char *HashTab,unsigned char *data)
{
int result; // eax@1
unsigned char * v3; // ebx@1
int v4; // dl@1

v3 = data;
Via3x_Core(HashTab,data, 4u);
v4 = data[4];
v3[4] = v3[7];
v3[7] = v3[5];
result = data[6];
data[6] = v4;
data[5] = result;
return result;

}


int _tmain(int argc, _TCHAR* argv[])
{
static unsigned char data[] = {0x99,0x0F,0x47,0x75,0x06,0x5F,0x9B,0x27};
unsigned char Coreinit[8];
memset(&Coreinit, 0, sizeof(Coreinit));
int v2 = 0;
do
{

Coreinit[v2] = data[v2+4];
v2++;
}
while ( v2 <= 3u );

Init1(HashTab2,Coreinit);

printf("Via3x_Fct1:");
for(int x=0;x<8;x++) printf("%02X", Coreinit[x]);printf("\n");

int v4 = 0;
do
{
int v5 = v4;
unsigned char *v6 = &Coreinit[v4++];
*v6 = data[v5] ^ v6[4];
}
while ( v4 <= 3u );

Init2(HashTab2,Coreinit);

printf("Via3x_Fct2:");
for(int x=0;x<8;x++) printf("%02X", Coreinit[x]);printf("\n");

}

Via3x_Core->init indata:065F9B2700000000
Via3x_Core->final indata:40D51E93E25FAE81
Via3x_Fct1:40D51E93815FAEE2
Via3x_Core->init indata:1850E997815FAEE2
 

radja

Registered
Messages
1
:thum:
Thanks a lot for the Via3Core :D
But i don't have the data mixing :mecry:
I think it isn't the same of via2.6
Bye
 

magictails

Registered
Messages
428
hi

what it's a probleme for HD channel Csat via 3

its a same sur encrypton on TNTsat fr 30B00 : AES algo ?


for Orange HD channel fr in via 3 it' a same sur encryption

cine choc , happy , geant , max hd ,
orange sport hd

@ +
 
Top