Пример #1
0
bool cSmartCardVideoGuard2::Update(int pid, int caid, const unsigned char *data)
{
  static unsigned char ins42[5] = { 0xD1,0x42,0x00,0x00,0xFF }; 
  if(MatchEMM(data)) {
    const unsigned char *payloaddata=cParseNDS::PayloadStart(data,cardID); //points to 02 xx yy
    int lenEMM;
    switch(payloaddata[0]) {
      case 2:
        lenEMM=payloaddata[payloaddata[1]+2];
        payloaddata+=3+payloaddata[1]; // skip len specifier
        break;
      default:
//        di(printf("scvg2: ***ERROR***: EMM: bad payload type byte %02x\n",payloaddata[0]));
//        DUMP3("VG2EMM",data,32);
        return false;
      }
//    di(printf("scvg2: EMM: pid %d (%x) caid %d (%x) len %d (%x)\n",pid,pid,caid,caid,lenEMM,lenEMM));
//    DUMP3("VG2EMM",data,32);
    if(lenEMM<=8 || lenEMM>188) {
//      di(printf("scvg2: ***ERROR***: EMM: len %d bad\n",lenEMM));
      return false;
      }
    ins42[4]=lenEMM;
    if(DoCmd(ins42,payloaddata)>0 && Status())
      return true;
    }
  return false;
}
Пример #2
0
bool cSmartCardNagra::Update(int pid, int caid, const unsigned char *data)
{
  if(MatchEMM(data)) {
    if(DoBlkCmd(data[8],data[9]+2,0x84,0x02,data+8+2) && Status()) {
      cCondWait::SleepMs(300);
      PostProcess();
      }
    return true;
    }
  return false;
}
Пример #3
0
bool cProviderNDS::MatchID(const unsigned char *data)
{
  return MatchEMM(data);
}
Пример #4
0
bool cProviderCryptoworks::MatchID(const unsigned char *data)
{
  return MatchEMM(data);
}