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", §or); 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", §or, &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 + -
显示快捷键?