我最近从中国购买了一台磁性读写器(YL160 4 合 1 读写器),它带有演示应用程序和 API。我主要从这个设备需要的是磁条写入,我需要将数据写入空白的 HiCo 磁卡。
当我在磁条选项卡下打开演示应用程序时,它们是两列
- 只读
- 读写
Read-Only 有效,但 Read/Write 无效,它指的是 Read-only,这表明设备没有写入功能,所以我进入 API 检查演示应用程序是否有问题,这就是我在160.h头文件中找到
extern int _stdcall MSR_Init(void);
extern void _stdcall MSR_Exit(void);
extern int _stdcall MSR_DoCancel(void);
extern int _stdcall MSR_Read(void);
extern int _stdcall MSR_Write(unsigned char *TK1Dat, unsigned char *TK2Dat, unsigned char *TK3Dat);
extern int _stdcall MSR_Read_ASCII(void);
extern int _stdcall MSR_Write_ASCII(char *trace1, char *trace2, char *trace3);
extern int _stdcall MSR_Erase(unsigned char mode);
extern int _stdcall MSR_GetTrackData(unsigned char *TK1Dat, unsigned char *TK2Dat, unsigned char *TK3Dat);
extern int _stdcall MSR_Set_HiCo ();
extern int _stdcall MSR_Set_LoCo ();
extern int _stdcall MSR_Get_CoStatus(unsigned char *status);
extern int _stdcall Msr_ChangeAscii(unsigned char *TK1Dat, unsigned char *TK2Dat, unsigned char *TK3Dat);
extern int _stdcall MSR_Write_status(void);
extern int _stdcall MSR_Fast_Init(int portnum);
extern int _stdcall MSR_Get_HwInfo (char *info);
extern void _stdcall MSR_BeepOff (void);
extern void _stdcall MSR_BeepOn (void);
extern int _stdcall MSR_Erase_status(void);
extern int _stdcall MSR_ASC_Read(void);
extern int __stdcall auto_init(void)
然后这个
extern void __stdcall MagOpen(void);
extern void __stdcall MagClose(void);
extern void __stdcall MagReset(void);
extern unsigned char __stdcall MagSwiped(void);
extern unsigned char __stdcall MagRead(unsigned char *Track1, unsigned char *Track2,unsigned char *Track3);
然后我想也许演示应用程序正在使用MagOpen()将设备切换到读取模式,但没有将设备切换到写入模式的功能。我没有用MSR_Write() 测试MagOpen ()。API 文件夹内有 Lib160.dll 和 Lib160.lib
我试图用IDA Pro反汇编Lib160.dll以查看MagOpen中发生了什么,因此我可以实现写入模式切换,但 IDA Pro 显示有关输入的错误。此外,此设备在设备管理器中显示为Microsoft Usbccid 智能卡读卡器 (WUDF),位于智能卡读卡器下,不在 COM 端口或 HID 上。
现在这是我的问题
是否可以检查磁头是否能够写入?如果是怎么办?
我可以用具有写入功能的磁头替换磁头吗?
请帮助我需要帮助,编码不是问题,但问题是从哪里开始
谢谢