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

📄 mifare1.lst

📁 mifarea卡程序mifarea卡程序mifarea卡程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 311   3              }
 312   2          }
 313   1          if(m1keyidx == 0xff)
 314   1          {
 315   2              cmd[0] = FAIL;
 316   2              cmd[1] = MI_NOTAUTHERR;
 317   2              return 2;
 318   2          }
 319   1          if((m1keystatus[m1keyidx] & 0x80) == 0x80)    // key b
 320   1          {
 321   2              if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
 322   2                  fkeypassed = 1;
 323   2              else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
 324   2                  fkeypassed = 1;
 325   2              else if(MI_OK == M500Auth(PICC_AUTHENT1B, snr, m1keys[m1keyidx], m1sector))
 326   2                  fkeypassed = 1;
 327   2          }
 328   1          else                                        // key a
 329   1          {
 330   2              if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
 331   2                  fkeypassed = 1;
 332   2              else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
 333   2                  fkeypassed = 1;
 334   2              else if(MI_OK == M500Auth(PICC_AUTHENT1A, snr, m1keys[m1keyidx], m1sector))
 335   2                  fkeypassed = 1;
 336   2          }
 337   1          if(!fkeypassed)
 338   1          {
 339   2              cmd[0] = FAIL;
 340   2              cmd[1] = MI_AUTHERR;
 341   2              return 2;
 342   2          }
 343   1          
 344   1          if(cmd[1] == CMD_READ)    // READ M1 CARD
 345   1          {
 346   2              if(len != 4)
 347   2              {
 348   3                  cmd[0] = ERRORCMDLEN;
 349   3                  return 1;
 350   3              }
 351   2              
 352   2              if(m1block == ALLBLOCK)
 353   2              {
 354   3                  if((i = M500Read((m1sector<<2), cmd+1)) != MI_OK)
 355   3                  {
 356   4                      // error
 357   4                      cmd[0] = FAIL;
 358   4                      cmd[1] = i;
 359   4                      return 2;
 360   4                  }
 361   3                  else if((i = M500Read((m1sector<<2) + 1, cmd+1+16)) != MI_OK)
 362   3                  {
 363   4                      // error
 364   4                      cmd[0] = FAIL;
C51 COMPILER V8.00   MIFARE1                                                               04/23/2009 15:56:16 PAGE 7   

 365   4                      cmd[1] = i;
 366   4                      return 2;
 367   4                  }
 368   3                  else if((i = M500Read((m1sector<<2) + 2, cmd+1+16+16)) != MI_OK)
 369   3                  {
 370   4                      // error
 371   4                      cmd[0] = FAIL;
 372   4                      cmd[1] = i;
 373   4                      return 2;
 374   4                  }
 375   3                  else
 376   3                  {
 377   4                      // success
 378   4                      cmd[0] = SUCCESS;
 379   4                      return 49;
 380   4                  }
 381   3              }
 382   2              else
 383   2              {
 384   3                  if((i = M500Read((m1sector<<2) + m1block, cmd+1)) != MI_OK)
 385   3                  {
 386   4                      // read error
 387   4                      cmd[0] = FAIL;
 388   4                      cmd[1] = i;
 389   4                      return 2;
 390   4                  }
 391   3                  else
 392   3                  {
 393   4                      cmd[0] = SUCCESS;
 394   4                      return 17;
 395   4                  }
 396   3              }
 397   2          }
 398   1          else if(cmd[1] == CMD_WRITE)
 399   1          {
 400   2              if(len != 20)
 401   2              {
 402   3                  cmd[0] = ERRORCMDLEN;
 403   3                  return 1;
 404   3              }
 405   2              
 406   2              if((i = M500Write((m1sector<<2) + m1block, m1data)) != MI_OK)
 407   2              {
 408   3                  cmd[0] = FAIL;
 409   3                  cmd[1] = i;
 410   3                  return 2;
 411   3              }
 412   2              else if((i = M500Read((m1sector<<2) + m1block, cmd+1)) != MI_OK) // read back
 413   2              {
 414   3                  cmd[0] = FAIL;
 415   3                  cmd[1] = i;
 416   3                  return 2;
 417   3              }
 418   2              else
 419   2              {
 420   3                  cmd[0] = SUCCESS;
 421   3                  return 17;
 422   3              }
 423   2          }
 424   1          
 425   1          // 钱包 ////////////////////////////////////////////
 426   1          else if(cmd[1] == CMD_INCEP)
C51 COMPILER V8.00   MIFARE1                                                               04/23/2009 15:56:16 PAGE 8   

 427   1          {
 428   2              uchar m1bakblock, m1eptype;
 429   2              
 430   2              m1bakblock = m1data[0];
 431   2              m1eptype = m1data[1];
 432   2              m1data += 2;
 433   2              m1block = (m1sector << 2) + m1block;
 434   2              m1bakblock = (m1sector << 2) + m1bakblock;
 435   2              
 436   2              if(len != 10)
 437   2              {
 438   3                  cmd[0] = ERRORCMDLEN;
 439   3                  return 1;
 440   3              }
 441   2          
 442   2              epvalue = buftolong86(m1data);
 443   2              
 444   2              i = M500ReadValue(m1block, cmd, m1bakblock);
 445   2              if(i != MI_OK)
 446   2              {
 447   3                  // error
 448   3                  cmd[0] = FAIL;
 449   3                  cmd[1] = i;
 450   3                  return 2;
 451   3              }
 452   2          
 453   2              if(!m1eptype)    // lsb first ep
 454   2                  oldepvalue = buftolong86(cmd);
 455   2              else            // msb first ep
 456   2                  oldepvalue = buftolong51(cmd);
 457   2              
 458   2              epvalue += oldepvalue;
 459   2              
 460   2              if(!m1eptype)    // lsb first ep
 461   2                  longtobuf86(epvalue, cmd);
 462   2              else            // msb first ep
 463   2                  longtobuf51(epvalue, cmd);
 464   2          
 465   2              if(MI_OK != (i = M500WriteValue(m1block, cmd, m1bakblock)))
 466   2              {
 467   3                  // error
 468   3                  cmd[0] = FAIL;
 469   3                  cmd[1] = i;
 470   3                  return 2;
 471   3              }
 472   2              
 473   2              i = M500ReadValue(m1block, cmd+1, m1bakblock);
 474   2              if(i != MI_OK)
 475   2              {
 476   3                  cmd[0] = FAIL;
 477   3                  cmd[1] = i;
 478   3                  return 2;
 479   3              }
 480   2              else
 481   2              {
 482   3                  if(m1eptype)        // msb first ep
 483   3                  {
 484   4                      epvalue = buftolong51(cmd+1);
 485   4                      longtobuf86(epvalue, cmd+1);
 486   4                  }
 487   3                  // success
 488   3                  cmd[0] = SUCCESS;
C51 COMPILER V8.00   MIFARE1                                                               04/23/2009 15:56:16 PAGE 9   

 489   3                  return 5;
 490   3              }
 491   2          }
 492   1          else if(cmd[1] == CMD_DECEP)
 493   1          {
 494   2              uchar m1bakblock, m1eptype;
 495   2              
 496   2              m1bakblock = m1data[0];
 497   2              m1eptype = m1data[1];
 498   2              m1data += 2;
 499   2              m1block = (m1sector << 2) + m1block;
 500   2              m1bakblock = (m1sector << 2) + m1bakblock;
 501   2              
 502   2              if(len != 10)
 503   2              {
 504   3                  cmd[0] = ERRORCMDLEN;
 505   3                  return 1;
 506   3              }
 507   2          
 508   2              epvalue = buftolong86(m1data);
 509   2              
 510   2              i = M500ReadValue(m1block, cmd, m1bakblock);
 511   2              if(i != MI_OK)
 512   2              {
 513   3                  cmd[0] = FAIL;
 514   3                  cmd[1] = i;
 515   3                  return 2;
 516   3              }
 517   2          
 518   2              if(!m1eptype)    // lsb first ep
 519   2                  oldepvalue = buftolong86(cmd);
 520   2              else            // msb first ep
 521   2                  oldepvalue = buftolong51(cmd);
 522   2              
 523   2              epvalue = oldepvalue - epvalue;
 524   2                  
 525   2              if(!m1eptype)    // lsb first ep
 526   2                  longtobuf86(epvalue, cmd);
 527   2              else            // msb first ep
 528   2                  longtobuf51(epvalue, cmd);
 529   2          
 530   2              if(MI_OK != (i = M500WriteValue(m1block, cmd, m1bakblock)))
 531   2              {
 532   3                  cmd[0] = FAIL;
 533   3                  cmd[1] = i;
 534   3                  return 2;
 535   3              }
 536   2              
 537   2              i = M500ReadValue(m1block, cmd+1, m1bakblock);
 538   2              if(i != MI_OK)
 539   2              {
 540   3                  cmd[0] = FAIL;
 541   3                  cmd[1] = i;
 542   3                  return 2;
 543   3              }
 544   2              else
 545   2              {
 546   3                  if(m1eptype)        // msb first ep
 547   3                  {
 548   4                      epvalue = buftolong51(cmd+1);
 549   4                      longtobuf86(epvalue, cmd+1);
 550   4                  }
C51 COMPILER V8.00   MIFARE1                                                               04/23/2009 15:56:16 PAGE 10  

 551   3                  // success
 552   3                  cmd[0] = SUCCESS;
 553   3                  return 5;
 554   3              }
 555   2          }
 556   1          else if(cmd[1] == CMD_RDEP)
 557   1          {
 558   2              uchar m1bakblock, m1eptype;
 559   2              
 560   2              m1bakblock = m1data[0];
 561   2              m1eptype = m1data[1];
 562   2              m1data += 2;
 563   2              m1block = (m1sector << 2) + m1block;
 564   2              m1bakblock = (m1sector << 2) + m1bakblock;
 565   2              
 566   2              if(len != 6)
 567   2              {
 568   3                  cmd[0] = ERRORCMDLEN;
 569   3                  return 1;
 570   3              }
 571   2          
 572   2              i = M500ReadValue(m1block, cmd+1, m1bakblock);
 573   2              if(i != MI_OK)
 574   2              {
 575   3                  cmd[0] = FAIL;
 576   3                  cmd[1] = i;
 577   3                  return 2;
 578   3              }
 579   2              else
 580   2              {
 581   3                  if(m1eptype)        // msb first ep
 582   3                  {
 583   4                      epvalue = buftolong51(cmd+1);
 584   4                      longtobuf86(epvalue, cmd+1);
 585   4                  }
 586   3                  // success
 587   3                  cmd[0] = SUCCESS;
 588   3                  return 5;
 589   3              }
 590   2          }
 591   1          else if(cmd[1] == CMD_WREP)
 592   1          {
 593   2              uchar m1bakblock, m1eptype;
 594   2              
 595   2              m1bakblock = m1data[0];
 596   2              m1eptype = m1data[1];
 597   2              m1data += 2;
 598   2              m1block = (m1sector << 2) + m1block;
 599   2              m1bakblock = (m1sector << 2) + m1bakblock;
 600   2              
 601   2              if(len != 10)
 602   2              {
 603   3                  cmd[0] = ERRORCMDLEN;
 604   3                  return 1;
 605   3              }
 606   2          
 607   2              if(m1eptype)        // msb first ep
 608   2              {
 609   3                  epvalue = buftolong86(m1data);
 610   3                  longtobuf51(epvalue, m1data);
 611   3              }
 612   2          
C51 COMPILER V8.00   MIFARE1                                                               04/23/2009 15:56:16 PAGE 11  

 613   2              if(MI_OK != (i = M500WriteValue(m1block, m1data, m1bakblock)))
 614   2              {
 615   3                  cmd[0] = FAIL;
 616   3                  cmd[1] = i;
 617   3                  return 2;
 618   3              }
 619   2              i = M500ReadValue(m1block, cmd+1, m1bakblock);
 620   2              if(i != MI_OK)
 621   2              {
 622   3                  cmd[0] = FAIL;
 623   3                  cmd[1] = i;
 624   3                  return 2;
 625   3              }
 626   2              else
 627   2              {
 628   3                  if(m1eptype)        // msb first ep
 629   3                  {
 630   4                      epvalue = buftolong51(cmd+1);

⌨️ 快捷键说明

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