RFID射频卡写入手机NFC心路小记

声明:

  • 本文仅是作者学习探索的心里路程日记,如果您看完以后,从中获得了一些经验,作者不胜荣幸。
  • 文章中的方法仍需要经济支出,借助他人工具完成,如读者想全凭个人之力从零制作自己的读卡解码设备,可至此结束。

1 作者大意丢门卡,一心便捷改出行

  目前,各个小区多使用射频卡管理门禁和电梯使用,只有拿到了小区物业发给业主的门禁卡后,业主才能通过刷卡的方式进入单元楼或使用电梯。
  作者所住宅的小区便广泛应用了射频卡这一管理方式。自从家中换上了指纹智能锁之后,越来越享受不带钥匙的便利,然为了能正常使用电梯,出门时仍需带着一张电梯卡,由于本人的马虎和电梯卡的小巧,在短短半个月内,竟因为掏兜时不注意丢失了两张门禁卡。补办一张卡拾元,虽不贵,但是仍然心疼和懊恼,于是,想把门禁卡写入自己带有NFC功能的手机中的想法便油然而生。
(虽然网上方法很多,甚至一些大神从网上找一些代码即可破解并且无限制制作各种卡,但是教程不详,作为一个这方面的小小白只能望而却步自行探索。)加粗样式

2 拾理论重制读写器,笨方法难读加密卡

  既然,想要破解门禁卡,那必然需要了解门禁卡。
  作者本科学的是电气专业,自然学习过单片机等知识,并且也是单片机的爱好者。玩单片机必不可少的是控制各种模块。以前就使用过射频卡读写模块,但当时了解不深,仅仅是使用例程读到了卡的UID号便不了了之了。再次遇到这种问题,便找出了当年用过的射频卡模块,重新学习阅读了使用手册和M1 IC射频卡的相关知识。为此,我还重新设计了一块单片机系统板,方便单片机和射频卡模块连接。

  既然想读卡,那就需要知道卡类型,卡的存储结构。射频卡根据通讯频率,存储数据方式也分好多种类,我使用的便是最常见的M1卡。该卡的存储空间分为16个扇区,每个扇区有四个块,每个块又有16个字节。除0扇区外,每个扇区前三个块便是数据区,第四个块存放的便是该扇区的控制方式和读写密码。此处不详细阐述讲解,可参考该模块的手册文档加以了解。
在这里插入图片描述
  通过自己制作好的单片机系统板和读写模块进行连接,重新修改例程,方便了自己通过串口控制读写。便开始读取门禁卡。前十个扇区读取都非常顺利,唯独到了第十一个扇区,串口便打印输出密码验证错误的提示。跳过该扇区继续读取,最终除十号扇区外,全部读取成功,但也都是空扇区。最终得出,只有十号扇区是加密扇区,里面写了门禁的各种数据。
  此时,我也曾想到了暴力破解的方式,但是我也清楚的算到密码的组合方式有二百万亿之多,以我这小单片机的算力,需要算上个把月都不一定跑的出正确密码。至此,该方式便以失败告终了。

3 陷密区锁匠巧解码,写手机再破便捷梦

  无意间,我得知家人从我一个配钥匙的长辈哪里给家里复制了好几张门禁卡,因此我想那个长辈手中肯定有网上买来的门禁卡复制器。既然能把卡内容复制出来,必然可以破解出来加密扇区的内容。
  为此,我找到了那个长辈的门店,见到了那个可以复制卡的设备(见下图),我把门禁卡贴到读卡器上,按下读取,很顺利的便读取完成,并提示读取成功。我赶紧拿出手机生成了一张空白卡,并利用读卡器的写入功能往手机里写如原卡数据,可是手机显示写入完成,但是读卡器显示写入失败。我重新尝试了几次,读卡器都显示写入失败。不甘心的我认为,既然手机都提示数据写入完成了,没准就成功了呢!
在这里插入图片描述
  拿着写好的手机,便急匆匆赶回去试验,把手机模拟的那张卡打开,贴近电梯读卡器,结果便是电梯根本没有反应。
  心想既然这个设备写不成,那我看到解密出来的密码,自己的读写模块没准可以写成。于是,我便再次返回到那个长辈那里,试图从按个读卡器的按键中按出扇区数据来可以查看扇区里面的内容。但是这个手持设备根本没有显示扇区数据这个功能。后来我才了解到,它需要连接电脑或者手机后才可以通过软件查看和导出数据。鉴于我不方便借走这个东西并且也无法直接和客服寻求软件使用方法,探索之路再一次告破。

小记:非常优秀的读卡器为什么写入手机会出错呢,后来的探索过程中才了解到,一般IC卡片的第一个扇区的第一个块只读,因为这个块写的是卡号和厂商代码,是固化的并不能修改。然而复制的新卡使用的是专门可复制的空白卡,卡里的每个扇区都可以读写。因此读卡器复制卡到新卡上写入就可以成功。但是,手机模拟生成的空白卡第一个扇区的第一个块也是固定的,不允许修改,因此读卡器再写这个块时便提示写入失败了。
那写入第一个块失败,只要加密扇区写入成功了不就不影响使用吗?其实不然,我所在的小区门禁读卡系统,并不每个卡的加密扇区都一样,密码是通过卡的UID号就算出来的,因此如果电梯的读卡系统通过卡号计算出来的加密密码,和加密扇区写的密码不一样,自然读不出来加密扇区的数据。

4 暴力破解再试水,万千秘钥仍落空

  既然说密码组合方式有二百万亿之多,为什么还要再次尝试破解呢,缘因看到了一篇博文,提供了一种手机APP可以专门通过手机端NFC读写功能对门禁卡进行各种密码的遍历探索,虽然手机的读取速度相比较单片机更快,然而遍历的密码如果还是这二百万亿多个也是不现实的,为此,网上提供了一种秘钥字典,里面包含了各种可能的密码和网友们分享出来的密码。大概有几万个之多,将这种秘钥字典导入手机APP,通过手机APP对这些秘钥字典进行遍历尝试,试图找到正确的秘钥。
  我从网上大概找了十万多个秘钥,为了防止手机长时间读取导致发热过烫,我还将秘钥每一万个一组分成多个文件,挨个尝试。每一万个秘钥文件大概需要二十分钟才可以遍历完,这还仅是探索秘钥A的时间,还要继续尝试秘钥B,因此每一万个秘钥大概一个小时才可以遍历完。这段时间还要手机紧贴门禁卡,时刻关注APP的探索信息,不能再用手机干别的事情。因此这也是一个枯燥的过程。
  我大概用来两天的时间才完成了这十多个秘钥的遍历,没一个对的。评论中到是有个别网友试验了五千左右就成功的,各位也不妨一试。
APP和秘钥文件地址在这个博主的博客中可以找到

5 购物网再显神通,读卡器终破密码

  之前一直希望可以通过零成本解决这个问题,也源于看到那个用过的读卡器价格竟然在几百元左右,实在不想花这个钱。
  无奈之下,既然网上找不到办法,那么万能的购物网站必然什么都可以买到,当然我买这个读卡器并不只考虑价格,因为我非常想知道秘钥到底是什么,因此我特意看中可不可以通过软件看到扇区数据,那些仅能读卡复制卡的手持终端必然是排除在外的。
  在选购的时候 ,由于我经常问客服可不可以看扇区数据, 可不可以修改扇区数据,以及他们的破解方式是暴力破解还是算法破解,导致客服都很抵触我,认为我是想修改什么储值卡。徒增了不少无效沟通。
  最后,我还通过一些测评视频,和评论区的买家分享的图片,选购了一款几十元的读卡器。它既能连接电脑又能连接手机,通过电脑客户端软件读写,也可以通过手机软件读写。
  收到读卡器后,我便安装了电脑客户端控制软件,开始破解我的门禁卡,破解了半个多小时依旧没有效果。为此我询问了技术客服,他建议我用手机端APP连接读卡器在破解,果然,仅用来十几秒,它的算法功能便读取了全部扇区的数据,我也如愿看到了加密扇区的内容和密码。
  因为我买的时候,这个产品表明是有写手机和手环功能,当我试图把数据写入手机时,还是发生了写IC卡失败。此时我还不知道原因是什么。我只能再次寻求技术指导。
  技术要走了我的门禁卡数据文件,又要走了我的手机模拟的空白卡数据文件。最后重新给我做了一个数据文件发给我,这个做的数据文件果真成功的写入了我的手机,在电梯里也成功使用。
  我尝试问技术这个文件数据是怎么做的,为什么要做数据,他仅告诉我做这个的软件需要花钱,其他一句也没有多说。

6 不求人循迹探索,要自主解析数据

  虽然技术客服应允只要买了他们的读卡器,写手机就可以免费做数据,但是为了以后自己可以随时把数据写到不同的手机里,也抱着不断探索刨根问底的精神,我还是决定搞清楚数据是怎么做出来的。
  我查看了技术发出回来的数据文件,虽然扇区数据可以看到修改了密码区的内容,但是看不出来为什么修改成这样。但是,我却从文件属性中发现了制作这个数据文件使用的软件名称——**C助手。
  我便从网上很容易的下载到了这个软件,但是关于数据解析的功能它却是要收费的功能。本着不再花钱的原则,我便从网上找了很久才找到一个破解版的软件。
  得到了破解软件,导入了破解出来的原卡数据,利用它的发卡功能,自动识别出来了门禁卡加密扇区的数据和对应的功能。
  这里以门禁卡为例,加密扇区的功能分为园区码、功能位、用户编号、房间号等内容,当然这些数据几乎是不需要修改的,对应自己的电梯和门禁就行。其次是发卡时间和到期时间,这个是可以根据需求修改的,如果设定的到期日期过期,那么自然也就不能用了,物业管理处也就是根据这个数据管控我们门禁卡在每次缴费后都会延期使用一年。
  最重要的就是密码块,这个块随着修改卡号会自动变动,所谓的做数据,其实就是根据手机生成的空白卡的卡号修改这里的加密秘钥。
  以上数据修改完成后,重新另存为新的dump文件,即可写入手机模拟的空白门禁卡中。

7 假软件时常崩溃,找规律自写程序

  虽然破解软件很好使,但是它有一个bug,每次开机后都只能用一次,如果关闭软件再次打开就会报错。解决办法就是重启电脑重新打开软件,但这个方法也不是百试百灵。
  通过上一章的数据解析,可以知道加密扇区的各个数据位的功能,也无需修改。但是没了软件便不能根据手机自动生成的UID号计算出最加密扇区秘钥。为此,我通过枚举法通过改变UID号的每一位查看秘钥的变动,最终找到了秘钥的生成方式。
  为此,根据秘钥的生成规律,我也写了一个小程序,可以通过UID号生成加密秘钥。这样,以后即使没有这个助手软件,也可以自己修改出要写入手机门禁卡的数据。

8 无卡自由终圆梦,遵守底线有始终

  自此,成功完成了写入手机门禁卡的探索过程,并达到目的。以后出门只带手机即可,再也不用带各种钥匙和门禁卡。其实,车库也本需要遥控器才可以开关门,我也改成了手机APP蓝牙遥控的方式。
  回头望去,其实实现方法很简单。数据之间的规律也没有那么复杂,可能也是小区门禁系统比较老的原因吧。
  虽然,通过数据分析,可以自行修改门禁卡使用期限,给自己发新卡,但是还要按期缴纳物业管理费,不可无休止滥用技能,这种刷卡方式也仅自家使用,不与外人道也,以免不必要的误会。

后记

  本想把过程都写的再详细点,但是根本没法过审,所以最后只形成了文字版的日志。如有关于本文的任何问题可私信博主。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
MSP430F5529是一个微控制器,而PN532是一个NFC RFID模块。要使用MSP430F5529与PN532进行通信,您需要使用MSP430F5529的GPIO和SPI接口。 以下是基本步骤: 1. 确保您已经连接好PN532模块到MSP430F5529的SPI接口,包括MISO,MOSI,SCK和SS线。 2. 确保您已经下载了PN532的驱动库,并且将其添加到您的MSP430F5529项目中。 3. 初始化SPI接口。您需要将MSP430F5529的SPI接口设置为主模式,并设置通信速率和数据位数。 4. 初始化PN532模块。您需要向PN532发送初始化命令,以确保它已经准备好与MSP430F5529进行通信。 5. 发送命令并接收响应。您可以使用PN532的命令集对标签执行操作,并通过SPI接口将命令发送到PN532。PN532将响应发送回MSP430F5529,您可以通过SPI接口接收响应。 6. 处理响应。一旦您收到响应,您需要解析它以获取所需的数据。 下面是一个简单的示例代码,展示了如何使用MSP430F5529与PN532进行通信: ```c #include "msp430.h" #include "pn532.h" void main(void) { // 初始化SPI接口 initSPI(); // 初始化PN532模块 initPN532(); // 发送命令并接收响应 uint8_t command[] = {0x55, 0x43, 0x02, 0x00, 0x01, 0xFE}; uint8_t response[32]; sendCommand(command, sizeof(command), response, sizeof(response)); // 处理响应 if (response[0] == 0x00 && response[1] == 0x00 && response[2] == 0xFF) { // 响应正确 uint8_t dataLength = response[3] - 2; uint8_t data[dataLength]; for (int i = 0; i < dataLength; i++) { data[i] = response[i + 5]; } // 处理数据 } else { // 响应错误 } // 循环执行 while (1) { // 这里可以执行其他操作 } } ``` 请注意,上述示例代码仅提供了一个基本框架,并且还需要进行适当的修改才能在您的应用程序中使用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驽马同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值