软件名: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》相关推荐

  1. MIFARE系列6《射频卡与读写器的通讯》

    1. 复位应答(Answer to request) 读写器呼叫磁场内的卡片,卡片对呼叫做出应答.对刚进入磁场得到电复位处于休闲状态的卡片,卡请求(REQA,0x26):对于已进行过读写操作并进入休眠 ...

  2. MIFARE系列逻辑加密卡的安全性分析

    MIFARE系列逻辑加密卡的安全性分析 原文摘自:http://www.nb-card.com         近来广为讨论的话题,就是MIFARE系列的逻辑加密卡可以被破解和复制一事,因国内发行的这 ...

  3. 减小Delphi xe系列生成的exe文件大小

    自xe系列以来.delphi生成的可执行文件都比较大.动辄10M以上.其中主要是包含了调试信息.发布后,即可删除.这样可大大减小可执行文件的大小.方法:Project->Options-> ...

  4. MIFARE系列5《存储结构》

    Mifare S50把1K字节的容量分为16个扇区(Sector0-Sector15).每一个扇区包括4个数据块(Block0-Block3).我们也将16个扇区的64个块按绝对地址编号为0~63.每 ...

  5. Mifare系列7-安全性(转)

    文/闫鑫原创   转载请注明出处http://blog.csdn.net/yxstars/article/details/38087245 飞利浦的MIFARE卡 由于它的高安全性在市场上得到广泛应用 ...

  6. MIFARE系列7《安全》

    飞利浦的MIFARE卡因为它的高安全性在市场上得到广泛应用,比方我们乘车用的公交卡,学校和企业食堂的饭卡等等.它每一个扇区有独立的密匙(6个字节的password),在通信过程中首先要验证密匙才干读写 ...

  7. C#语言实例源码系列-实现加密exe文件

    专栏分享 点击跳转=>Unity3D特效百例 点击跳转=>案例项目实战源码 点击跳转=>游戏脚本-辅助自动化 点击跳转=>Android控件全解手册

  8. STM32系列(HAL库)——F103C8T6通过MFRC522、RFID射频卡、门禁卡模块读取卡片ID

    1.软件准备 (1)编程平台:Keil5 (2)CubeMX (3)XCOM(串口调试助手) 2.硬件准备 (1)MFRC-522模块 (2)F1的板子,本例使用经典F103C8T6 (3)ST-li ...

  9. Android MIFARE读写器详解2

    Android MIFARE读写器详解2 Mifare是NXP公司生产的一系列遵守ISO14443A标准的射频卡,包Mifare S50.Mifare S70.Mifare UltraLight.Mi ...

  10. zynq 黑金 linux 教程,【黑金ZYNQ7000系列原创视频教程】05.FPGA和ARM的初次结合——LED实验...

    Go语言 获取get.post参数 在贴代码之前如果能先理解一下golang http.request的三个属性Form.PostForm.MultipartForm应该能较好的理解代码,下面摘录一下 ...

最新文章

  1. CDH 5 Maven Repository
  2. ping 攻击 Linux,Linux 环境实现ping攻击
  3. COGS 36. 求和问题
  4. Remoting and MSMQ 结合做的一个DEMO
  5. 智能机器人及其应用ppt课件_一文了解!伺服系统机理及其在工业机器人等领域的应用...
  6. Win7系统隐藏文件恢复的方法
  7. 在输入文本框中获取值
  8. 容器技术Docker K8s 2 云原生容器技术概述
  9. python什么字体好看_10 款最佳编程字体
  10. 连续仨月霸占牛客榜首京东T8呕心巨作:700页JVM虚拟机实战手册
  11. 关于概率论和模糊数学的区别
  12. 在虚拟机VirtualBox上安装苹果Mac OS X系统
  13. 工程伦理和学术道德(2021秋)
  14. IP地址 、域名、 URL、 端口
  15. Python Selenium3.141+Win7(64位)+IEDriverServer(32位版本)+调用IE11卡死的解决
  16. iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏(教程含源码)
  17. 如何在C ++中解析文件
  18. 如何隐藏控制台程序的窗口
  19. APP和网站提示有敏感词怎么办?别慌,一看就会!
  20. python强化学习之Q-learning算法

热门文章

  1. 书籍-微服务架构与实践
  2. HTML和CSS面试题
  3. 重理工c语言实验指导书答案,C语言实验指导书自测练习参考答案
  4. 数据库操作语句类型(DQL、DML、DDL、DCL)简介
  5. 粮食增产的重要性顺序,土水肥种
  6. freeswitch:sofia.c:5180 Invalid ext-sip-ip
  7. github每次push时自动输入用户名密码
  8. LINUX doubango编译详细过程记录
  9. HTML的div标记为何设置背景色无效?
  10. 提供了一个UBUNTU安装NVIDIA驱动的脚本的下载