记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。
7 o$ w5 P7 P9 @( Z' e5 x# Y7 P; B4 \. i2 x
0. 缘起* W8 b/ X$ R2 E- ^
) @- ] y5 @% O1 t之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
4 X5 H! p h1 b8 b7 N! C后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。9 S1 B9 T+ U: ~- X. L* b
/ `1 ^" M. C5 K( s, ^. j
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……% h/ X( P# W8 I" e+ R( d# C2 `
那个时候,我又开始怀念用手机刷门禁的快感了。。
1 e, S8 {( \9 A* s; u- }, L: G' H( c; P% a" j
1. 基础知识
: ~/ k* s1 R( `# ^3 c0 Z7 y- }8 @0 M: N* R3 T
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。- N% m* U6 a8 |/ E% L& A9 w
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。4 m$ Y& l: E' E; T# j- ?
如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。, p' V. V# g J: a0 J
/ W" M" w' w! n9 L! {; n
1.1 ID卡和IC卡8 y2 c2 }3 T- ^ ]; f
1 l( N, m7 J+ @: H' R- l
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。' a1 d5 H7 I- x }
, i b4 V" U6 g4 j4 P6 G2 uIC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。5 X) g5 \7 G8 V x% D5 ~; a$ b7 L
3 H, T, M( k) c4 O, w% @0 g$ f
主要区别:- c- W+ A7 w& q; c4 m
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
$ U7 v' \" L n% T6 ?/ K% q3 a( A7 O) DIC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;: {$ Y7 e6 @" ]% x% [1 ~" f/ J: p
' x- w+ @( ?2 q! V# d0 T
IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
7 k5 a1 m# l/ O) n- l
4 g5 a; y& u- N& ^" h( r0 O4 M' B" b: j8 l* F
+ b) V& L( ^& I# ?$ J1 [8 z! W( j6 M8 @9 l( S/ e6 M9 K$ I7 E, S
: {: j) L8 M3 X' N* l) D以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。+ a/ A! z$ F& `3 a3 W2 ]0 A/ g& _
5 {+ u5 N+ p! P3 K) d' s& a6 x8 m总结:8 v) z5 d3 E. @: ^
1.ID卡多为低频,IC多为高频;+ Y6 t( G' j7 k7 D
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;4 a) E: `/ U/ G9 f/ `
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;% u* T6 ?" C8 B+ D; Q- O
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;% _* f0 `+ o! X: d& ~( A
! ^) [7 C# b+ _+ R& B# o8 U1.2 接触式和非接触式IC卡
& {: H g0 T1 k) X: T7 b( d0 ` w9 b2 b8 s, @$ @# X
IC卡又可以分为接触式IC卡和非接触式IC卡。
5 b% l& p: z- [, J6 d
1 h: _" R3 `6 U接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;. g; Y4 M& D$ l% P) B
# h* }1 T2 Q# [4 w2 U$ @5 n
非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。/ g# R! z9 c. D; f; T G/ |: M
0 c% K, e$ P0 Y" ~+ [( ?两者比较好区分,直接看卡上有无金属触点即可。
/ E, n( g+ O4 V3 W/ h
/ R1 h1 `: l' U* D# U( e9 \: e7 v. y! i
' w9 G: Z' U0 x! P/ J1.3 RFID和NFC
) {- D1 d$ n6 Y8 P" Z4 w% v" Z5 X
$ E* a* c- L% X非接触式的读写技术常见的有两种:RFID技术和NFC技术。
7 |3 D$ B' \9 ]4 a% X4 u/ @. C
4 c' t' A+ Z* }, p) c4 bRFID技术:
, k9 ]4 {5 q* H6 B6 J$ s P1.通常应用在生产,物流,跟踪和资产管理上;
' X+ e0 I) J( j& \! n. V2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;7 Z( W+ Z" q3 v. Q# z! C6 Z2 Q( j
3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;* T, Z* W, Y+ [+ [" C+ [
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;( K( e9 L, O5 B t3 R
4 G u+ b2 d3 J1 S0 F; k( R4 E
NFC技术:$ j4 j0 G o7 W
1.通常应用在门禁,公交卡,手机支付等领域;
; \/ d' W9 m( x9 k2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);4 d; ?" _* g5 t# l
3.NFC作用距离较短,一般都是0~10厘米;# c& ]6 N j* M7 W3 a
4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;9 Q+ i4 j2 F8 Q$ m- f) _
- W3 D% x. y8 {: R4 w; }
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。) k5 s4 e1 B/ l6 Z# U
3 e6 p- H. p" Q0 _6 L1.4 ID卡类型
5 c) n6 R' D3 k( L! D3 B7 L) ^7 `& E* e3 b
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:' v" K* i \# D: ?
, p. A* x# S. G$ R% x. k# q; \
ID卡% v+ z( G* ]- y( d
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
$ `3 T" s6 p2 [/ Q& ]/ P$ C" f' w8 c1 z/ [
ID白卡( A; B* `) t6 h5 e$ Q" ?
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
. h3 M- C3 p: V8 h' z- AT5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡& z/ M: O; t8 R# h7 C
0 m/ l! t( \: G; \
HID卡
e6 k. a% l( a L* K全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;) G# e% A8 ?2 |6 y
3 B6 h' v8 ?: z9 \1 B' W+ J+ O
1.5 IC卡类型# X u) v) J. Y
7 T" T! ?' j& V- i" i* [+ JIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:3 j3 B8 H7 R$ w. |/ a5 e# J. Y) W
% ]6 j7 o9 Y( Q+ LM1卡
; g$ `0 Q* a9 g6 W全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
- S" h* B$ A9 j; v* d, R! I. Y2 W3 v+ R) m
M0卡
1 W/ k# K$ n5 `: A$ k全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;: R) p ~. T+ M3 w/ f! {3 f
2 I' l8 E- }4 u( |/ m& l- _7 J
以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
7 o8 y2 O! O* M: t& ^5 D6 t
! G% Q# ~/ a& t ^UID卡 e: r9 M+ {% q/ A. a
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;* W3 B8 M+ @8 b& J {
但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
/ ^ K# o# A% `4 a* ?* T& C& ]: Z8 R' Y; z- r4 c
CUID卡
) O5 W' P! k3 p* U% e+ K/ X为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
% {( D! e% o: U; R( G7 h; d) c近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
X$ N( o1 n& [; d. W) z0 @7 M! _$ I( ^, ?2 |
FUID卡
3 Y8 ]( M! t/ \" j' i1 mFUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;$ D/ w" q$ _' ~6 _1 @$ t
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
0 j! g% R' Z! ^# E; ]" a+ C3 f5 i. M- [ L# Z6 `# n; C
UFUID卡6 {5 `, }: |& K/ K$ F1 ~
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
1 e8 E1 H U% M" `0 F6 T可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;
& [1 g3 b6 b+ C& o$ Y0 y% ~2 \, }; }, b
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。- n* b* m9 p$ o) n: l& D+ H3 I7 O
( p5 k+ ?; Y2 a7 N产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes9 A9 j* Q$ J( O d
! }$ G% l% P( U3 ^4 z
1.6 IC卡详细分析
/ D) j/ h0 j4 j- @8 g: o( `) ?4 A5 t, N8 `$ l
1.6.1 IC卡存储器结构
, A; w7 b) \4 y( N9 z
& o6 t& D/ [; c: f6 m- R/ N以M1卡为例,介绍IC卡数据结构。
/ }8 ]0 U/ A: uM1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;
8 y+ ~, E4 i4 x* @每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;
6 R( u* [" L9 j
# ^5 ] V( W7 `6 ?! g, E1 R! ]3 P R' X/ W6 G" s k4 z
( e" f5 q2 q; H, K, k6 {& T厂商段
$ a/ Q: f! y7 n+ p$ K) Q% u每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。& A0 r" D8 k2 h6 J3 @
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。! x5 v4 R* C& Q6 \; P- `3 s
并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
1 x7 x, O, Z, U6 \. t, X& Z0 B- A: A: g3 O( e1 @
, t; p f, K$ d8 H7 c
9 y! f+ O4 s7 O( L+ b3 T& Z3 ?数据段
& [4 m3 h4 a8 X0 s/ E除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。0 [/ n g$ [4 \2 P* E+ Y
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。) ?, ]: U; X: G8 e7 {; s9 B7 T
值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
3 ~/ j* S+ f: m- g& P" x* b6 J8 `7 u/ O5 u
7 L" ^6 r+ V [. q. ^( @
4 e) v4 |7 m. ?Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。
) f! f5 V- S) s+ FAdr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。
* S. t% ]3 I# n/ R7 A7 r" P- o1 N3 X
控制段
2 U6 E# }( t" x: ?% v4 a3 J5 Z" g1 T每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:! q/ p, e* Q- o" H6 ~
& B1 `# |: R9 @' A: ~- O
- P1 Y/ V: n* w1 b, b/ @( j7 [. v/ Q! |. T
如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。, s( q4 C- }+ J2 u
( M6 p( X: w2 B/ S V# t* N
1.6.2 IC卡访问存储器
5 E* v0 o8 |2 a# P6 t$ P" ]6 X) m3 F
数据段支持的操作7 L* ], k8 b+ R! Z
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:
$ j) ]2 V0 [) p6 `0 B5 q
& ^" Y, c+ l! [) s, k0 v7 A5 w+ O* \; a! C4 I7 J
9 d e7 A' m- N) d可以看到只有作为值段时,才能加、减、传送、恢复。
9 A U/ ^; Y0 c% z
' ~1 K: z0 N; A5 j4 N3 ?: c) F各区的访问位定义
3 M. T E4 |' j$ @& i每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
, x8 {9 d% H/ J4 `1 H0 @$ ?6 v% g访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
6 A; m4 y1 N" A8 A
% e8 w$ `4 ~& P3 \; R& A1 J
- Q! @+ Z6 U4 F. {5 }
( l% C! f2 N: r+ e: u% ?% M访问位在区尾的存储形式+ c9 r8 A* [' x$ f6 g
( g; K/ i, w. ~& c& o

- n) Q8 `. L3 M
! J2 \* _! {6 q% v, `区尾的访问条件
; s) ]: x) p/ O0 `" _: `2 `0 m6 k3 [根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
9 \$ z' w3 t2 ~2 H+ P' h" k( R2 A8 |# g1 s% |/ n

' a# p! [9 H6 o: v7 K+ g0 g8 X
% i! S* P- e+ z用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。$ O# t# E i9 `
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;: j8 J. {; g8 Q- I$ B% t' Q
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;9 j$ x- \1 z. S* z! s
- K. ]) w3 D) G数据段的访问条件
- b1 X. J9 K. \6 N' |" ?根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。
6 E4 Q4 M0 ~1 C相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。4 {: p1 v% o- h, P( U8 }
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
! j7 u+ _/ }5 K1 E" [$ E& X
! J5 o. O8 e& ]! H' q
; A+ o* G/ V8 w
7 R1 a4 ^6 _- c7 Q如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。8 P* {( M: \7 J1 d
/ `: J8 y" t g3 K2 Z4 E# f# A/ [1 o
1.6.3 举例说明8 g& t% W7 a. Z" b
8 n) ^4 { O+ l. k& ]- HMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
; ?; d7 L2 o3 ?& v; a字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
a, S4 L% l# b
) Q1 e' C, ]: o/ b9 u6 h4 M# R$ z5 t. \# w/ k1 |
: U" p, {0 @# E( _5 L# S
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:
. T/ z' [7 C4 K9 C4 QC10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
# ] F( N0 v3 [8 S- C4 L& ?1 \
* f' Z* B) {; z' M5 x$ S' r1 dC10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;* ]9 q1 H+ [" A7 P$ m& I0 J
C13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
9 M6 ~7 f0 o2 @
: h' Q- A- I$ i7 _& u7 K- p# k3 V1 W块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
. A9 P8 E% ?2 w块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;# C' d4 e/ \4 G3 }2 l* H$ u! B, }
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
8 Z" j: x7 h2 @- Y% D5 @, P: p块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;9 N7 l# S2 O% G1 v" Y
9 A0 v% Q+ e5 ] H* l! n W, q
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
& r# h6 ^8 A8 ^/ g1 n0 ~6 l( O4 ?$ Q2 ~ X; q) p/ L) D4 ^
6 ~* r1 w1 `1 U) r1 [& p* f
" o! {, _/ z4 W% H' T3 E' q, Y
最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;
7 a1 K. ]! ]6 H& A最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;0 \* \! U9 D; _- A
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥; D: N4 R9 N6 Z
, {- O; N) y: v P# z1.7 非加密IC卡和加密IC卡
% `+ C+ w8 `) K) L& D& S# ]) x
$ G) v% I) U Z5 P! r% x5 j非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;7 v0 f( n0 ^& i. a& ^* @: @$ c, v) r4 p
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。
0 y/ ?. ~& M; k4 c
( J2 J7 i) L/ o% F. ~' g( R一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
7 z" ?$ P3 W8 t) ^2 \0 F& e: D
' i' d& R2 M! Y1 w对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
2 o- g/ o9 f0 D( e因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
( S. p1 A) I6 m4 x! g' W+ Y1 x
参考资料:
+ G/ Z r. g. J* @ O5 r码农生活 篇二:IC卡门卡模拟探秘+ N/ m( C& i$ h7 s I3 c
IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】( [3 {* n. R& [9 A* @" v+ S
谈谈 Mifare Classic 破解
6 O3 F0 t' I4 b" x, a* H' _rfid-practice
9 ^! D* M4 d8 M2 Z* HType A 卡存储结构与通信
# t y5 z* h. |: p* _Proxmark3 Easy破解门禁卡学习过程
+ S6 Z5 y1 S8 c$ G$ J
& P% D8 p* B, y2. 手机NFC模拟加密门禁卡! P5 i& }- d) {0 f
3 a% S6 P4 k- @0 M" X有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。' c/ z- M; q3 K
5 Q5 B; V( S! G2 R4 T- w/ g1 z
首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。( g* O" W+ ^" g/ c" A6 t7 U7 w- E) g/ n: b
部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
" O6 Y3 s. M) j: I
& o' r# x3 H! o* [1 }8 q$ u在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
& o% w8 G- j, R8 T9 o在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
2 ? V- C4 Z! g/ ?5 s) U% y" I8 [; L D# T9 G
1.读取加密卡的UID
. q! L; V2 Y6 h: p. D4 ~% ~3 U打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。0 m7 X6 Q) P: G4 U* J2 J l t
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。
) m6 c$ l' A+ N9 x. \前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节
# i/ X3 R1 m. I8 T接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
0 w7 o0 R7 {9 v' t" o
- r# R, H3 B' D1 {9 _
$ z7 |# l& c2 f1 {! o. ?9 m, Q8 a1 d0 B9 |( V4 L
2.读取CUID卡数据
1 H6 A5 ]( J1 W8 ?将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。1 R! l: `" v" ?! ]- y
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
$ h2 {2 o' Q7 h' \: g( D/ ?( I& \. m; Z5 J
 z/ k& `, h0 j
- H# `, g6 Q" B& x3 q
3.写数据到CUID卡& \' g5 A5 R, U
再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
Q0 h! E# W( p6 L再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
+ g& G, h5 l$ X
' }' z6 E2 c! W: t. G' Q4 r; `
! `9 c0 z# Y9 C5 @" W s* N1 F9 o在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。2 A7 ?, M$ p) u6 I1 j) b. H6 l, C
. y3 u# \9 p$ t. D, ?
; D `2 w& Y- V0 R
8 }8 f% n% ~+ S5 p8 J7 b
4.NFC手机复制CUID卡
6 S5 ?. A7 ~) Q T最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。; |& Z/ t$ c2 O9 k) ~
. i k6 A, e' T. Z, r# e+ e0 X
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
7 L) z+ Y/ _# @! @
R& X0 c. g' o$ L5 d3 [# _2 \1 ]3 }, I* K6 y! s# Z; _
|