image/svg+xml
La liberté informatique, combien ça coute ?
25 fevrier 2008
François Poulain
fr
void css_descramble(byte *sec,byte *key){ unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined; unsigned char o_lfsr0, o_lfsr1; unsigned char *end = sec + 0x800;#define SALTED(i) (key[i] ^ sec[0x54 + (i)]) lfsr1_lo = SALTED(0) | 0x100; lfsr1_hi = SALTED(1); lfsr0 = ((SALTED(4) << 17) | (SALTED(3) << 9) lfsr0 = (bit_reverse[lfsr0&0xff]<<24) | (bit_ | (bit_reverse[(lfsr0>>16)&0xff]<<8) | bit sec+=0x80; combined = 0; while (sec != end) { o_lfsr1 = lfsr1_bits0[lfsr1_hi] ^ lfsr1_bit lfsr1_hi = lfsr1_lo>>1; lfsr1_lo = ((lfsr1_lo&1)<<8) ^ o_lfsr1; o_lfsr1 = bit_reverse[o_lfsr1]; /*o_lfsr0 = (lfsr0>>7)^(lfsr0>>10)^(lfsr0>>1 o_lfsr0 = (((((((lfsr0>>8)^lfsr0)>>1)^lfsr0) lfsr0 = (lfsr0>>8)|(o_lfsr0<<24); combined += o_lfsr0 + (byte)~o_lfsr1; *sec++ = csstab1[*sec] ^ (combined&0xff); combined >>= 8; }}
void css_descramble(byte *sec,byte *key){ unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined; unsigned char o_lfsr0, o_lfsr1; unsigned char *end = sec + 0x800;#define SALTED(i) (key[i] ^ sec[0x54 + (i)]) lfsr1_lo = SALTED(0) | 0x100; lfsr1_hi = SALTED(1); lfsr0 = ((SALTED(4) << 17) | (SALTED(3) << 9) lfsr0 = (bit_reverse[lfsr0&0xff]<<24) | (bit_ | (bit_reverse[(lfsr0>>16)&0xff]<<8) | bit sec+=0x80; combined = 0; while (sec != end) { o_lfsr1 = lfsr1_bits0[lfsr1_hi] ^ lfsr1_bit lfsr1_hi = lfsr1_lo>>1; lfsr1_lo = ((lfsr1_lo&1)<<8) ^ o_lfsr1; o_lfsr1 = bit_reverse[o_lfsr1]; /*o_lfsr0 = (lfsr0>>7)^(lfsr0>>10)^(lfsr0>>1 o_lfsr0 = (((((((lfsr0>>8)^lfsr0)>>1)^lfsr0) lfsr0 = (lfsr0>>8)|(o_lfsr0<<24); combined += o_lfsr0 + (byte)~o_lfsr1; *sec++ = csstab1[*sec] ^ (combined&0xff); combined >>= 8; }}
void css_descramble(byte *sec,byte *key){ unsigned int lfsr1_lo,lfsr1_hi,lfsr0,combined; unsigned char o_lfsr0, o_lfsr1; unsigned char *end = sec + 0x800;#define SALTED(i) (key[i] ^ sec[0x54 + (i)]) lfsr1_lo = SALTED(0) | 0x100; lfsr1_hi = SALTED(1); lfsr0 = ((SALTED(4) << 17) | (SALTED(3) << 9) lfsr0 = (bit_reverse[lfsr0&0xff]<<24) | (bit_ | (bit_reverse[(lfsr0>>16)&0xff]<<8) | bit sec+=0x80; combined = 0; while (sec != end) { o_lfsr1 = lfsr1_bits0[lfsr1_hi] ^ lfsr1_bit lfsr1_hi = lfsr1_lo>>1; lfsr1_lo = ((lfsr1_lo&1)<<8) ^ o_lfsr1; o_lfsr1 = bit_reverse[o_lfsr1]; /*o_lfsr0 = (lfsr0>>7)^(lfsr0>>10)^(lfsr0>>1 o_lfsr0 = (((((((lfsr0>>8)^lfsr0)>>1)^lfsr0) lfsr0 = (lfsr0>>8)|(o_lfsr0<<24); combined += o_lfsr0 + (byte)~o_lfsr1; *sec++ = csstab1[*sec] ^ (combined&0xff); combined >>= 8; }}