400-1680-820

聊聊手机模拟门禁卡

2019-05-23

1. 手机门禁卡是什么?


       我们现在生活中的门禁卡绝大部分都属于IC卡,卡片可读可写,在卡片中储存相关信息。那么我们与之相对应的就是ID卡:ID卡可读不可写,仅可在卡片第一次初始化时,将数据写入。从某种意义上讲,这也就使得ID卡在系统的易用性和拓展性打了折扣。

       因此,在日常生活中,门禁卡、交通卡、校园卡一般都为IC卡。那么具体什么是IC卡呢?


2. IC卡又是啥?


       IC卡(Integrated Circuit Card),是集成电路卡的简称。IC卡与读写器之间的通讯方式可以是接触式,也可以是非接触式。根据通讯接口把IC卡分成接触式IC卡、非接触式IC和双界面卡(同时具备接触式与非接触式通讯接口)。而我们目前常使用的门禁卡、校园卡一般属于IC卡中的一种——MIFARE卡。MIFARE包括一系列依循ISO/IEC 14443-A规格,利用无线射频识别(频率为13.56MHz)的多种非接触式智能卡专有解决方案。这项技术是最早是1994年由米克朗集团(Mikron Group)开发,在1998年转售给飞利浦电子公司(2006年更名为恩智浦半导体公司)。我们的NFC工作频率也是在13.56MHz,这也就使得我们对于卡片的读写甚至模拟变为了可能。MIFARE卡芯片中常见的两款为S50和S70,他们主要的区别在于存储区的大小:

       > S50 1K字节的容量分为16个扇区

       > S70 4K字节的容量分为40个扇区

       在日常生活中,一般门禁卡等采用的都是16个扇区的芯片(S50),如下图所示(截图中显示的就是前7个扇区的内容)。

扇区截图扇区截图

       在每一个扇区中,都包含数据块×3和控制块×1。每个块的大小是16个字节,(每个字节8位,用两位16进制数表示,例如0xab)

       > 数据块:顾名思义,这个块是负责储存数据的。

       > 控制块:包括“密钥A”“访问控制”“密钥B”三个部分。一般的同学只是为了模拟一个门禁卡,也不必对这里了解的一清二楚,简单来说:“访问控制”就是设置你用密钥可不可以读写数据,只有你拥有一个扇区的密码时,才可以看到扇区内的全部内容(如上图,我输入密码是0x010203040506后才显示出各个扇区的内容)。简单来说,你必须拥有这个12位16进制数的密码(2的48次幂)才可以读写卡片中的内容。每个卡片的初始密码都是0xFFFFFFFFFF,所以我们认为没有改变初始密码的开篇为非加密卡片。

       其中,扇区0的数据块0(即图中紫色部分)为卡片的UID&厂家信息,为全球唯一数据,正常应该为不可更改的。但在国内有一些厂商做出了“魔术卡”也就是可以修改UID的卡片,一会会在下面提到。


3. 如何模拟


       以门禁卡为例,首先我们要了解门禁是怎么做的,一般为以下两种情况:

       1.记录UID。卡号是全球唯一的,记录卡号,等刷卡的时候,系统去数据库里面查卡号的相关信息。

       2.在某个扇区内储存一个数据,在读到卡之后,会查询指定扇区内有没有存储指定内容。

       那么现在的发展趋势是什么呢?对于消费系统,比如校园卡吃饭,越来越多的学校采用方法1,这样不需要在卡片内储存信息,每一次消费无非是联网访问数据库而已,既然卡片内不存在数据,那破解更是无稽之谈。对于门禁系统,我个人感觉可能方法2会越来越多,毕竟12位16进制数密码的破解难度还是很大的。

       那么我们该如何模拟呢?目前在市面上我见过这两种方式:

方式A:

读卡全部区->没有加密区->模拟成功

读卡全部区->有加密区->无法模拟

方式B:

读卡号->模拟成功


       简单来说,方式A是确保整个卡中没有加密的区域再进行模拟卡号,方式B是直接模拟卡号而不管其他区域的内容。对于他们能够应对的情况,我列了一张表格如下:

       上面表格中,√为可实现,×为不可实现,○为我想到了可以实现的方法,接下来介绍给大家。


方式A-利用卡号解锁,其他扇区内有内容

       这种情况是我们在日常生活中最容易遇到的,举一个简单的例子——校园卡,校园卡中常常有一些扇区是加密的,而校园卡的门禁一般是使用卡号识别的。那么针对这种情况我们应该如何办呢?

       首先,在淘宝上购买一个魔术卡(扇区0也就是卡号可修改的卡片)

       通过手机软件将你的校园卡卡号复制到这张白卡上,在这里推荐一个我在用的软件(MIFARE经典工具,可能需要翻墙,在这里给大家存了一个网盘:微云链接

       通过方式A进行模拟

这里面最难实现的就是第2步了,其实我最开始以为网上会教程满天飞,可能是因为这方面涉及的人太少了吧,对于不太了解M1卡的同学想在没有教程的情况下实现还是有一点难度的。

       1.首先我们下载并好这个软件,给予它必要的权限

       2.随后直接将我们想要复制的卡片贴在手机的NFC上,这时屏幕上会出现“Mifare经典工具:发现新标签(UID:XXXXXXXX)”(截图2)

       这时就需要你记下这串UID(4字节,8个数字/字母),当然如果你因为时间太短而没有记住的话也不用担心,单击“工具”,选择“显示标签信息”(截图3)就可以了,在这里面就可以看到UID的数据了(截图4)。

       3.选择“读标签”后将我们购买的魔术卡贴在手机NFC上,点击“启动映射并读取标签”(截图5),稍等一会,就可以读出这个空卡内的全部数据(截图6)

       4.接下来我们要做的,就是将UID写入这张魔术卡中。UID就是截图6中前4个字节(8个数字/字母),但这里我们不能简单的将前8个数字/字母删除替换为刚才我们记下的那串数字。因为在这8个数字/字母后还有一个字节(2个数字/字母)的BCC校验,简单来说就是保证这8个数字/字母不会出现错误的校验位(1字节,2个数字/字母)。在软件中是带有这样的计算器的,点击右上角选择“BCC计算器”(截图7)。输入我们刚才记住的4字节(8个数字/字母)的UID,计算得到1字节(2个字母/数字)BCC(截图8)。这样我们手里就得到了完整的5个字节(10个字母/数字)

       5.然后我们回到刚才的界面,将截图6中第一行(紫色)的前10个字母/数字修改成刚才我们得到的内容。接下来,选择“写转储”(截图9),修改相关选项如截图10所示

       6.点击“写转储”,选择“好的”(截图11),再将我们购买的魔术卡贴在手机NFC上,点击“启动映射并读取标签”(截图12)整个过程就完成了!


方式A-利用其他扇区内信息解锁

       这种情况的处理其实和上面的情况有些类似,我有一种思路,不过我也没有实测过效果。我们通过手机生成一个空白卡,然后通过这个软件将相应扇区的数据写入进去。这里要求我们要先知道指定扇区的数据和密钥,而后通过刚才上面情况中的方法将指定扇区的数据和密钥写入即可。

首页 联系 电话
在线咨询
服务热线

400-1680-820

微信公众号
微信二维码
返回顶部