记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。
0 v9 J' _$ ^7 E- p$ o9 Q. d3 Q# s9 D
0. 缘起
6 V0 M0 [8 _+ Z: I( E, {5 P4 J: C' z7 A0 B- A$ a- B
之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
5 f0 {9 T8 v4 P( P后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。& m- B* q$ Y6 l2 x6 N! \
) L; t# G8 X1 l; q- J4 w
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
0 d) \: g" n4 G' f$ G- |那个时候,我又开始怀念用手机刷门禁的快感了。。
5 O& I# _! l+ B; C3 l0 a4 h5 s O! [$ u( `: a' \3 Y! v
1. 基础知识
1 d" v3 n& D2 F- P& I o* e) w6 c# j# ? [4 X) O2 t
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
H+ ]& y( q! m- _* w4 D' Y0 m然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
8 f2 S" l4 _+ h0 \; ~5 p+ v1 R如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。7 r: k! ^+ t Z: U$ f8 B4 `) ?
: n# G8 v( v- s+ G* P
1.1 ID卡和IC卡7 c% J1 I* q1 F
, g) c; V+ f3 h. p0 {: }; u7 \% S3 t
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
& W7 ^: V* T6 u! ?9 W
, g# w( B& ?9 B% R1 ^0 z b& UIC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。4 b1 C# P1 D. a2 g) I, @7 J; B
9 i2 P* _3 B$ `' E* ?
主要区别:
, r8 u8 u/ Z* Q { lID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;" I3 b/ `; q. Z6 P- h3 N5 B
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
L3 P' b1 h6 |- u7 r0 N6 E% [' a; g+ e6 R
IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;9 I0 ]7 y }" t5 z
. M" l+ i2 N+ Z! H% L0 b8 ]2 p& g
- k8 k- z" V& w& j, U2 g$ P
2 y' O" H/ y& a; O# r

, }4 h; \/ e* {0 u2 k) J
3 C2 [8 ^9 I# D, P9 n: Z4 f& ?以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。" O/ H9 ?( E& `6 w. N1 ?7 ]6 q7 h
* ~8 M+ Q2 I+ t' ~) e$ G) x1 C总结:- M7 Y, f$ o; @ D( |! b
1.ID卡多为低频,IC多为高频;3 t- B) Y/ D! R* T; G4 P
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;4 ?9 g' E6 K' v: c e; C
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;7 K, o, [& ?0 b# R/ o- p
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
f, f& p0 S6 g% }% D V! O
8 B/ A7 C% e, _# u2 S; Z# H9 [3 Y1.2 接触式和非接触式IC卡# q1 V: D# o$ B
2 E5 X4 N4 z+ f$ P; CIC卡又可以分为接触式IC卡和非接触式IC卡。9 r& {9 b0 k/ [" ~& U& K% ^
' g5 s& z% `6 |- n
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;. m f2 d# y9 Z- e7 a
- ?, C3 y: ], V! C; k非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。" V, L- M: S& y$ ]* `+ p
) S, ^. O n; P4 S9 l4 d两者比较好区分,直接看卡上有无金属触点即可。
) k5 {. u/ Y7 I
+ `8 L1 c* G: O h" L
- c( K( Z y& R- U7 z7 T! n- p$ g$ s8 m! R4 t; Y) K9 A. g% u
1.3 RFID和NFC$ [0 x+ i' l! j/ A% u
- ~: @1 c, u% {% [% u
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
4 h% u m; [+ B( P6 r! D6 p' i% b- Z8 \, V
RFID技术:1 t2 E, Y/ b I6 X! d3 K2 ^
1.通常应用在生产,物流,跟踪和资产管理上;3 I. ?' X/ S1 c6 ~, I
2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
! B7 i$ I) s t! p' ?/ X3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;# X; O( }) \$ t+ a+ O# S+ J9 p5 G
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
# y5 m. ~6 o' O6 ~2 x. ^, V8 T G# j0 D
NFC技术:. Q8 a% i! B$ r# M# b
1.通常应用在门禁,公交卡,手机支付等领域;9 E4 W; p. C, b: h
2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);
5 [" }$ l' C6 w& `9 O% p3.NFC作用距离较短,一般都是0~10厘米;
# n" d* C; K: n/ \4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;& j/ q" B0 a! s& N* K- P
8 Q# v: R; Z3 A9 a( p% D8 S总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。( A: B: V$ @ U; \0 `
0 U) v2 W# c* {1.4 ID卡类型8 {$ q& F# h/ F- d4 _" @! m
; _1 w! j4 d0 t+ l3 Q% gID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
) A" H& a8 |# }4 j/ c3 Y0 B% \- z2 `! b7 a5 x6 L3 O$ i( E
ID卡
! J( C! K( R, QEM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;$ @% S! u& j0 w8 @; g* |3 k# G% T
* {; v0 p/ Q& g2 T' rID白卡' M$ b% T" G3 A6 |+ s) l; ^
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
$ o( R' H. b1 W3 J6 AT5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡& o( p x' V: V S
7 H* i3 |' t" A( T5 F
HID卡
/ C" f# V9 K* u( s1 r/ c$ M" f" Z v全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用; Q7 o0 R4 H5 _* ~* l6 r* x, S; y
9 x2 M% y) \% Q! o1.5 IC卡类型
! Y _* W. R7 C% y4 ?. y! b' E) }$ W% v0 a& {7 l. h
IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:* w: d: t" p: K: Y) k
`/ s A2 }% z2 c. e; z% [) o+ oM1卡
: d2 V4 K# n7 h0 c5 ^1 _- Z5 h全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;1 h# \4 z' \ Y
8 L3 n4 m1 \9 s8 y
M0卡
! m R A0 C$ M5 t1 f1 y全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
3 M7 l% {. O0 {( Q8 `
R9 R1 K& q9 y9 p3 k以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:; h9 F! [- D+ R% D
* U$ }6 W6 B' o6 C1 g( VUID卡
, a5 C! @: U: w全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;: S1 Y+ n' }/ m3 M& _# ~9 e- b
但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
& f; A; H/ ?6 |7 o5 v5 q( ?3 [" _
CUID卡
0 X( i) S3 s5 h8 k- d为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
6 U+ M; D$ l ~3 r1 S; p9 v近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;% O9 h5 A- p: q4 ^
! X, @$ Z! I4 j
FUID卡 C6 M4 Y7 [0 @2 D
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;
5 }4 \! G/ b3 D, g6 [ b1 s1 e但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
4 o! d) Y( X& b* x! j: Y
9 q- V9 f! c c1 {7 ~UFUID卡/ b* n2 I- ^( J6 m) N- O
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
; B3 e* N( Y- C, h- X5 G, w可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;
& \9 A2 O3 X* C. V2 D& i7 U, ^& M) B& c) U! ]: O$ B
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
( m7 j, W& h" A# R# k7 `# X
7 g+ O* g8 g( P产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes7 }& Q. n- G1 G d
$ C- h1 N2 f- L$ l- t0 V2 c/ h$ S
1.6 IC卡详细分析
: J, u( c3 L" u# J5 s, W) k, q/ F2 |* j9 ]5 q7 R7 Q8 u, K
1.6.1 IC卡存储器结构
1 x" [( V3 S! ?* v8 d- E" L! P3 k4 D$ ~ J4 z8 l! C9 z+ ]
以M1卡为例,介绍IC卡数据结构。& A5 S i0 |" c- J
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;
( X1 J, |# {. [9 Q7 b( r每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;
1 I+ i- E: x6 k% b' e( b5 y. |4 Q
: G: P: j" g* O9 Q, x: Y' v9 N( O1 W1 D
. E' n; ~. q$ W _# o6 C: Z) b厂商段
9 O2 o! H$ I* }3 Y每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。
! n6 I) X$ Y. E! A4 C4 A* x其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
3 m2 s0 O- R; D. a8 e3 K* A并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
: Y! L4 O6 {: L ^/ x2 S. X4 m5 r& W, _7 K( d, f9 \
 d, i/ u# @4 c4 N+ F* [1 `
1 P9 e9 d8 t5 e M$ I/ |/ y1 S
数据段
. ~1 N8 {7 N6 V/ B7 L. D5 d" x除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。
$ L( _* b- L$ U. [5 @- A5 R/ t数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
6 P1 G6 U1 k7 _, t s, u) p2 ~值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
5 Z7 N6 {& W. ~0 V
' [& J! x X6 A
3 T- e% G8 p; y3 ~) \# z6 a J5 U; r6 {" q
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。
- g, r, Y, F7 H% i6 J) t8 yAdr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。
; R- Y" a q% i7 l# ~: G: f; C9 a3 f* e
控制段
* ~1 m P) M( T/ }& Q$ X$ T每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
4 p; x. R. R3 t& T- M% i! X" @6 ?4 x9 }
0 e- w% L1 A J7 B0 y$ e
, p# H5 I' n- m3 f4 i0 A
如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。
" u. e% h) ^ [2 U/ s
2 y5 Y, S/ W9 b1.6.2 IC卡访问存储器
0 b- _* `$ ^6 M: c9 `8 O6 I5 ` I" s
7 m. o" U; x6 `/ L( J4 m! H2 U数据段支持的操作# L( O3 H+ [ `% B' {
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:% ^, A2 k, F/ v, n
) l2 j. g5 u: @
8 H* Z1 }, U1 H1 }0 p8 u( ? m
' |. P% O: H& L" n3 i- e
可以看到只有作为值段时,才能加、减、传送、恢复。
; P4 f; I, |/ E# e& f8 B; B5 s* w3 X* X2 c
各区的访问位定义- I4 @1 |$ f6 n2 x* l
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。& E& R* f0 A+ O3 P* s( T
访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
$ }1 N3 _9 \1 g$ {6 M' r: m& {0 F' Z- N
" `0 j$ o" L6 [ p3 v
+ X3 Q, V. @* k* I4 i
访问位在区尾的存储形式! x( l: D( n; y/ ?1 V. ]
1 Q! Q9 q i. ~5 }# l! M6 u( N
8 A+ k( D' z' v6 H9 b, S0 i" K% F: n1 x8 s9 p7 Z+ L @& ~7 J- {% k
区尾的访问条件/ B( d* q m! \+ k
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
% A# w$ ^. d3 i" d" N L) ?$ L9 W* k! o

0 T d, b( d( L( }* O* L# i% D# `- M* t
1 `- P* M: P; G5 N用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。
: G' C; e7 |: @0 z# z例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;) ^" ]! ?! s5 N' C$ q- e2 k
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;+ K8 b/ C! S# {+ ~+ D" ~# g: @5 H. x
7 v" h& n( x0 z# c& g+ P# \
数据段的访问条件6 C2 M! A# R: K) b
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。
$ t) P2 m5 Y+ K* [( i相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。/ b0 d2 b; {! n% i! m/ D
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
# Z* g' w% Z `% x
2 V- W' [* [! b6 V- p# G6 T( X6 ^6 c% v( m: d4 O
+ j/ d7 F2 |2 b2 l4 l
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。2 p! y( Q8 Z0 D% ]+ n8 A
' r: Z! L8 I+ N/ t7 `1.6.3 举例说明; a: B4 k) }3 } r
. C' {3 v! j* o5 MMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
( N$ n# d2 o9 S4 B* w字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
, i" Z. v7 m3 G! t: f0 G' M5 l. k! {6 G, c0 V0 B

( z4 ]0 `2 J5 a4 t6 D5 \0 W: p1 }4 f C$ ? }8 W9 }
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:& ?+ O Y6 J/ x8 _" ~
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。( |, D# i( n1 a8 q6 T
% G6 B A% X3 q( x# i2 U
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;+ {0 Q! s% ]# k3 j
C13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
* a T; Z' C- G
0 i& [( l1 h N5 ^% s& f块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
& L n; _! e; G' Z) q8 {块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
5 H0 j+ i u$ G, `, L块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
+ H$ w. X4 u8 \/ c" q块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;! W$ n) ^# J/ l+ N- D1 z, j6 P0 |( Y
' ]. N: p$ v) [8 L: w. u/ F& U" Y
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
* f z$ _4 e$ G3 b! ~8 p
: M% E# M1 F6 ?+ A5 [. G: S: N( a6 U5 v; n, K. j5 R
1 P- P- Q( K( o& L. L6 D' S" @最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;) d0 @) y# u! j* r$ ?) ~0 Q: {) e
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;, D8 y( E4 G7 v. T% S
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;* ~- a `0 E6 o( x
9 |9 c) ] Z8 D- d# T d3 F7 \' E
1.7 非加密IC卡和加密IC卡. P/ t9 x2 t. U+ P! S4 h# |
. z: @7 @) r. x4 m" r, K非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
k/ l x% U1 V4 r& k而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。
& R9 i. j% l! t2 K) F1 ]) Z9 M9 R9 S( x4 q6 p. s
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。7 \" U8 O$ r+ d2 ~' S. U
* F/ ]- R. L. t! I& p对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。) y( G$ P9 |) e( ]/ u2 V' O5 Q
因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
$ H3 \" R8 Z/ l; @+ Z/ }$ B- P, |9 H! v8 @& ?; K% s# S
参考资料:
0 w. L+ N, S0 o2 y% q4 i码农生活 篇二:IC卡门卡模拟探秘3 h" {+ {7 E4 T2 c2 R9 C0 Q# z
IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】
. m9 y) v4 K$ t3 f谈谈 Mifare Classic 破解8 ?. `- t8 a( `2 ^& _. A' a0 c+ ]1 G
rfid-practice
' u: Q1 }5 U1 t- W& o# NType A 卡存储结构与通信
. D9 ~# j$ X0 ?( t1 ]5 }; J, UProxmark3 Easy破解门禁卡学习过程
- ~ `# L! R7 x! x, y' T$ @2 v5 @. j$ A6 A6 a, r9 ]
2. 手机NFC模拟加密门禁卡/ i% p4 h& L# `, ^
' l i: }+ y6 {- @ F$ t3 h
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
& \( X. T Q4 V9 k- b! D- _
! H' ~& P" G9 x9 ~& v4 s首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
) c. I! R X$ F. Z+ o3 y3 V部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
) Q' r4 |- x1 K) u4 V3 t2 S
/ ]: P/ d5 @1 ~# n: x# c6 r: p1 c在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
* H& J! r8 ^" t) t/ Q4 ^在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
) Q# l) u. c" a( y0 x5 f9 I" H8 d
/ L( T% @/ [% P l, ?7 |5 m1.读取加密卡的UID; Q; F) r. h4 Q/ `0 d, I' F
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。. w& D: ]7 e- J4 v( R
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。0 {; C' h" R6 P! U+ o1 K6 T2 G
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节
3 H& [( i# l8 _6 |接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。4 V' g0 @, S* [3 N T W m, k) M
; d8 f( r/ p# U, ~+ l) @

) N+ G" k6 G3 f0 }) b5 s |
; N/ V- U9 i0 B3 G3 r2.读取CUID卡数据
# k0 [5 Q& X4 E将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。- F; M9 F/ L6 f6 q0 h1 G
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
$ Z. X0 ]5 W& B4 U% v( y- M6 f8 e7 Y. b% e; t
4 V% i2 {$ N5 J2 x. ~8 S2 g
. x- F5 p# q9 \& d; X1 x3.写数据到CUID卡
* r" ]' B q1 |再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。0 I" ?+ {3 r1 ~# p
再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
/ D: `- r- I9 H) e S
) z4 H. v9 n# M+ q( I. p1 h
3 m- ~- S; E5 s5 t& L( o5 _
7 |0 V: @ x! A0 B在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。7 E" M* \ _7 x7 P
/ u' c+ A! h$ Z8 s z8 H
) I% _+ @5 m/ L! B) v
( E6 v* y, H. E/ T+ h9 f' o# e
4.NFC手机复制CUID卡/ Y+ X7 W4 o7 r. }2 E+ T7 _
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。
2 i( }7 Q4 @. @
* w7 d' P; L' M1 e* `4 E接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
- A* T+ R2 R6 ~6 ~. O: H# Q6 H9 y% G" P0 c9 Q
$ q8 s: ~, g6 ~4 j3 s H, ^4 I |