Changeset 3100
- Timestamp:
- 09/20/10 12:48:03 (14 years ago)
- Location:
- branches/threaded
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/threaded/globals.h
r3099 r3100 618 618 int typ; 619 619 int card_system; 620 const char * card_desc; 621 int card_baseyear; 622 int card_system_version; 620 623 char label[32]; 621 624 char device[128]; -
branches/threaded/reader-nagra.c
r3099 r3100 290 290 291 291 memcpy(tmp, reader->irdId, 4); 292 tmp[ 5]=0; //irdId should have trailing NULL292 tmp[4]=0; //irdId should have trailing NULL 293 293 if(!do_cmd(reader, 0x26,0x07,0xa6, 0x42, tmp,cta_res,&cta_lr)) { 294 294 cs_debug("[nagra-reader] CMD$26 failed"); -
branches/threaded/reader-videoguard-common.c
r3099 r3100 6 6 #include "reader-videoguard-common.h" 7 7 8 void getNdsAtrEntry( NDS_ATR_ENTRY * nds_atr_entry)9 { 10 /* Initialisevalues */11 nds_atr_entry->base_year = 1997;12 nds_atr_entry->nds_version = NDSUNKNOWN;13 nds_atr_entry->desc = "VideoGuard Unknown Card";8 void set_known_card_info(struct s_reader * reader) 9 { 10 /* Set to sensible default values */ 11 reader->card_baseyear = 1997; 12 reader->card_system_version = NDSUNKNOWN; 13 reader->card_desc = "VideoGuard Unknown Card"; 14 14 15 15 NDS_ATR_ENTRY nds_atr_table[]={ // {atr}, atr len, base year, nds version, description … … 21 21 13, 1997, NDS12, "VideoGuard DirecTV"}, 22 22 /* known NDS2 atrs */ 23 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x33, 0xB0, 0x08, 0xFF, 0xFF, 0x4A, 0x50, 0x90, 24 0x00, 0x00, 0x47, 0x4C, 0x01 }, 25 21, 2004, NDS2, "VideoGuard Sky Brasil GL39 (0907)"}, 26 {{ 0x3F, 0x7F, 0x11, 0x25, 0x03, 0x33, 0xB0, 0x09, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x46, 27 0x44, 0x01, 0x00, 0x00 }, 28 20, 2000, NDS2, "VideoGuard Foxtel Australia (090B)"}, 29 {{ 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x0E, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 30 0x00, 0x49, 0x54, 0x02, 0x00, 0x00 }, 31 22, 1997, NDS2, "VideoGuard Sky Italia (0919)"}, 32 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x01, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 33 0x00, 0x5A, 0x4A, 0x01, 0x00, 0x00 }, 34 22, 2004, NDS2, "VideoGuard Dolce Romania (092F)"}, 35 {{ 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x54, 0xB0, 0x01, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 36 0x00, 0x41, 0x55, 0x01, 0x00, 0x00 }, 37 22, 1997, NDS2, "VideoGuard OnoCable Espana (093A)"}, 38 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x33, 0xB0, 0x13, 0x69, 0xFF, 0x4A, 0x50, 0xD0, 39 0x80, 0x00, 0x49, 0x54, 0x03 }, 40 21, 1997, NDS2, "VideoGuard Sky Italia (093B)"}, 41 {{ 0x3F, 0x7D, 0x11, 0x25, 0x02, 0x41, 0xB0, 0x03, 0x69, 0xFF, 0x4A, 0x50, 0xF0, 0x80, 0x00, 0x56, 42 0x54, 0x03 }, 43 18, 2000, NDS2, "VideoGuard Viasat (093E)"}, 44 {{ 0x3F, 0xFF, 0x13, 0x25, 0x02, 0x40, 0xB0, 0x12, 0x69, 0xFF, 0x4A, 0x50, 0x90, 0x47, 0x4C, 0x00, 45 0x00, 0x00, 0x00, 0x00 }, 46 20, 2000, NDS2, "VideoGuard Sky Brasil GL23 (0942)"}, 47 {{ 0x3F, 0xFF, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x54, 0xB0, 0x03, 0xFF, 0xFF, 0x4A, 0x50, 0x80, 48 0x00, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x05 }, 49 23, 2009, NDS2, "VideoGuard Sky Brasil GL54 (0943)"}, 23 50 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x00, 0x0F, 0x33, 0xB0, 0x0F, 0x69, 0xFF, 0x4A, 0x50, 0xD0, 24 51 0x00, 0x00, 0x53, 0x59, 0x02 }, 25 52 21, 1997, NDS2, "VideoGuard BSkyB (0963)"}, 26 {{ 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x0E, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 27 0x00, 0x49, 0x54, 0x02, 0x00, 0x00 }, 28 22, 1997, NDS2, "VideoGuard Sky Italia (0919)"}, 29 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x33, 0xB0, 0x13, 0x69, 0xFF, 0x4A, 0x50, 0xD0, 30 0x80, 0x00, 0x49, 0x54, 0x03 }, 31 21, 1997, NDS2, "VideoGuard Sky Italia (093B)"}, 53 {{ 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x10, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 54 0x00, 0x4E, 0x5A, 0x01, 0x00, 0x00 }, 55 22, 1992, NDS2, "VideoGuard Sky New Zealand (096A)"}, 56 {{ 0x3F, 0x7F, 0x13, 0x25, 0x04, 0x33, 0xB0, 0x02, 0x69, 0xFF, 0x4A, 0x50, 0xE0, 0x00, 0x00, 0x54, 57 0x42, 0x00, 0x00, 0x00 }, 58 20, 1997, NDS2, "VideoGuard China (0988)"}, 59 {{ 0x3F, 0xFF, 0x11, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x06, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 60 0x00, 0x41, 0x5A, 0x01, 0x00, 0x11 }, 61 22, 1992, NDS2, "VideoGuard Astro Malaysia (09AC)"}, 62 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x02, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x80, 63 0x00, 0x58, 0x38, 0x01, 0x00, 0x14 }, 64 22, 1997, NDS2, "VideoGuard TopTV (09B8)"}, 32 65 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x54, 0xB0, 0x04, 0x69, 0xFF, 0x4A, 0x50, 0xD0, 33 66 0x80, 0x00, 0x49, 0x54, 0x03 }, … … 36 69 0x00, 0x47, 0x54, 0x01, 0x00, 0x00 }, 37 70 22, 1997, NDS2, "VideoGuard YES DBS Israel"}, 38 {{ 0x3F, 0x7D, 0x11, 0x25, 0x02, 0x41, 0xB0, 0x03, 0x69, 0xFF, 0x4A, 0x50, 0xF0, 0x80, 0x00, 0x56,39 0x54, 0x03},40 18, 2000, NDS2, "VideoGuard Viasat (093E)"},41 71 {{ 0x3F, 0x7F, 0x11, 0x25, 0x03, 0x33, 0xB0, 0x09, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x56, 42 72 0x54, 0x01, 0x00, 0x00 }, … … 49 79 22, 2004, NDS2, "VideoGuard DSMART Turkey"}, 50 80 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x54, 0xB0, 0x01, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 51 0x00, 0x4B, 0x57, 0x01, 0x00, 0x00 },81 0x00, 0x4B, 0x57, 0x01, 0x00, 0x00 }, 52 82 22, 1997, NDS2, "VideoGuard Kabel BW"}, 53 83 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x10, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 54 0x00, 0x5A, 0x45, 0x01, 0x00, 0x00 },84 0x00, 0x5A, 0x45, 0x01, 0x00, 0x00 }, 55 85 22 , 2004, NDS2, "VideoGuard Get Kabel Norway"}, 56 {{ 0x3F, 0x7F, 0x11, 0x25, 0x03, 0x33, 0xB0, 0x09, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 0x00, 0x46, 57 0x44, 0x01, 0x00, 0x00}, 58 20, 2000, NDS2, "VideoGuard Foxtel Australia (090B)"}, 59 {{ 0x3F, 0x7F, 0x13, 0x25, 0x04, 0x33, 0xB0, 0x02, 0x69, 0xFF, 0x4A, 0x50, 0xE0, 0x00, 0x00, 0x54, 60 0x42, 0x00, 0x00, 0x00}, 61 20, 1997, NDS2, "VideoGuard China (0988)"}, 62 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x02, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x80, 63 0x00, 0x58, 0x38, 0x01, 0x00, 0x14}, 64 22, 1997, NDS2, "VideoGuard TopTV (09B8)"}, 65 {{ 0x3F, 0xFF, 0x13, 0x25, 0x02, 0x40, 0xB0, 0x12, 0x69, 0xFF, 0x4A, 0x50, 0x90, 0x47, 0x4C, 0x00, 86 // NDS Version Unknown as Yet 87 {{ 0x3F, 0x7F, 0x13, 0x25, 0x02, 0x40, 0xB0, 0x12, 0x69, 0xFF, 0x4A, 0x50, 0x90, 0x41, 0x55, 0x00, 66 88 0x00, 0x00, 0x00, 0x00 }, 67 20, 2000, NDS2, "VideoGuard SkyBrasil GL23 (0942)"}, 68 {{ 0x3F, 0xFD, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x33, 0xB0, 0x08, 0xFF, 0xFF, 0x4A, 0x50, 0x90, 69 0x00, 0x00, 0x47, 0x4C, 0x01}, 70 21, 2004, NDS2, "VideoGuard SkyBrasil GL39 (0907)"}, 71 {{ 0x3F, 0xFF, 0x13, 0x25, 0x02, 0x50, 0x80, 0x0F, 0x54, 0xB0, 0x03, 0xFF, 0xFF, 0x4A, 0x50, 0x80, 72 0x00, 0x00, 0x00, 0x00, 0x47, 0x4C, 0x05 }, 73 23, 2009, NDS2, "VideoGuard SkyBrasil GL54 (0943)"}, 74 {{ 0x3F, 0xFF, 0x13, 0x25, 0x03, 0x10, 0x80, 0x33, 0xB0, 0x10, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x00, 75 0x00, 0x4E, 0x5A, 0x01, 0x00, 0x00}, 76 22, 1992, NDS2, "VideoGuard Sky New Zealand (096A)"}, 77 {{ 0}, 0, 0, 0, NULL} 89 20, 1997, NDSUNKNOWN, "VideoGuard OnoCable Espana (0915)"}, 90 {{ 0x3F, 0xFF, 0x14, 0x25, 0x03, 0x10, 0x80, 0x41, 0xB0, 0x07, 0x69, 0xFF, 0x4A, 0x50, 0x70, 0x80, 91 0x00, 0x58, 0x44, 0x01, 0x00, 0x14 }, 92 22, 1997, NDSUNKNOWN, "VideoGuard Sky Vivacom (09BD)"}, //45E 93 {{ 0 }, 0, 0, 0, NULL} 78 94 }; 79 95 80 96 int i=0; 81 97 while(nds_atr_table[i].desc) { 82 if (( nds_atr_entry->atr_len == nds_atr_table[i].atr_len)83 && (memcmp ( nds_atr_entry->atr, nds_atr_table[i].atr, nds_atr_table[i].atr_len) == 0)) {84 nds_atr_entry->base_year=nds_atr_table[i].base_year;85 nds_atr_entry->nds_version = nds_atr_table[i].nds_version;86 nds_atr_entry->desc=nds_atr_table[i].desc;98 if ((reader->atrlen == nds_atr_table[i].atr_len) 99 && (memcmp (reader->atr, nds_atr_table[i].atr, nds_atr_table[i].atr_len) == 0)) { 100 reader->card_baseyear=nds_atr_table[i].base_year; 101 reader->card_system_version = nds_atr_table[i].nds_version; 102 reader->card_desc = nds_atr_table[i].desc; 87 103 break; 88 104 } … … 92 108 93 109 int aes_active=0; 94 int VG_BASEYEAR = 1997;95 110 96 111 static const unsigned short NdTabB001[0x15][0x20] = { -
branches/threaded/reader-videoguard-common.h
r3099 r3100 22 22 #define NDS12 12 23 23 #define NDS2 2 24 25 extern int VG_BASEYEAR;26 24 27 25 typedef struct nds_atr { … … 78 76 79 77 extern void rev_date_calc(const unsigned char *Date, int *year, int *mon, int *day, int *hh, int *mm, int *ss, int base_year); 80 extern void getNdsAtrEntry(NDS_ATR_ENTRY *nds_atr_entry);78 extern void set_known_card_info(struct s_reader * reader); 81 79 82 80 #endif // __NDS_COMMON__ -
branches/threaded/reader-videoguard1.c
r3099 r3100 39 39 { 40 40 def_resp; 41 static const unsigned char ins2a[5] = { 0x48, 0x2a, 0x00, 0x00, 0x00 };41 // static const unsigned char ins2a[5] = { 0x48, 0x2a, 0x00, 0x00, 0x00 }; 42 42 int l; 43 43 44 return; // Not working at present so just do nothing45 46 l = vg1_do_cmd(reader, ins2a, NULL, NULL, cta_res);44 // return; // Not working at present so just do nothing 45 46 // l = vg1_do_cmd(reader, ins2a, NULL, NULL, cta_res); 47 47 // if (l < 0 || !status_ok(cta_res + l)) 48 48 // { … … 73 73 } 74 74 int y, m, d, H, M, S; 75 rev_date_calc(&cta_res[4], &y, &m, &d, &H, &M, &S, VG_BASEYEAR);75 rev_date_calc(&cta_res[4], &y, &m, &d, &H, &M, &S, reader->card_baseyear); 76 76 unsigned short tier_id = (cta_res[2] << 8) | cta_res[3]; 77 77 char *tier_name = get_tiername(tier_id, reader->caid[0]); … … 92 92 def_resp; 93 93 94 / * get information on the card from reader-videoguard-common.c */95 NDS_ATR_ENTRY nds_atr_entry = {{0},0,0,0,0};96 memcpy( nds_atr_entry.atr,atr,atr_size);97 nds_atr_entry.atr_len = atr_size; 98 99 getNdsAtrEntry(&nds_atr_entry);100 101 if((reader->ndsversion != NDS1) && (( nds_atr_entry.nds_version != NDS1) || (reader->ndsversion != NDSAUTO))) {94 // Copy the atr info into the reader, can we not do this in reader-common.c? 95 reader->atrlen = atr_size; 96 memcpy(reader->atr,atr,atr_size); 97 98 /* set information on the card stored in reader-videoguard-common.c */ 99 set_known_card_info(reader); 100 101 if((reader->ndsversion != NDS1) && ((reader->card_system_version != NDS1) || (reader->ndsversion != NDSAUTO))) { 102 102 /* known ATR and not NDS1 103 103 or unknown ATR and not forced to NDS1 … … 107 107 } 108 108 109 cs_ri_log(reader, "[videoguard1-reader] type: %s, baseyear: %i", reader->card_desc, reader->card_baseyear); 109 110 if(reader->ndsversion == NDS1){ 110 cs_ri_log(reader, "[videoguard1-reader] Forced to NDS1"); 111 } 112 113 if (nds_atr_entry.desc){ 114 VG_BASEYEAR=nds_atr_entry.base_year; 115 cs_ri_log(reader, "[videoguard1-reader] type: %s", nds_atr_entry.desc); 111 cs_log("[videoguard1-reader] forced to NDS1+"); 116 112 } 117 113 … … 134 130 l = vg1_do_cmd(reader, ins36, NULL, buff, cta_res); 135 131 if (buff[7] > 0x0F) { 136 cs_log("[videoguard1-reader] ins36: encrypted - therefore not an NDS1 card");132 cs_log("[videoguard1-reader] class48 ins36: encrypted - therefore not an NDS1 card"); 137 133 return ERROR; 138 134 } else { … … 206 202 default: /* default to assume a length byte */ 207 203 { 208 cs_log("[videoguard1-reader] ins36returned unknown type=0x%02X - parsing may fail", buff[i]);204 cs_log("[videoguard1-reader] class48 ins36: returned unknown type=0x%02X - parsing may fail", buff[i]); 209 205 i += buff[i + 1] + 2; 210 206 } … … 235 231 memcpy(payload4C, boxID, 4); 236 232 if (!write_cmd_vg(ins4C, payload4C) || !status_ok(cta_res + l)) { 237 cs_log("[videoguard1-reader] sending boxid failed");233 cs_log("[videoguard1-reader] class48 ins4C: sending boxid failed"); 238 234 return ERROR; 239 235 } … … 242 238 l = vg1_do_cmd(reader, ins58, NULL, buff, cta_res); 243 239 if (l < 0) { 244 cs_log("[videoguard1-reader] c md ins58failed");240 cs_log("[videoguard1-reader] class48 ins58: failed"); 245 241 return ERROR; 246 242 } … … 249 245 memcpy(reader->hexserial + 2, cta_res + 1, 4); 250 246 memcpy(reader->sa, cta_res + 1, 3); 251 reader->caid[0] = cta_res[24] * 0x100 + cta_res[25]; 247 // reader->caid[0] = cta_res[24] * 0x100 + cta_res[25]; 248 /* Force caid until can figure out how to get it */ 249 reader->caid[0] = 0x9 * 0x100 + 0x69; 250 252 251 /* we have one provider, 0x0000 */ 253 252 reader->nprov = 1; 254 253 memset(reader->prid, 0x00, sizeof(reader->prid)); 255 cs_ri_log(reader, 256 "[videoguard1-reader] type: VideoGuard, caid: %04X, serial: %02X%02X%02X%02X, BoxID: %02X%02X%02X%02X", 257 reader->caid[0], reader->hexserial[2], reader->hexserial[3], reader->hexserial[4], reader->hexserial[5], boxID[0], boxID[1], boxID[2], boxID[3]); 258 259 /* Force caid until can figure out how to get it */ 260 reader->caid[0] = 0x9 * 0x100 + 0x69; 254 261 255 cs_ri_log(reader, 262 256 "[videoguard1-reader] type: VideoGuard, caid: %04X, serial: %02X%02X%02X%02X, BoxID: %02X%02X%02X%02X", … … 288 282 if (!cw_is_valid(CW1)) //sky cards report 90 00 = ok but send cw = 00 when channel not subscribed 289 283 { 290 snprintf(er->msglog, MSGLOGSIZE, "9000 but cw=00 -> channel not subscribed ");284 cs_log("[videoguard1-reader] class48 ins54 status 90 00 but cw=00 -> channel not subscribed "); 291 285 return ERROR; 292 286 } … … 301 295 } 302 296 } 303 snprintf(er->msglog, MSGLOGSIZE, "(%d) status not ok %02x %02x", l, cta_res[0], cta_res[1]);297 cs_log("[videoguard1-reader] class48 ins54 (%d) status not ok %02x %02x", l, cta_res[0], cta_res[1]); 304 298 return ERROR; 305 299 } … … 547 541 /* info is displayed in init, or when processing info */ 548 542 cs_log("[videoguard1-reader] card detected"); 549 cs_log("[videoguard1-reader] type: VideoGuard");543 cs_log("[videoguard1-reader] type: %s", reader->card_desc); 550 544 read_tiers(reader); 551 545 return OK; -
branches/threaded/reader-videoguard12.c
r3099 r3100 26 26 if(cta_res[2]==0 && cta_res[3]==0) break; 27 27 int y,m,d,H,M,S; 28 rev_date_calc(&cta_res[4],&y,&m,&d,&H,&M,&S, VG_BASEYEAR);28 rev_date_calc(&cta_res[4],&y,&m,&d,&H,&M,&S,reader->card_baseyear); 29 29 unsigned short tier_id = (cta_res[2] << 8) | cta_res[3]; 30 30 char *tier_name = get_tiername(tier_id, reader->caid[0]); … … 44 44 def_resp; 45 45 46 / * get information on the card from reader-videoguard-common.c */47 NDS_ATR_ENTRY nds_atr_entry = {{0},0,0,0,0};48 memcpy( nds_atr_entry.atr,atr,atr_size);49 nds_atr_entry.atr_len = atr_size; 50 51 getNdsAtrEntry(&nds_atr_entry);52 53 if((reader->ndsversion != NDS12) && (( nds_atr_entry.nds_version != NDS12) || (reader->ndsversion != NDSAUTO))) {46 // Copy the atr info into the reader, can we not do this in reader-common.c? 47 reader->atrlen = atr_size; 48 memcpy(reader->atr,atr,atr_size); 49 50 /* set information on the card stored in reader-videoguard-common.c */ 51 set_known_card_info(reader); 52 53 if((reader->ndsversion != NDS12) && ((reader->card_system_version != NDS12) || (reader->ndsversion != NDSAUTO))) { 54 54 /* known ATR and not NDS1+ 55 55 or unknown ATR and not forced to NDS1+ … … 59 59 } 60 60 61 cs_ri_log(reader, "[videoguard12-reader] type: %s, baseyear: %i", reader->card_desc, reader->card_baseyear); 61 62 if(reader->ndsversion == NDS12){ 62 cs_ri_log(reader, "[videoguard12-reader] Forced to NDS1+"); 63 } 64 65 if (nds_atr_entry.desc){ 66 VG_BASEYEAR=nds_atr_entry.base_year; 67 cs_ri_log(reader, "[videoguard12-reader] type: %s", nds_atr_entry.desc); 63 cs_log("[videoguard12-reader] forced to NDS1+"); 68 64 } 69 65 … … 586 582 /* info is displayed in init, or when processing info */ 587 583 cs_log("[videoguard12-reader] card detected"); 588 cs_log("[videoguard12-reader] type: VideoGuard");584 cs_log("[videoguard12-reader] type: %s", reader->card_desc); 589 585 read_tiers (reader); 590 586 return OK; -
branches/threaded/reader-videoguard2.c
r3099 r3100 9 9 int l; 10 10 11 static unsigned char ins76[5] = { 0xd0,0x76,0x00,0x00,0x00 }; 12 13 /* test if ins2a needs to run 14 ins2a is not needed and causes an error on some cards eg Sky Italy 09CD 15 but when not run on others no tier information is returned eg 09AC 16 if we get tier info ins2a is not needed otherwise try running it 11 /* ins2a is not needed and causes an error on some cards eg Sky Italy 09CD 12 check if ins2a is in command table before running it 17 13 */ 18 l=do_cmd(reader, ins76,NULL,NULL,cta_res); 19 if(l<0 || !status_ok(cta_res+l)){ 20 cs_log ("[videoguard2-reader] cmd ins76 failed"); 21 return; 22 } 23 if(cta_res[2]==0 && cta_res[3]==0){ // no tier info try running ins2a 24 static const unsigned char ins2a[5] = { 0xd0,0x2a,0x00,0x00,0x00 }; 14 static const unsigned char ins2a[5] = { 0xD0,0x2a,0x00,0x00,0x00 }; 15 if(cmd_exists(ins2a)) { 25 16 l=do_cmd(reader, ins2a,NULL,NULL,cta_res); 26 17 if(l<0 || !status_ok(cta_res+l)){ 27 cs_log ("[videoguard2-reader] cmd ins2afailed");18 cs_log ("[videoguard2-reader] insD02a: failed"); 28 19 return; 29 20 } 30 21 } 31 22 32 static unsigned char ins76007f[5] = { 0x d0,0x76,0x00,0x7f,0x02 };23 static unsigned char ins76007f[5] = { 0xD0,0x76,0x00,0x7f,0x02 }; 33 24 if(!write_cmd_vg(ins76007f,NULL) || !status_ok(cta_res+2)){ 34 cs_log ("[videoguard2-reader] cmd ins76007ffailed");25 cs_log ("[videoguard2-reader] insDO76007f: failed"); 35 26 return; 36 27 } 37 28 int num=cta_res[1]; 29 38 30 int i; 31 static unsigned char ins76[5] = { 0xD0,0x76,0x00,0x00,0x00 }; 39 32 #ifdef CS_RDR_INIT_HIST 40 33 reader->init_history_pos = 0; //reset for re-read … … 47 40 if(cta_res[2]==0 && cta_res[3]==0) break; 48 41 int y,m,d,H,M,S; 49 rev_date_calc(&cta_res[4],&y,&m,&d,&H,&M,&S, VG_BASEYEAR);42 rev_date_calc(&cta_res[4],&y,&m,&d,&H,&M,&S,reader->card_baseyear); 50 43 unsigned short tier_id = (cta_res[2] << 8) | cta_res[3]; 51 44 char *tier_name = get_tiername(tier_id, reader->caid[0]); … … 64 57 def_resp; 65 58 66 / * get information on the card from reader-videoguard-common.c */67 NDS_ATR_ENTRY nds_atr_entry = {{0},0,0,0,0};68 memcpy( nds_atr_entry.atr,atr,atr_size);69 nds_atr_entry.atr_len = atr_size; 70 71 getNdsAtrEntry(&nds_atr_entry);59 // Copy the atr info into the reader, can we not do this in reader-common.c? 60 reader->atrlen = atr_size; 61 memcpy(reader->atr,atr,atr_size); 62 63 /* set information on the card stored in reader-videoguard-common.c */ 64 set_known_card_info(reader); 72 65 73 66 if((reader->ndsversion != NDS2) && 74 ((( nds_atr_entry.nds_version != NDS2) && (nds_atr_entry.nds_version != NDSUNKNOWN)) ||67 (((reader->card_system_version != NDS2) && (reader->card_system_version != NDSUNKNOWN)) || 75 68 (reader->ndsversion != NDSAUTO))) { 76 69 /* known ATR and not NDS2 … … 79 72 } 80 73 74 cs_ri_log(reader, "[videoguard2-reader] type: %s, baseyear: %i", reader->card_desc, reader->card_baseyear); 81 75 if(reader->ndsversion == NDS2){ 82 cs_ri_log(reader, "[videoguard2-reader] Forced to NDS2"); 83 } 84 85 if (nds_atr_entry.desc){ 86 VG_BASEYEAR=nds_atr_entry.base_year; 87 cs_ri_log(reader, "[videoguard2-reader] type: %s", nds_atr_entry.desc); 76 cs_log("[videoguard2-reader] forced to NDS2"); 88 77 } 89 78 … … 99 88 ins7401[4]=l; 100 89 if(!write_cmd_vg(ins7401,NULL) || !status_ok(cta_res+l)) { 101 cs_log ("[videoguard2-reader] failed to read cmd list");90 cs_log ("[videoguard2-reader] insD07401: failed - cmd list not read"); 102 91 return ERROR; 103 92 } … … 109 98 unsigned char ins7416[5] = { 0xD0,0x74,0x16,0x00,0x00 }; 110 99 if(do_cmd(reader, ins7416, NULL, NULL,cta_res)<0) { 111 cs_log ("[videoguard2-reader] cmd 7416failed");100 cs_log ("[videoguard2-reader] insD07416: failed"); 112 101 return ERROR; 113 102 } … … 127 116 l=do_cmd(reader, ins36, NULL, buff,cta_res); 128 117 if(l<13) 129 cs_log("[videoguard2-reader] ins 36: too short answer");130 else if (buff[7] > 0x0F) 131 cs_log("[videoguard2-reader] ins 36: encrypted - can't parse");118 cs_log("[videoguard2-reader] insD036: too short answer"); 119 else if (buff[7] > 0x0F) 120 cs_log("[videoguard2-reader] insD036: encrypted - can't parse"); 132 121 else { 133 122 /* skipping the initial fixed fields: cmdecho (4) + length (1) + encr/rev++ (4) */ … … 175 164 break; 176 165 default: /* default to assume a length byte */ 177 cs_log("[videoguard2-reader] ins 36returned unknown type=0x%02X - parsing may fail", buff[i]);166 cs_log("[videoguard2-reader] insD036: returned unknown type=0x%02X - parsing may fail", buff[i]); 178 167 i+=buff[i+1]+2; 179 168 } … … 191 180 memcpy(payload4C,boxID,4); 192 181 if(!write_cmd_vg(ins4C,payload4C) || !status_ok(cta_res+l)) { 193 cs_log("[videoguard2-reader] sending boxid failed");182 cs_log("[videoguard2-reader] insD04C: failed - sending boxid failed"); 194 183 return ERROR; 195 184 } … … 209 198 l=do_cmd(reader, ins58, NULL, buff,cta_res); 210 199 if(l<0) { 211 cs_log("[videoguard2-reader] cmd ins58failed");200 cs_log("[videoguard2-reader] insDO58: failed"); 212 201 return ERROR; 213 202 } … … 247 236 l=do_cmd(reader, insB4, tbuff, NULL,cta_res); 248 237 if(l<0 || !status_ok(cta_res)) { 249 cs_log ("[videoguard2-reader] cmd D0B4failed (%02X%02X)", cta_res[0], cta_res[1]);238 cs_log ("[videoguard2-reader] insD0B4: failed (%02X%02X)", cta_res[0], cta_res[1]); 250 239 return ERROR; 251 240 } … … 254 243 l=do_cmd(reader, insBC, NULL, NULL,cta_res); 255 244 if(l<0) { 256 cs_log("[videoguard2-reader] cmd D0BCfailed");245 cs_log("[videoguard2-reader] insD0BC: failed"); 257 246 return ERROR; 258 247 } … … 261 250 l=do_cmd(reader, insBE, NULL, NULL,cta_res); 262 251 if(l<0) { 263 cs_log("[videoguard2-reader] cmd D3BEfailed");252 cs_log("[videoguard2-reader] insD3BE: failed"); 264 253 return ERROR; 265 254 } … … 268 257 l=do_cmd(reader, ins58a, NULL, NULL,cta_res); 269 258 if(l<0) { 270 cs_log("[videoguard2-reader] cmd D158failed");259 cs_log("[videoguard2-reader] insD158: failed"); 271 260 return ERROR; 272 261 } … … 275 264 l=do_cmd(reader, ins4Ca,payload4C, NULL,cta_res); 276 265 if(l<0 || !status_ok(cta_res)) { 277 cs_log("[videoguard2-reader] cmd D14Ca failed"); 278 return ERROR; 279 } 280 281 cs_ri_log(reader, "[videoguard2-reader] type: VideoGuard, caid: %04X, serial: %02X%02X%02X%02X, BoxID: %02X%02X%02X%02X", 266 cs_log("[videoguard2-reader] insD14Ca: failed"); 267 return ERROR; 268 } 269 270 cs_ri_log(reader, "[videoguard2-reader] type: %s, caid: %04X, serial: %02X%02X%02X%02X, BoxID: %02X%02X%02X%02X", 271 reader->card_desc, 282 272 reader->caid[0], 283 273 reader->hexserial[2],reader->hexserial[3],reader->hexserial[4],reader->hexserial[5], … … 572 562 /* info is displayed in init, or when processing info */ 573 563 cs_log("[videoguard2-reader] card detected"); 574 cs_log("[videoguard2-reader] type: VideoGuard");564 cs_log("[videoguard2-reader] type: %s", reader->card_desc ); 575 565 vg2_read_tiers (reader); 576 566 return OK;
Note:
See TracChangeset
for help on using the changeset viewer.