Changeset 11577
- Timestamp:
- 03/13/20 20:05:41 (4 years ago)
- Location:
- trunk
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/globals.h
r11575 r11577 1537 1537 uint8_t stillencrypted[0x50]; 1538 1538 uint8_t resultrsa[0x50]; 1539 uint32_t cak7_restart; 1539 1540 uint32_t cak7_seq; 1540 1541 uint8_t cak7_camstate; -
trunk/oscam-work.c
r11575 r11577 424 424 { module->s_peer_idle(cl); } 425 425 break; 426 426 427 case ACTION_CLIENT_HIDECARDS: 427 428 { -
trunk/reader-nagracak7.c
r11575 r11577 1 1 #include "globals.h" 2 2 #ifdef READER_NAGRA_MERLIN 3 #include "math.h"4 3 #include "cscrypt/bn.h" 5 4 #include "cscrypt/idea.h" … … 278 277 { 279 278 data1[3]--; 280 } 279 } 281 280 memcpy(cmd0e + 9, data1, 0x04); 282 281 data1[3]++; 283 282 284 283 if (reader->irdid_length == 4) 285 284 { 286 285 memcpy(&cmd0e[14], reader->irdid, reader->irdid_length); // inject irdid 287 286 } 288 289 // inject provid 287 288 // inject provid 290 289 cmd0e[18] = reader->prid[0][2]; 291 290 cmd0e[19] = reader->prid[0][3]; … … 297 296 298 297 do_cak7_cmd(reader,cta_res, &cta_lr, cmd0e, sizeof(cmd0e), 0x20); 298 299 reader->cak7_restart = (cta_res[22] << 16); 300 reader->cak7_restart += (cta_res[23] << 8); 301 reader->cak7_restart += (cta_res[24] ); 302 reader->cak7_restart--; 299 303 300 304 memcpy(reader->cardid,cta_res + 14, 4); … … 329 333 memcpy(&reader->step3[4], reader->data, 0x68); 330 334 rsa_decrypt(reader->step3, 0x6c, reader->data, reader->kdt05_00, 0x6c, reader->public_exponent, reader->public_exponent_length); 331 335 332 336 uint8_t cmd03[] = {0xCC,0xCC,0xCC,0xCC,0x00,0x00,0x0A,0x03,0x6C, 333 337 0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC, … … 360 364 } 361 365 366 void CAK7_reinit(struct s_reader *reader) 367 { 368 ATR newatr[ATR_MAX_SIZE]; 369 memset(newatr, 0, 1); 370 if(ICC_Async_Activate(reader, newatr, 0)) 371 { 372 reader->card_status = CARD_NEED_INIT; 373 add_job(reader->client, ACTION_READER_RESTART, NULL, 0); 374 } 375 else 376 { 377 reader->cak7_seq = 0; 378 CAK7_getCamKey(reader); 379 } 380 } 381 362 382 static int32_t nagra3_card_init(struct s_reader *reader, ATR *newatr) 363 383 { … … 407 427 CAK7GetDataType(reader, SYSID_CAID); // sysid+caid 408 428 CAK7_getCamKey(reader); 409 410 429 411 430 rdr_log(reader, "ready for requests"); … … 439 458 static void nagra3_post_process(struct s_reader *reader) 440 459 { 441 if((reader->cak7_camstate & 64) == 64) 460 if(reader->cak7_seq >= reader->cak7_restart) 461 { 462 rdr_log(reader, "reinit necessary to reset command counter"); 463 CAK7_reinit(reader); 464 } 465 else if((reader->cak7_camstate & 64) == 64) 442 466 { 443 467 rdr_log_dbg(reader, D_READER, "renew Session Key: CAK7");
Note:
See TracChangeset
for help on using the changeset viewer.