?? htag.c
字號:
#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 + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -