Proxmark3 Easy 复制4100卡到T5577卡
前言:
最近搬新住处,小区的门禁是用的ID卡,配一张卡30元。可以理解,但还是感觉很贵。想来手里有PM3 Easy,另外还有几张HACKNOWN的双频混合卡,记得它的低频是使用的T5577方案。把吃灰的东西用起来,也复习一下PM3的使用。
实践本文,您可能需要:
- Proxmark3 Easy
- 待复制的EM4100卡
- 空白的T5577卡
- 门禁刷卡机,用于验证复制的卡能否正常使用
EM4100卡简介:
EM4100卡工作频率为125KHz,是低频卡。发送数据时采用曼彻斯特编码,比特率为RF/64 。该卡存储64个只读数据位(bit),每个二进制位存储的不是0就是1。起始9个位为9个1,用作表示一次传输的开始。接下来传输10组数据,每组有4位数据+1位偶校验(每组5位中1的个数为偶数个),这个巧妙的设计在进行数据校验的同时确保了发送数据时不会出现连发9个1的情况,从而避免数据发送过程与起始信号冲突。这10组数据中前2组是用于标记版本或厂商,后8组是编号数据。10组数据位的后面跟随的是4位列校验位,最后以0为结束位。如下图所示:
什么是偶校验?所谓的偶校验即指定的一组二进制数据中限定1的个数为偶数,本例中,假如一组数据的数据位为0100(0x4),则目前1的个数为奇数,为了满足偶校验,会在校验位上写1以将1的个数补充到偶数个,这组数据最终就是01001。反之,如果数据位为0101,1的个数已经是偶数,为了满足偶校验,校验位上就写0。
EM4100卡片卡号:
上文中提到的10组数据,每组都编码了一个16进制值。这10个16进制值所构成的就是EM TAG ID。这个ID是这张卡存储的所有信息。这也是卡片在读卡过程中发出的实际数据(当热,数据发送时还有发送校验位),因其发射数据时采用的时曼彻斯特编码调制方式,又称其为曼彻斯特内码(Manchester)。
需要注意,曼彻斯特内码不在卡面标注。ID卡表面通常会印有一串10位10进制数字,该数字为ABA码,它是由EM TAG ID去掉前2位后剩余的用户ID部分转换成10进制后得到的。较大的ID卡表面可能还会印有一个中间由 ,
分隔的值,这个是韦根码(wiegand),它是使用ID代码倒数5、6位和后4位分别换算成10进制组成。
假设有一张EM4100卡片的EM TAG ID是:06008148DD 。那么它的ABA码就是:0008472797 [(HEX:008148DD)==>(DEC:0008472797) ];其韦根码为:129,18653 [ (HEX: 81 , HEX:48DD) ==> ( 129 ,18653) ] .
综上,EM TAG ID包含了卡片所有数据,且刷卡时发射的数据也是它,我们复制的新卡自然也应该是发送这些数据。
T5577空白卡简介:
T5577的Page0有8个区块,区块0存储的配置信息,用于配置卡片的工作模式。区块1~7可以存储用户数据,区块7也可以用于存储访问密码。每个区块有33个二进制位。通过把需要发送的数据存储在用户数据区,再通过修改区块0的数据,配置卡片工作方式,以此模拟EM4100卡片。
思路:
为实现目标,首先需要将T5577卡片配置在合适的模式下。曼彻斯特编码、RF/64、ST=0等。经过计算,T5577的Page0:Block0应该配置为:0X00148040。
接下来将EM TAG ID填入上文EM4100卡片简介的图中,计算行列校验位的数值并补齐,以此获得64bit的实际发送数据,将数据转换为16位16进制值,并将其依次写入Block1和Block2。
这样T5577卡片应该就会按照EM4100的方式工作了,在刷卡器上应该会被正常识别。
操作步骤:
实际PM3的命令中提供了更简单的操作方式,有一个命令可以将T5577写成EM4100的工作模式。
在开始之前,我们需要使用hw tune
命令来测试天线是否正常。正常情况据说低频天线应该能测到10V以上的电压。但是我的不知是坏了还是怎么,表现如下,但是实际可以正常读写低频卡。
proxmark3> hw tune
Measuring antenna characteristics, please wait.........
# LF antenna: 0.55 V @ 125.00 kHz
# LF antenna: 0.55 V @ 134.00 kHz
# LF optimal: 1.10 V @ 46.88 kHz
# HF antenna: 24.39 V @ 13.56 MHz
# Your LF antenna is unusable.
首先将原始的EM4100卡片防止在PM3的低频天线上,然后使用lf search
命令搜索卡片。如果一切顺利,会有类似如下部分提示:
.....
Checking for known tags:
EM410x pattern found:
EM TAG ID : 06008148DD
Unique TAG ID : **********
Possible de-scramble patterns
.....
将EM4100卡片从低频天线上取下,将EM TAG ID记下来,稍后备用。至此,我们已经获取了EM4100卡片的所有数据。
将T5577空白卡放到低频天线上,运行lf em4x em410xwrite <EM TAG ID> 1 64
命令,本例中EM TAG ID为:06008148DD,所以命令如下。
lf em4x em410xwrite 06008148DD 1 64
命令执行后,再次执行 lf search
命令,若能够回显与之前的EM4100卡片相同之信息,即表示复制成功。考虑兼容性,具体能否使用还是需要到门禁处实际刷卡验证。
不同固件可能某些命令会不完全一样,比如,上文的命令在某个固件中需要使用以格式:
lf em 410xwrite 06008148DD 1
如果需要尝试识别某张卡是不是T5577卡,可以使用lf t55xx detect
命令,回显信息类似如下即表明是。
proxmark3> lf t55xx detect
Chip Type : T55x7
Modulation : ASK
Bit Rate : 5 - RF/64
Inverted : No
Offset : 33
Seq. Term. : No
Block0 : 0x00148040
Downlink Mode used : default/fixed bit length
使用了上面的lf t55xx detect
命令后,可以使用lf t55xx dump
命令获取T5577卡中每个块的原始数据。
假设我们需要单独写入某个块,我们可以使用lf t55xx wr <block> <data>
的方式写入。以下是将0x00148040写入到块0中。
lf t55xx wr 0 00148040
网上也有人说要把块0写成0x001480E0
,也有人说要把块0写成0x00148041
,目前我写的是默认的0x00148040
,如果不行,大家可以多试一试。如果命令使用过程遇到问题,可以使用help
命令获取帮助。
PS:听说有些读卡器有针对T5577的检测,如果检测到是T5577就不响应,此种情况被称为防火墙,而瞒过此类检测的操作被称为穿过防火墙,T5577卡一般可通过添加写卡密码的方式做到穿防火墙,因为添加密码后必须使用正确的密码方可执行detect 和dump指令。