Changeset 216
- Timestamp:
- 08/16/09 13:56:09 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/merlin/src/CAM/videoguard.c
r207 r216 190 190 unsigned char in[16]; 191 191 192 if (blocklen == i) { 192 int docalc = datalen & 0xf; 193 if ((blocklen == i) && docalc) { 193 194 memset(in, 0, sizeof (in)); 194 195 memcpy(in, &data[iblock], datalen - (datalen1 & ~0xf)); … … 199 200 memcpy(in, &data[iblock], sizeof (in)); 200 201 201 xor16(iter, in, tmp); 202 cCamCryptVG2_ReorderAndEncrypt(tmp); 203 xor16(tmp, stateD3A, iter); 202 if (docalc) { 203 xor16(iter, in, tmp); 204 cCamCryptVG2_ReorderAndEncrypt(tmp); 205 xor16(tmp, stateD3A, iter); 206 } 204 207 } 205 208 memcpy(stateD3A, tmp, 16); … … 511 514 unsigned char atr_premiere[] = { 0x3F, 0xFF, 0x11, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x07, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x50, 0x31, 0x01, 0x00, 0x11 }; 512 515 unsigned char atr_directv[] = { 0x3F, 0x78, 0x13, 0x25, 0x03, 0x40, 0xB0, 0x20, 0xFF, 0xFF, 0x4A, 0x50, 0x00 }; 516 unsigned char atr_yes[] = { 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x11, 0x69, 0xFF, 0x4A, 0x50, 0x50, 0x00, 0x00, 0x47, 0x54, 0x01, 0x00, 0x00 }; 513 517 514 518 if ((atr_size == sizeof (atr_bskyb)) && (memcmp(atr, atr_bskyb, atr_size) == 0)) { … … 524 528 } else if ((atr_size == sizeof (atr_directv)) && (memcmp(atr, atr_directv, atr_size) == 0)) { 525 529 cs_log("Type: Videoguard DirecTV"); 530 } else if ((atr_size == sizeof (atr_yes)) && (memcmp (atr, atr_yes, atr_size) == 0)) { 531 cs_log("Type: Videoguard YES DBS Israel"); 526 532 } else { 527 533 /* not a known videoguard */ … … 613 619 614 620 for (i = 0; i < l; i++) { 615 if (buff[i ] == 0x00 && buff[i + 1] == 0xF3) {621 if (buff[i+1] == 0xF3 && (buff[i] == 0x00 || buff[i] == 0x0A)) { 616 622 memcpy(&boxID, &buff[i + 2], sizeof (boxID)); 617 623 boxidOK = 1; … … 628 634 629 635 unsigned char ins4C[5] = { 0xD0, 0x4C, 0x00, 0x00, 0x09 }; 630 unsigned char payload4C[9] = { 0, 0, 0, 0, 3, 0, 0, 2, 4 };636 unsigned char payload4C[9] = { 0, 0, 0, 0, 3, 0, 0, 0, 4 }; 631 637 memcpy(payload4C, boxID, 4); 632 638 uchar cmd[272]; … … 723 729 724 730 tbuff[0] = 0; 725 memcpy(&tbuff[1], &(er->ecm[posECMpart2 + 1]), lenECMpart2 );731 memcpy(&tbuff[1], &(er->ecm[posECMpart2 + 1]), lenECMpart2 - 1); 726 732 ins40[4] = lenECMpart2; 727 733 int l;
Note:
See TracChangeset
for help on using the changeset viewer.