⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nagra2-map57.c

📁 这是一个LINUX环境的 VDR 插件源代码,可支持Irdeto, Seca, Viaccess, Nagra, Conax & Cryptoworks等CA系统的读卡、共享等操作。
💻 C
📖 第 1 页 / 共 2 页
字号:
  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb7, bn_glb6, bn_glb3);  mod_sub();  BN_copy(bn_glb7, bn_glb_f);  mod_add(bn_glb1, bn_glb1, bn_glb7, bn_glb3);  BN_copy(bn_glb5, bn_glb_k);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  if(arg0 == 0) {    BN_copy(bn_glb_b, bn_glb1);  } else {    BN_copy(bn_glb_f, bn_glb1);  }}//uses c, d, e, m//sets 0, a, b, cvoid cN2Map57::bn_cmplx7(){  BIGNUM *var1;  var1 = BN_new();  BN_copy(bn_glb0, bn_glb_c);  if(BN_is_zero(bn_glb_c)) {    BN_copy(bn_glb_a, bn_glb_d);    BN_copy(bn_glb_b, bn_glb_e);    BN_copy(bn_glb_c, bn_glb_m);    bn_func3(1);  } else {    BN_clear(var1);    BN_set_word(var1, 0xFFFFFFFF);    BN_mask_bits(bn_glb_a, 32);    BN_lshift(var1, bn_glb_m, 0x20);    BN_add(bn_glb_a, bn_glb_a, var1);    BN_mask_bits(bn_glb_a, 128);    bn_func3(0);  }  BN_free(var1);}void cN2Map57::bn_cmplx2(BIGNUM *var1, BIGNUM *var2, BIGNUM *var3, BIGNUM *var4, BIGNUM *var5, BIGNUM *var6){  BIGNUM *var48;  int len = BN_num_bits(var6);  int i;  if(len < 2)    return;  if(BN_is_zero(var2) && BN_is_zero(var3) && BN_is_zero(var4))    return;  var48 = BN_new();  BN_copy(bn_glb3, var1);  BN_copy(bn_glb6, bn_glb3);  BN_set_bit(bn_glb6, 0);  BN_sub(bn_glb6, glb2pow128, bn_glb6);  BN_mod_inverse(bn_glb6, bn_glb6, glb2pow64, t1);  BN_clear(bn_glb0);  //  if(! BN_is_zero(bn_glb3)) {    BN_clear(bn_glb1);    BN_set_word(bn_glb1, 2);    BN_clear(bn_glb_k);    BN_set_word(bn_glb_k, 0x88);    BN_mod_exp(bn_glb1, bn_glb1, bn_glb_k, bn_glb3, t1);  }  //  for(i=0; i < 4; i++) {    bn_cmplx1(bn_glb1, bn_glb1, bn_glb1, bn_glb6, bn_glb3);  }  //  BN_clear(bn_glb7);  BN_set_word(bn_glb7, 1);  BN_add(bn_glb0, bn_glb3, bn_glb7);  BN_copy(bn_glb_k, bn_glb0);  BN_rshift(bn_glb_k, bn_glb_k, 1);  BN_copy(bn_glb7, bn_glb1);  BN_copy(bn_glb5, bn_glb_k);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_k, bn_glb1);  BN_copy(bn_glb1, var5);  BN_mask_bits(bn_glb1, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb7, bn_glb6, bn_glb3);  BN_copy(bn_glb_l, bn_glb1);  BN_copy(bn_glb1, bn_glb7);  BN_clear(bn_glb5);  BN_set_word(bn_glb5, 1);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_c, bn_glb1);  BN_copy(bn_glb_m, bn_glb1);  BN_copy(bn_glb1, bn_glb7);  BN_copy(bn_glb5, var2);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_a, bn_glb1);  BN_copy(bn_glb1, bn_glb7);  BN_copy(bn_glb5, var3);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_b, bn_glb1);  BN_copy(bn_glb_d, bn_glb_a);  BN_copy(bn_glb_e, bn_glb_b);  int x = len -1;  while(x > 0) {    x--;    bn_func2(0);    if(BN_is_bit_set(var6, x)) {      bn_cmplx7();    }  }  BN_copy(bn_glb1, bn_glb_c);  BN_mask_bits(bn_glb1, 128);  BN_copy(bn_glb7, bn_glb1);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb1, bn_glb6, bn_glb3);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb7, bn_glb6, bn_glb3);  BN_clear(bn_glb7);  BN_set_word(bn_glb7, 1);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb7, bn_glb6, bn_glb3);  BN_copy(bn_glb0, bn_glb1);  BN_clear(bn_glb7);  BN_set_word(bn_glb7, 1);  BN_copy(bn_glb1, bn_glb0);  BN_clear(bn_glb0);  bn_func1(var1);  BN_copy(bn_glb5, bn_glb_b);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb0, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb7, bn_glb0);  BN_copy(bn_glb5, bn_glb_c);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb5, bn_glb_a);  BN_mask_bits(bn_glb5, 128);  bn_cmplx1(bn_glb1, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_clear(bn_glb5);  BN_set_word(bn_glb5, 1);  bn_cmplx1(bn_glb0, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_a, bn_glb0);  BN_copy(bn_glb1, bn_glb7);  BN_clear(bn_glb5);  BN_set_word(bn_glb5, 1);  bn_cmplx1(bn_glb0, bn_glb1, bn_glb5, bn_glb6, bn_glb3);  BN_copy(bn_glb_b, bn_glb0);  BN_free(var48);} void cN2Map57::Map57(unsigned char *data){  BIGNUM *var38, *var58, *var78, *var98, *varb8, *vard8;  BN_CTX *t;  unsigned char tmpdata[256];  unsigned char res[256];  t = BN_CTX_new();  t1 = BN_CTX_new();  BN_CTX_init(t);  glb2pow128 = BN_new();  BN_clear(glb2pow128);  BN_set_bit(glb2pow128, 128);  mask128 = BN_new();  BN_hex2bn(&mask128, "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");  glb2pow64 = BN_new();  BN_clear(glb2pow64);  BN_set_bit(glb2pow64, 64);  mask64 = BN_new();  BN_hex2bn(&mask64, "FFFFFFFFFFFFFFFF");    bn_glb0=BN_new(); BN_clear(bn_glb0);  bn_glb1=BN_new(); BN_clear(bn_glb1);  bn_glb3=BN_new(); BN_clear(bn_glb3);  bn_glb5=BN_new(); BN_clear(bn_glb5);  bn_glb6=BN_new(); BN_clear(bn_glb6);  bn_glb7=BN_new(); BN_clear(bn_glb7);  bn_glb_a=BN_new(); BN_clear(bn_glb_a);  bn_glb_b=BN_new(); BN_clear(bn_glb_b);  bn_glb_c=BN_new(); BN_clear(bn_glb_c);  bn_glb_d=BN_new(); BN_clear(bn_glb_d);  bn_glb_e=BN_new(); BN_clear(bn_glb_e);  bn_glb_f=BN_new(); BN_clear(bn_glb_f);  bn_glb_g=BN_new(); BN_clear(bn_glb_g);  bn_glb_h=BN_new(); BN_clear(bn_glb_h);  bn_glb_i=BN_new(); BN_clear(bn_glb_i);  bn_glb_j=BN_new(); BN_clear(bn_glb_j);  bn_glb_k=BN_new(); BN_clear(bn_glb_k);  bn_glb_l=BN_new(); BN_clear(bn_glb_l);  bn_glb_m=BN_new(); BN_clear(bn_glb_m);  var38=BN_new(); BN_clear(var38);  var58=BN_new(); BN_clear(var58);  var78=BN_new(); BN_clear(var78);  var98=BN_new(); BN_clear(var98);  varb8=BN_new(); BN_clear(varb8);  vard8=BN_new(); BN_clear(vard8);  memcpy(tmpdata, data, 0x80);  RotateBytes(tmpdata, 0x80);  BN_bin2bn(tmpdata, 16, var78);  BN_bin2bn(tmpdata+0x10, 16, varb8);  BN_bin2bn(tmpdata+0x20, 16, var98);  BN_bin2bn(tmpdata+0x40, 16, vard8);  BN_bin2bn(tmpdata+0x60, 16, var38);  BN_bin2bn(tmpdata+0x70, 16, var58);  bn_cmplx2(varb8, var58, vard8, var38, var78, var98);  memset(res, 0, 0x80);  unsigned int *dest = (unsigned int *)res, *src = (unsigned int *)data;  *dest++ = src[0x03];  *dest++ = src[0x02];  *dest++ = src[0x01];  *dest++ = src[0x00];  *dest++ = src[0x07];  *dest++ = src[0x06];  *dest++ = src[0x05];  *dest++ = src[0x04];  memset(tmpdata, 0, 0x20);  int len = BN_bn2bin(bn_glb_a, tmpdata);  if(len) {    RotateBytes(tmpdata, len);  }  src = (unsigned int *)tmpdata;  *dest++ = src[0x03];  *dest++ = src[0x02];  *dest++ = src[0x01];  *dest++ = src[0x00];  memset(tmpdata, 0, 0x20);  len = BN_bn2bin(bn_glb_m, tmpdata);  if(len) {    RotateBytes(tmpdata, len);  }  *dest = src[0x03];  dest+=4;  memset(tmpdata, 0, 0x20);  len = BN_bn2bin(bn_glb_b, tmpdata);  if(len) {    RotateBytes(tmpdata, len);  }  *dest++ = src[0x03];  *dest++ = src[0x02];  *dest++ = src[0x01];  *dest++ = src[0x00];  dest+=4;  src = (unsigned int *)(data+0x60);  *dest++ = src[0x03];  *dest++ = src[0x02];  *dest++ = src[0x01];  *dest++ = src[0x00];  *dest++ = src[0x07];  *dest++ = src[0x06];  *dest++ = src[0x05];  *dest++ = src[0x04];  *(unsigned int *)(data + (8<<2))= *(unsigned int *)(res + (11<<2));  *(unsigned int *)(data + (9<<2))= *(unsigned int *)(res + (10<<2));  *(unsigned int *)(data + (10<<2))= *(unsigned int *)(res + (9<<2));  *(unsigned int *)(data + (11<<2))= *(unsigned int *)(res + (8<<2));  *(unsigned int *)(data + (12<<2))= *(unsigned int *)(res + (12<<2));  *(unsigned int *)(data + (13<<2))= *(unsigned int *)(res + (13<<2));  *(unsigned int *)(data + (14<<2))= *(unsigned int *)(res + (14<<2));  *(unsigned int *)(data + (15<<2))= *(unsigned int *)(res + (15<<2));  *(unsigned int *)(data + (16<<2))= *(unsigned int *)(res + (19<<2));  *(unsigned int *)(data + (17<<2))= *(unsigned int *)(res + (18<<2));  *(unsigned int *)(data + (18<<2))= *(unsigned int *)(res + (17<<2));  *(unsigned int *)(data + (19<<2))= *(unsigned int *)(res + (16<<2));  *(unsigned int *)(data + (20<<2))= *(unsigned int *)(res + (20<<2));  *(unsigned int *)(data + (21<<2))= *(unsigned int *)(res + (21<<2));  *(unsigned int *)(data + (22<<2))= *(unsigned int *)(res + (22<<2));  *(unsigned int *)(data + (23<<2))= *(unsigned int *)(res + (23<<2));  BN_free(glb2pow128);  BN_free(mask128);  BN_free(glb2pow64);  BN_free(mask64);    BN_free(bn_glb0);  BN_free(bn_glb1);  BN_free(bn_glb3);  BN_free(bn_glb5);  BN_free(bn_glb6);  BN_free(bn_glb7);  BN_free(bn_glb_a);  BN_free(bn_glb_b);  BN_free(bn_glb_c);  BN_free(bn_glb_d);  BN_free(bn_glb_e);  BN_free(bn_glb_f);  BN_free(bn_glb_g);  BN_free(bn_glb_h);  BN_free(bn_glb_i);  BN_free(bn_glb_j);  BN_free(bn_glb_k);  BN_free(bn_glb_l);  BN_free(bn_glb_m);  BN_free(var38);  BN_free(var58);  BN_free(var78);  BN_free(var98);  BN_free(varb8);  BN_free(vard8);  BN_CTX_free(t);  BN_CTX_free(t1);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -