📄 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 + -