MIFARE系列8《D8M1.exe》
更新时间:2014.06.28
操作系统:windowAll
外部设备:D8读卡器
D8M1能够对MIFARE块读写操作。支持1K,4K。
检验KEY后返回SAK,QTAQ,UID。基于D8读卡器提供的dcrf32.dll开发。
D8型IC卡读写器是开发IC卡相关产品及系统集成必备的前端处理设备。可读写双界面射频智能卡或单独的非接触式射频卡,通过RS232串行接口或USB口实现同PC机及相关设备的连接,USB採用无驱技术。可方便用户的安装使用,它对多卡的支持可用于安全发卡及那些安全要求较高的领域须要。
核心代码例如以下:
void CD8M1Dlg::Show(CString str)
{time = CTime::GetCurrentTime();CString strTime = time.Format("%H:%M:%S");int len = editShow.GetWindowTextLength();editShow.SetSel(len, len);editShow.ReplaceSel(strTime + " ----> " + str + _T("\r\n"));
}void CD8M1Dlg::Beer()
{UCHAR SONG_TONE[] = { 212, 212, 190, 212, 159, 169, 212, 212, 190, 212, 142, 159, 212, 212, 106, 126, 159, 169, 190, 119, 119, 126, 159, 142, 159, 0 }; //生日快乐歌的音符频率表,不同频率由不同的延时来决定 UCHAR SONG_LONG[] = { 9, 3, 12, 12, 12, 24, 9, 3, 12, 12, 12, 24, 9, 3, 12, 12, 12, 12, 12, 9, 3, 12, 12, 12, 24, 0 }; //生日快乐歌节拍表。节拍决定每一个音符的演奏长短 int len = 6;for (int i = 0; i < len; i++){dc_beep(icdev, SONG_LONG[i]/3);Sleep(SONG_TONE[i]);}
}void CD8M1Dlg::OnBnClickedInitcom()
{//初始化串口1, icdev = dc_init(100, 9600);if ((int)icdev <= 0){Show("Init Com Error!");}else{Show("Init Com OK!");}dc_beep(icdev, 1);//蜂鸣时间,单位是10毫秒Sleep(30);dc_beep(icdev, 1);Sleep(60);dc_beep(icdev, 1);
// Beer();}void CD8M1Dlg::OnBnClickedLoadKey()
{//下载passwordCString keys;GetDlgItemText(IDC_EDIT_KEY, keys);int pos = keys.Find("\r\n");UCHAR uKey[6];while (pos != -1){CString key = keys.Left(pos).Trim();keys = keys.Mid(pos+2);unsigned char _SecNr = StrToIntA(key.Left(2));CString keyN = key.Mid(3);if (_SecNr > 40){Show("扇区号有误,大于40扇区...");}memset(uKey, 0, 6);Alg::HexToAsc(keyN, uKey);int st = dc_load_key(icdev, GetKeyMode(), _SecNr, uKey);if (st != 0){Show(IntToStr(_SecNr) + ": 扇区密钥写入失败...");return;}pos = keys.Find("\r\n");}Show("加载KEY成功...\r\n");
}void CD8M1Dlg::OnBnClickedVerifyCard()
{//寻卡函数,
// int st = dc_card(icdev, 0, &cardsnr);CString linstr;unsigned short tagType;int st = dc_request(icdev, 0, &tagType);if (st != 0){Show("Find Card Error!");return;}else{Show("Find Card Ok!");linstr.Format("%04d", tagType);Show("ATQA:" + linstr);}st = dc_anticoll(icdev, 0, &cardsnr);if (st != 0){Show("Find Card Error!");return;}else{linstr.Format("%X", cardsnr);Show("UID:" + linstr);}UCHAR size;st = dc_select(icdev, cardsnr, &size);if (st != 0){Show("select Card Error!");return;}else{linstr.Format("%X", size);Show("SAK:" + linstr);}//核对passwordint sec = GetSecNr();int keyMode = GetKeyMode();for (int i = 0; i < sec; i++){st = dc_authentication(icdev, keyMode, i);if (st != 0){Show(IntToStr(i) + ": Auth Card Error...");return;} }Show("核对password完毕...\r\n");
}void CD8M1Dlg::OnBnClickedRead()
{EditBlock.SetWindowTextA("");ClearShow();int adrs = GetBlockNr();CString sData;UCHAR pData[32];unsigned long _NSnr;for (int i = 0; i < adrs; i++){//int st = dc_read(icdev, i, data);if (IsCheckW()){//only read block 3if ((i < 128) && ((i+1) % 4 != 0)){continue;}if ((i > 128) && ((i+1) % 16 != 0)){continue;} }memset(pData, 0, 32);int st = dc_HL_read(icdev, 0, i, cardsnr, pData, &_NSnr);Alg::AscToHex(pData, 16, sData);if (st != 0){Show(IntToStr(i) + ": 读取失败...");continue;}else{Show(IntToStr(i) + ": 读取成功," + sData);}int len = EditBlock.GetWindowTextLength();EditBlock.SetSel(len, len);EditBlock.ReplaceSel(IntToStr(i) + ":" + sData + _T("\r\n"));}Show("读取块完毕...\r\n");
}void CD8M1Dlg::OnBnClickedWrite()
{ClearShow();CString blocks;int adrs = GetBlockNr();GetDlgItemText(IDC_EDIT_BLOCK, blocks);int pos = blocks.Find("\r\n");UCHAR uData[16];while (pos != -1){CString block = blocks.Left(pos).Trim();blocks = blocks.Mid(pos + 2);int posn = block.Find(':');if (posn == -1){Show("块地址值有误," + block);return;}unsigned char adr = StrToIntA(block.Left(posn));CString data = block.Mid(posn + 1);if (data.GetLength() != 32){Show("块值长度有误," + block);}if (adr > adrs){Show("块地址越界:" + IntToStr(adr));return;}Alg::HexToAsc(data, uData);int st = dc_HL_write(icdev, 0, adr, &cardsnr, uData);if (st != 0){Show(IntToStr(adr) + ": 写入失败...");}else{Show(IntToStr(adr) + ": 写入成功,写入值 " + data);}pos = blocks.Find("\r\n");}Show("写入块完毕...\r\n");
}void CD8M1Dlg::OnClose()
{dc_exit(icdev);CDialogEx::OnClose();
}
软件下载地址:http://download.csdn.net/detail/yxstars/7675429
文/闫鑫原创 转载请注明出处http://blog.csdn.net/yxstars/article/details/38108709
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5345106.html,如需转载请自行联系原作者
MIFARE系列8《D8M1.exe》相关推荐
- MIFARE系列6《射频卡与读写器的通讯》
1. 复位应答(Answer to request) 读写器呼叫磁场内的卡片,卡片对呼叫做出应答.对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26):对于已进行过读写操作并进入休眠 ...
- MIFARE系列逻辑加密卡的安全性分析
MIFARE系列逻辑加密卡的安全性分析 原文摘自:http://www.nb-card.com 近来广为讨论的话题,就是MIFARE系列的逻辑加密卡可以被破解和复制一事,因国内发行的这 ...
- 减小Delphi xe系列生成的exe文件大小
自xe系列以来.delphi生成的可执行文件都比较大.动辄10M以上.其中主要是包含了调试信息.发布后,即可删除.这样可大大减小可执行文件的大小.方法:Project->Options-> ...
- MIFARE系列5《存储结构》
Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15).每一个扇区包括4个数据块(Block0-Block3).我们也将16个扇区的64个块按绝对地址编号为0~63.每 ...
- Mifare系列7-安全性(转)
文/闫鑫原创 转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245 飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用 ...
- MIFARE系列7《安全》
飞利浦的MIFARE卡因为它的高安全性在市场上得到广泛应用,比方我们乘车用的公交卡,学校和企业食堂的饭卡等等.它每一个扇区有独立的密匙(6个字节的password),在通信过程中首先要验证密匙才干读写 ...
- C#语言实例源码系列-实现加密exe文件
专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册
- STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID
1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件准备 (1)MFRC-522模块 (2)F1的板子,本例使用经典F103C8T6 (3)ST-li ...
- Android MIFARE读写器详解2
Android MIFARE读写器详解2 Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mi ...
- zynq 黑金 linux 教程,【黑金ZYNQ7000系列原创视频教程】05.FPGA和ARM的初次结合——LED实验...
Go语言 获取get.post参数 在贴代码之前如果能先理解一下golang http.request的三个属性Form.PostForm.MultipartForm应该能较好的理解代码,下面摘录一下 ...
最新文章
- CDH 5 Maven Repository
- ping 攻击 Linux,Linux 环境实现ping攻击
- COGS 36. 求和问题
- Remoting and MSMQ 结合做的一个DEMO
- 智能机器人及其应用ppt课件_一文了解!伺服系统机理及其在工业机器人等领域的应用...
- Win7系统隐藏文件恢复的方法
- 在输入文本框中获取值
- 容器技术Docker K8s 2 云原生容器技术概述
- python什么字体好看_10 款最佳编程字体
- 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
- 关于概率论和模糊数学的区别
- 在虚拟机VirtualBox上安装苹果Mac OS X系统
- 工程伦理和学术道德(2021秋)
- IP地址 、域名、 URL、 端口
- Python Selenium3.141+Win7(64位)+IEDriverServer(32位版本)+调用IE11卡死的解决
- iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)
- 如何在C ++中解析文件
- 如何隐藏控制台程序的窗口
- APP和网站提示有敏感词怎么办?别慌,一看就会!
- python强化学习之Q-learning算法