Mifare 是最常用的射频卡,具体介绍网上太多,我就不说了.,很多城市的最早的地铁公交卡都是用这种卡,后来被破解后都换成智能卡了. 推荐软件 (mifare classic tool) 这个软件使用Android也可以破解, 使用的是穷举方式. 设计要求: 我们是一家连锁店,,使用mifare卡作为用户标识卡... 1, 防止更改卡内数据(如卡号,信息等) 2, 防止卡被复制. 3,防止第三方制作卡(我们的系统以后可能会有加盟商,不能让加盟商自己私自买新卡用我们的系统 网上大都是Mifare的介绍或者如何破解等...不知道别人是如何设计的... 所以在这里写一下自己的思路.. 卡内只保存卡号, 不保存任何金额等其他信息.要求与实体卡上印的卡号一致.
我们目前接触的多的就是无源、被动式产品,其中最为广泛常见的就是MIFARE Classic 1K卡,简称M1卡、S50卡。
据悉,受影响的是欧洲的某些Nespresso Pro机器,而攻击源于这些机器使用的 MIFARE Classic无线智能卡支付系统使用了不安全的技术。 早在2008年,就有研究人员逆向Mifare Classic智能卡的芯片,发现了Mifare Classic的安全风险。 芯片制造商NXP Semiconductor就建议客户采用其Mifare Plus卡,该卡依赖于更强大的加密技术(AES-128)。 然而,Nespresso的某些咖啡机仍基于不安全的Mifare Classic。 因此,研究人员Polle Vanhoof的实验开始了。 他使用的工具包括NFC读卡器、nfc-mfclassic(一种Mifare Classic命令行工具)、mfoc(一种Mifare Classic离线密钥破解工具),以及一个Python分析脚本。
配置针脚 #define SS_PIN 10 MFRC522 mfrc522(SS_PIN, RST_PIN); // 创建新的RFID实例 MFRC522::MIFARE_Key = MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType ! = MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("仅仅适合Mifare Classic卡的读写")); return; } // 我们只使用第二个扇区 块中写入数据...")); dump_byte_array(dataBlock, 16); Serial.println(); status = (MFRC522::StatusCode) mfrc522.MIFARE_Write )); Serial.print(blockAddr); Serial.println(F(" 块的数据 ...")); status = (MFRC522::StatusCode) mfrc522.MIFARE_Read
#L401-L489)中可以看到 mifare_desfire 的认证方法调用了 mifare_desfire_session_key_new 函数(https://github.com/nfc-tools ; //设置初始化向量 free(MIFARE_DESFIRE(tag)->session_key); //重置一些标签的属性,包括认证状态、会话密钥等 MIFARE_DESFIRE(tag )->session_key = NULL; MIFARE_DESFIRE(tag)->authentication_scheme = (AUTHENTICATE_LEGACY == cmd) (tag, key, MIFARE_DESFIRE(tag)->ivect, token, 2 * key_length, MCD_SEND, (AUTHENTICATE_LEGACY == cmd) (tag)->authenticated_key_no = key_no; MIFARE_DESFIRE(tag)->session_key = mifare_desfire_session_key_new
define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class MFRC522::MIFARE_Key for (byte i = 0; i < 6; i++) { key.keyByte[i] = 0xFF; } Serial.println(F("This code scan the MIFARE rfid.uid.sak); Serial.println(rfid.PICC_GetTypeName(piccType)); // Check is the PICC of Classic MIFARE = MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType ! = MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic."));
,一起来看看各个模块合集吧图片RFID模块:工作电流:13—20mA/直流3.3V空闲电流:10-13mA/直流3.3V休眠电流:<80UA峰值电流:<30mA工作频率:13.56MHz支持的卡类型:mifare1 S50.mifare1 S70.mifare UltraLight mifare Pro mifare Desfire产品物理特性:尺寸:40mm × 60mm图片OLED模块:高分辨率:128*64
此外,它还支持快速CRYPTO1 加密算法,用于验证MIFARE 系列产品。MFRC522 支持MIFARE?更高速的非接触式通信,双向数据传输速率高达424kbit/s。 = MFRC522::PICC_TYPE_MIFARE_MINI && piccType != MFRC522::PICC_TYPE_MIFARE_1K && piccType ! = MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("Your tag is not of type MIFARE Classic." = MFRC522::PICC_TYPE_MIFARE_1K && piccType ! = MFRC522::PICC_TYPE_MIFARE_4K) { Serial.println(F("仅仅适合Mifare Classic卡的读写")); return
; //设置初始化向量 free(MIFARE_DESFIRE(tag)->session_key); //重置一些标签的属性,包括认证状态、会话密钥等 MIFARE_DESFIRE(tag )->session_key = NULL; MIFARE_DESFIRE(tag)->authentication_scheme = (AUTHENTICATE_LEGACY == cmd) (tag, key, MIFARE_DESFIRE(tag)->ivect, token, 2 * key_length, MCD_SEND, (AUTHENTICATE_LEGACY == cmd) (tag, key, MIFARE_DESFIRE(tag)->ivect, PICC_RndA_s, key_length, MCD_RECEIVE, MCO_DECYPHER); uint8 (tag)->authenticated_key_no = key_no; MIFARE_DESFIRE(tag)->session_key = mifare_desfire_session_key_new
此外,它还支持快速CRYPTO1 加密算法,用于验证MIFARE 系列产品。MFRC522 支持MIFARE?更高速的非接触式通信,双向数据传输速率高达424kbit/s。 S50和Mifare S70又常被称为Mifare Standard、Mifare Classic、MF1,是遵守ISO14443A标准的卡片中应用最为广、影响力最大的的一员。 Mifare S50和Mifare S70的每张卡片都有一个4字节的全球唯一序列号,卡上数据保存期为10年,可改写10万次,读无限次。 Mifare S50和Mifare S70的区别主要有两个方面。一是读写器对卡片发出请求命令,二者应答返回的卡类型(ATQA)字节不同。 Mifare S50的卡类型(ATQA)是0004H,Mifare S70的卡类型(ATQA)是0002H。另一个区别就是二者的容量和内存结构不同。
(2)IC 卡的破解: a.复制卡 b.修改卡内数据 Mifare 是 NXP 公司生产的一系列遵守 ISO14443A 标准的射频卡,包括 Mifare S50、Mifare S70、Mifare UltraLight、Mifare Pro、Mifare Desfire 等。 Mifare S50 的容量为 1K 字节,常被称为 Mifare Standard,又被叫做 Mifare1,是遵守 ISO14443A 标准的卡片中应用最为广泛、影响力最大的的一员。 Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50) 即 M1K 卡,S50 的卡类型 (ATQA) 是 0004H.如图上去可以看到有 1.首先用手机 MIFARE 经典工具读取水卡 判断水卡类型 和 读取基本内容 发现是常见的 M1 卡有戏......
工具 一台具有NFC识别功能的手机 一张饭卡 MIFARE Classic Tool_v2.1.0.apk 安装软件 MIFARE Classic Tool_v2.1.0.apk是一款用来读取、写入、分析 Mifare Classic RFID卡片的Android NFC应用,将该软件安装到手机中,用于我们接下来识别和修改卡片信息。
背景 早在2007年,Mifare M1 RFID卡片就被研究人员破解了出来。NXP公司在M1卡上使用了未公开的加密算法,然而密码学史上的种种教训都表明了“不公开”与“安全的”并没有什么联系。 目前针对Mifare卡片的攻击主要有三种方法: Nested攻击 简单地说,就是默认密码攻击。 由于M1卡片有16个扇区,在绝大多数情况下16个扇区不一定会同时使用到。 写卡 直接使用nfc-mfclassic即可对Mifare classic系列卡片写入。主要有M1卡(S50)和4K卡(S70)。 A|B代表用密钥A或者B写入(均可),这里牵扯到Mifare协议的东西,读者可以自行查阅相关资料。 结语 本文所含内容具有一定攻击性,切勿用于非法用途!弄出什么新闻也别找我负责! 在手机上的奇技淫巧 在带有NFC功能的Android手机上有一款名为Mifare Classic Tools的软件,可以进行读写卡,dump的操作————但是必须用对密钥哦!
关于MIFARE Classic智能卡 这一漏洞的关键在于Nespresso用来与机器交互的智能卡的类型。 这项研究发布之后,Mifare Classic系列将不再是安全的了,而且也不应该再被用于安全敏感的工作之中。为此,Mifare提供了Classic系列的替代产品,即Mifare Plus。 Mifare Plus具备已认证的安全级别(基于AES-128),并且与Mifare Classic完全向后兼容。 MIFARE Classic命令行工具:nfc-mfclassic 这款工具可以在libnfc包中找到,并且可以用来读取或写入MIFARE Classic卡数据。 MIFARE Classic离线破解工具:mfoc mfoc是一个破解MIFARE Classic芯片加密的程序,它可以将芯片的密钥和解密的内存内容转储到一个文件中。
前情提要 Mifare Classic card 提供 1k-4k 的容量,我们经常见到的是 Mifare Classic 1k(S50),也就是所谓的 M1 卡。 软件:m1 卡程序,fixdump,sublime Text3,UID 写卡程序 以及安卓端:mifare classical tools, M Tools(神器) mifare classical tools 为了容易看出金额差别,用手机端 app:mifare 打开 m1 卡, ? 会发现没有 3 号 4 号扇区的 key, 用 sublime 打开 dumpfile1.dump ? 每个扇区的第 4 块区域,前半部为 keyA 后半为 keyB 直接导入 mifare 工具,手机端图形界面好观察一些。 ? 直接可以看到改扇区的信息了。
MFRC_RECEIVE 0x08 //激活接收器接收数据 #define MFRC_TRANSCEIVE 0x0C //发送并接收数据 #define MFRC_AUTHENT 0x0E //执行Mifare 0x0F //复位MFRC522 #define MFRC_CALCCRC 0x03 //激活CRC计算 #define MFRC_NOCMDCHANGE 0x07 //无命令改变 PICC命令 /*Mifare1 * 0x0400:Mifare_One(S50) * 0x0200:Mifare_One(S70) * 0x0800:Mifare_Pro(X) * 0x4403:Mifare_DESFire * 返 = 0x00; uint8_t waitFor = 0x00; /*根据命令设置标志位*/ switch(cmd) { case MFRC_AUTHENT: //Mifare MFRC_RECEIVE 0x08 //激活接收器接收数据 #define MFRC_TRANSCEIVE 0x0C //发送并接收数据 #define MFRC_AUTHENT 0x0E //执行Mifare
必须要吐槽一下 当然网上也有改它模拟的ID号方法,但那样可能会改变系统文件夹,会对以后带来风险 原料:安卓软件taginfo和mifare经典工具,网上很好下载的 如果检测到是无加密卡 2:接下来我们下载mifare经典工具,来读标签 3:接下来勾选如图,我们点击启动映射读标签 坑:如果发现报错不能读取,可以卸载重装,或换一个下载地方再试一试,卡不要离开手机 4:如图,我们可以看到扇区已经被读取出来了
; break; case 7: RevBuffer[0]=1; RevBuffer[1]=status; break; case 8: // Read the mifare // 0x0400 = Mifare_One(S50) // 0x0200 = Mifare_One(S70) // 0x0800 = Mifare_Pro(X) // 0x4403 = Mifare_DESFire //返 回: 成功返回MI_OK / char PcdRequest // 0x0400 = Mifare_One(S50) // 0x0200 = Mifare_One(S70) // 0x0800 = Mifare_Pro(X) // 0x4403 = Mifare_DESFire //返 回: 成功返回MI_OK 控制位为 0x02时寻卡 格式
(2)UID 卡是一种 IC 卡,UID 卡片完全兼容 mifare 1k 卡片。卡片的 block0,UID 所在的 block可以任意修改,重复修改。 block0 直接 用普通 mifare 读写器修改,不需要特殊设备。卡片的默认密码为FFFFFFFFFFFF。此卡可以修改任意扇区,主要应用在 IC 卡复制上。 看到 TYPE : NXP MIFARE CLASSIC 1k | Plus 2k SL1 的时候就代表这是M1 S50 卡。这种卡片就像个小容量 U 盘,天生强制加密。密码不可以取消。
Github 地址:https://github.com/zifeiniu/CPUCardLib 项目需求及简介: 公司要求将用户相关的信息储存到射频卡中,之前项目使用的Mifare类型卡,只储存了用户的卡 Mifare S70容量也不够,遂使用CPU卡,FM1280,可达80KB的EEROM存储。