记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。
. r( m3 e) v, O) N) I* ~ U$ h; ~7 ?% m" }# ~
0. 缘起
, C/ R+ [ J2 K7 ]
' V$ [) i5 R. ]# f. S- w7 q之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
: Y9 \5 B+ }1 ^# V后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。! ? u! P7 t1 p
i: _5 R% e E: E/ J/ x* t新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……6 b. F# B' E. o ~* t
那个时候,我又开始怀念用手机刷门禁的快感了。。
" A+ w' P- s% a2 q _* Q+ n# z. ?1 D% z! g' a R
1. 基础知识
; |% y" t0 F/ k' ^0 |" i( f9 I, c0 d' [7 Y5 t- J; Z- L- D
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。8 L3 a' Z; D0 @( u/ r3 ~
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。2 B8 d$ Z& ]; i
如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。5 o2 s4 g6 e9 N, q {$ r
* g: ]4 Q; T( X' D( `; s1.1 ID卡和IC卡
' J; O9 V; U; l6 k/ y% j
, ]# s) {3 o* ^4 dID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。1 V' A* G& f6 f& r. ?
6 Z# N& R3 h* i7 e! S: X
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
$ Y3 q& L2 {- f, N `% @9 X+ c
6 j. D% S7 J5 r主要区别:
. }, H' Z7 r- L- M5 WID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;# k' T6 L3 j: [/ Q. H
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;7 e4 G `; l. I5 G
6 O: {2 m3 Y5 }( j1 rIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
5 c9 w2 x$ R- O; C8 j
/ j* q9 o" w- ^# F; B/ d" {& Y1 B |6 C- V+ K5 W2 N% t( A! F3 S
) N/ x" G8 b; B# X0 p2 F( Z7 E

+ _1 L( N+ q: h! s
$ v% |1 O1 {9 D, l以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。
* Q/ \, J5 Z) A) T; @/ r
; h0 C! Y: D' Q& B, B0 v" _总结:0 g$ d o; W+ c, P% q) C& \
1.ID卡多为低频,IC多为高频;* U* Z: g: D6 }/ ]% ^+ ~2 f
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡; t4 [ C9 r# ^
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;" U% Y! p4 u" x, ?* z" \) d
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
4 @$ F1 f* \5 j" G
4 L0 P9 m7 G7 T1.2 接触式和非接触式IC卡
: p+ B1 l0 a! X' G& F/ u1 ]: N, M7 a. I/ s4 f" @' V, P5 q
IC卡又可以分为接触式IC卡和非接触式IC卡。
7 ]5 T% ^- o8 [9 I6 y9 d# a" a/ w2 J: C+ M2 i& Y
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
) k5 o8 k+ P6 v! f
! s) e0 t2 ~6 c2 Y非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。
& p, e' V% y5 I) D8 g/ g+ |6 f7 t1 B" v! X b! x
两者比较好区分,直接看卡上有无金属触点即可。
: Q/ G9 {9 C. B" ?. B' @, M
$ W( Q8 b- A, o% x: D6 e- O. ~& n( q7 V. q% p. v- ?& Z5 N1 j: W
/ G1 y0 g. u. Z
1.3 RFID和NFC" t6 y+ y* m- |. w6 V- g4 ~
( G" a) n, V9 p3 t' i非接触式的读写技术常见的有两种:RFID技术和NFC技术。$ L- D2 P5 l, U/ {( K7 d( W$ s$ W
' e! P7 C. P1 m& S& [; S# u/ pRFID技术:
6 p. H w( n o1.通常应用在生产,物流,跟踪和资产管理上;
8 p' u) E4 q8 K, _" N, {. H* n7 d; d2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
+ I/ r6 d- x( M# p; R9 H" f3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
5 q J$ q% q0 n( Y4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;" c2 ~- E4 J" n" U1 C5 x: S. N
7 ?- `% f- V. c
NFC技术:* K/ M( q; S: n( F9 s) A
1.通常应用在门禁,公交卡,手机支付等领域;
8 U( G+ o, |) Q4 F Q3 O. ?, D2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);* @% x( f |' U# X# ^
3.NFC作用距离较短,一般都是0~10厘米;
: }: Q. F) ?+ b# @4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;6 S* v2 Y: ?& O
4 T1 V# I9 E% G h+ v% v总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。: v* I8 ]. G+ q9 M1 A6 n$ |' R
* T( B8 G" l9 c3 H' a h1.4 ID卡类型
$ I Z' P: S) b. E$ k1 y- W7 P3 H ^; S$ {8 w9 V6 J5 y2 A5 L
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:. P2 _( j" H3 }" t* ~$ u T* m
4 x" y8 X5 F" n1 ~0 uID卡
6 F0 m! ^6 j+ c" r( ~4 |EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;: u$ d5 w. H8 ~% f
% W( q: Y0 E8 M' f! Y1 u2 \ID白卡% Z, Y# }0 ~- V- w
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
9 \7 T' b) X* o- CT5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡
2 Q+ S, k( K/ G' g# @( R7 G" X( |) w0 F/ H- G) ?
HID卡# F* w- M: U: p6 v' q1 i% {
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;- P1 p4 o4 E. Y+ t. [ i- j$ {
' `9 q8 F6 u. q3 ^1.5 IC卡类型
: ]/ f2 w3 F7 X) [6 ]" D& A: l9 N. U/ r) Z7 q) Z& E1 \: X4 S( O
IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:
3 Z6 W1 b( z9 O& G3 O0 g; k
& Q% d3 b) { _0 S# i* H, g' DM1卡
1 ^" y; ~1 K8 M) S全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
2 U9 J/ K& F, N p' x7 \- v S& {" _" J7 h1 _! t- q" v
M0卡" l3 |- ]5 U( [7 G( s5 I
全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
) Q# _/ }; q2 F
; ^7 ] L" h/ X5 Q* m8 \2 |以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:7 A i5 }2 Q6 w- n( x0 p
6 z, w! _- U a9 ~; u
UID卡
+ F n$ q, \* ]5 L) m全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
& s6 q; A' M3 N, {% q4 s但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
. j0 h8 V( \: l1 y5 k& a& M$ k" U9 G/ P; a) s4 F; i* s
CUID卡
0 y" z; }+ u' Q' [为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;' L, q1 f- i: y& X# z: y. `) E
近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;/ Q) y1 }0 d. g! Y( B
2 ]- C+ c! b0 W0 l1 K( W) k1 K8 {FUID卡' l1 E3 \ R' E' ?" H9 F; `
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;/ q, R" K3 I0 H% U
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
- o9 T5 G; \% U* v) w5 k; |) O; V: w# `2 p W& }( J- `/ n# n8 P
UFUID卡
+ ~, X# j0 I- F, X6 J/ X6 Z集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
8 T: _) B2 P3 l$ D9 r; q" m5 i8 s* T可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;6 C, s* R1 m+ [! N& N
( T9 e! C, o3 |! z- G判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
% S/ X) h: S! i/ `* z/ |% n) f% L; @
产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes
5 P3 n+ a" d- i5 J5 l" g3 _3 I- f3 | @' J1 ]9 u6 U1 u4 F7 u
1.6 IC卡详细分析! O# k4 {9 i. P: Z9 B
1 q" ]* H" E3 X$ ^) z
1.6.1 IC卡存储器结构8 S: V8 |; X8 N9 E
# D: U$ N6 |# f7 B" M4 D0 G- R. z; F以M1卡为例,介绍IC卡数据结构。! k b8 b4 n; ^" |
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;$ f! G: r0 M3 z x! d' F+ ?
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;1 k" v7 Z5 O6 r2 T6 b
J$ U4 N& v4 K. L) w, Y

! o. k* J, a2 y/ ~( B$ z/ b3 }2 Q1 y7 H. v! ?" c0 u
厂商段4 L9 r# m3 U( ^0 b8 \
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。+ U l+ q" E: @! J7 y
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
& v" D! m4 ^; g6 Z并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。 S8 Q: H" _! Z4 X% k) K1 w
7 b m/ N1 D+ Q! T4 t. c7 d6 ]
& N% B# Z* U) f
数据段* f3 j; a9 H5 D! h
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。
7 U5 U6 {: Y. W; ?! W0 a数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。* R8 n& C9 ?( T' O/ {& Z u
值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:) S3 p; {/ ]- g* L: j
( x7 y7 J3 Q# u, X8 P, K
v& R1 z1 n3 |# ?( M" e( E+ t r* J, w+ C
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。
6 J T; H3 I3 H6 s3 E% eAdr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。5 o9 t& ]& G6 G; _! n
( r5 Y- ~9 o/ \: Z$ q# s8 _# |
控制段
$ h0 s3 g# y8 }% }" E每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
' L5 }# m, i% L, Q
8 o9 a9 |* h0 ~% G) B8 z
( p3 x" D& }. |( K9 @/ R
5 @0 w7 r3 k( n6 f! `* I6 h5 n如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。
" K/ Y+ o, D9 h& g
" ?* B% e# X% x6 o) H2 x1.6.2 IC卡访问存储器
2 m3 Z" H* s/ r, l: i/ a) D7 Q. S# u
3 `0 }, m. I2 R3 H4 M1 k数据段支持的操作, ^- O% Q( I5 a
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:. J4 S. s6 _ o
7 l1 M1 W: g- Z5 }4 s1 i
1 H, J& w: g* `( ]/ z/ O& n* k$ O
! E& p. D2 r5 v/ x' y3 z
可以看到只有作为值段时,才能加、减、传送、恢复。' C& K& Y( J- E
5 U- d6 f" S# D- [3 z
各区的访问位定义3 W+ K* d) Y+ P9 C
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
* ?6 Q0 `4 \0 v6 _访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
) d8 Y+ H* v, B# C$ Z7 Q2 A0 b7 Y
: O* D |8 Y9 P* u, ?
7 V2 t$ i8 p2 J" L+ Z3 Y/ [访问位在区尾的存储形式/ e# y7 l6 r2 ?- X- J7 F0 C0 u
/ p( s0 M) T1 \

& `+ h2 F) k- ~! x" P& Q- |
# Z$ ?: O5 i8 f b( X* f5 |区尾的访问条件
$ @2 S- Y' r" ]+ V2 p7 A根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:6 g4 r0 r. _% S# U. p6 G4 @5 b) G
" U; k6 M: O4 o/ g! |

- C2 o* T: W- Y- N
7 B3 k. y. q) a/ h [$ v用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。 M# i T! W! R+ V$ H8 n+ \
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;
% p+ }! b3 ]: Z) j又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;- I* q) T3 @/ ]% @# Y& a
, ^+ \+ e& M8 P# ^0 T数据段的访问条件; |* j1 }- a) j9 j' Y" i
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。+ a; p, _+ }' \7 E1 l& O
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。; ^: R) h: w( E3 b$ z K
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
2 u# g7 m+ d$ R& Y4 ^4 m; t$ G# |3 B) ~; n7 h0 Y$ Y
- C3 t* J6 ]: T0 r
( B2 u. t# v9 [0 K1 U5 I
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。5 [. m5 T6 d; k6 q" \9 K# _
" O' h( J' D$ t
1.6.3 举例说明
" P+ s5 ?. e7 O8 l, w
5 h+ `, q, I8 b$ a4 h8 fMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
* B& a0 V4 @ |. _: s4 O! f, t字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
/ R/ L6 O, y. ]2 C( }3 |: j: L4 ]
* Q$ I1 {4 B1 f# \- S* G
1 O7 H8 ~0 }& D2 M8 T$ D0 B+ k- a# t, Y- R: `
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:* H' q6 d/ h) {6 k ^' k
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
9 M5 w# [* Q2 M+ w& P, L% ^8 h. X$ f6 W2 [; ], o" w
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;0 F; b- @8 n- M% [9 Q; I; j4 B
C13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
4 f! i8 `2 I! ^ E& G; U, {- ?/ R; N, ?$ I8 u+ L* ?% q
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
) ]4 [6 M+ M+ v6 Y块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;# c+ I5 s5 ~; T1 d" L
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;* M9 L" | I! x6 j( \2 o" X; H h
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;# H$ v+ _; r& \! R( i/ X
9 k* o% e. q% @
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
3 w! ]9 g- H9 t R
( e5 c+ Q& R6 b. [# }6 M# [
. |( s+ x8 V2 e! K5 Q7 z
) i( m7 h# A( b& g' H f @最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;
% o/ \: x5 R0 o' Q3 h; X! x最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;6 B! K( e3 O, S
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;- p8 }" x S, U) k
* U6 H0 \. ]* x. k) [9 i
1.7 非加密IC卡和加密IC卡
9 g% m1 T# ^8 P! R5 A+ }6 k5 e, {1 X! {0 \$ P8 v5 O8 _ i% u$ {8 q
非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
4 M( G( p& k. ~而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。" g8 r! p7 I- ]. n# m/ H
. x3 G1 v6 ~0 {: Q, J( z9 p
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
& q; Z t8 n6 T# Q" W! R6 B- i* H* p S1 C& X
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
7 o& p/ V" {8 J- |" N因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。, N0 Q$ y4 }. i/ ~7 y6 @; v
! @' ^% F% f( z2 [$ x
参考资料:- `# e2 {& c8 l
码农生活 篇二:IC卡门卡模拟探秘# F& r& p" w% W- }9 {
IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】& X7 j b; Z' p/ V; u9 f
谈谈 Mifare Classic 破解
# k3 S; c) [2 drfid-practice! w# c& D- c7 ^ @8 T- q) K1 O
Type A 卡存储结构与通信
# F7 j) c0 e: U$ H: ]5 |0 D: DProxmark3 Easy破解门禁卡学习过程
. q; E9 f1 H( t2 \! C# T
# Z( s0 z' I* l: k$ O+ r2. 手机NFC模拟加密门禁卡
e$ D$ t- c. t/ e5 G `+ c# |$ s8 F* R9 j2 Q/ _$ ~% w* \" y+ R
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。) h4 B" q/ J+ }
* d# K; A7 a. C+ N! o' ^- O首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
7 w& |- Q( {" g7 Q1 R! S: I部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
4 i/ G4 g/ @8 J) |6 `, S) @
0 v7 L; Z# o$ Q$ i0 ~: A9 T- r7 [& c在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
. v' F& g/ s5 {在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。7 B4 i- |# {1 _
/ { C3 C& k! I& |, s" k' [$ w1.读取加密卡的UID: m5 L4 w9 Y& x
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。# J+ k) S+ i5 c! B8 _( R N
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。2 w/ M: y8 v5 y$ b3 V" Y: m
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节
# L& {! t, a* Z* z接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
7 F- E/ X9 u, ]4 h% o
' R- ]( a1 W- k
, u4 `7 J' g, C
5 d# f5 g; e/ O9 M( G* _2.读取CUID卡数据' z: G5 K" }; \, x
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。
4 A' F( A0 b2 d" @3 G, v p接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
2 ]& W: `. j- a
+ R( r+ H3 v9 H9 T3 d' s
, `# q, x1 O$ [( ]
0 V% f1 j; H. V; p4 D7 ] p; Z3.写数据到CUID卡
4 G7 X, x' w3 b- R8 r2 T' U再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
3 e- K) F) _' O+ I再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
' [ i9 Y7 ` ?! \8 p$ e$ X Y' u0 J6 h G$ T
6 i0 `7 b% n& V2 i- S+ H/ d
7 f9 N ?3 P. Y) v2 r& o4 l" C5 r0 ?' q+ s在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。/ M3 S* ^* T& Y; E) s' T
' R" C' T" K# q m& e$ y. r' ~! t$ r6 K/ p) o9 A5 |( _
0 z: O% I, W \& [- |4.NFC手机复制CUID卡
+ Y N5 E: c; B* z最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。/ S( ?) c4 U. D
6 h6 u. B& O4 F
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
2 C7 C7 q. ?7 X8 C+ \
& X3 G4 s# a# |1 n/ ^* \/ T3 |0 y! b* ~& }, B; R
|