htag.c

来自「另外一个RC531非接触式读卡器的全部源代码」· C语言 代码 · 共 86 行

C
86
字号
#include <stdio.h>#include <unistd.h>#include "rc531.h"int hh_auth(int sector, char *passwd);int main(void){ int retv, sector, data; char passwd[4] = {0xff, 0xff, 0xff, 0xff}; char cmdbuf[128]; char cbuf[128]; retv = pcd_reset(RESET_TYPEA); retv = pcd_open(); if(retv){     printf("Cannot open rc531!\n");     return retv; } while(1){     printf("-");     fgets(cmdbuf, 128, stdin);     if(cmdbuf[0]=='q')         break;     switch(cmdbuf[0]){     case 'r':         retv = reqa(REQA, &data);         mferror(retv);         if(retv){             printf("No card.\n");         }else{             printf("Card return ATQA: %04x\n", data);         }         break;     case 'l':         sscanf(cmdbuf+1, "%x", (int*)&passwd);         retv = hh_auth(8, passwd);         mferror(retv);         break;     case 'e':         sector = 0;         sscanf(cmdbuf+1, "%x", &sector);         retv = mfread(sector, cbuf);         mferror(retv);         if(retv){             printf("read error!\n");         }else{             int i;             printf("read OK!\n");             printf("return data: ");             for(i=0; i<4; i++){                 printf("%02x ", cbuf[i]);             }             printf("\n");         }         break;     case 'p':         sector = 0;         data = 0x11111111;         sscanf(cmdbuf+1, "%x %x", &sector, &data);         *(int*)&cbuf[0] = data;         retv = mfwrite(sector, cbuf);         mferror(retv);         break;     case 'h':         halta();         break;     case 'w':         retv = reqa(WAKEUPA, &data);         mferror(retv);         if(retv){             printf("No card.\n");         }else{             printf("Card return ATQA: %04x\n", data);         }         break;     default:     } }; pcd_close(); return 0;}

⌨️ 快捷键说明

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