记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。, _1 `/ m8 q* Y) A3 `2 p( U
# @7 b1 s9 F% W0. 缘起4 c8 |" S( M+ S, `2 j! _* O
9 A; j, P3 j% Y8 m. K; ^之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
/ s- f9 C, Y. a' F. O1 k. B. m; }后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。3 A8 H3 h$ k4 `. R
$ ]- W' `4 x, E E9 Q
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……1 o8 ?* H5 l. F- L. V7 b
那个时候,我又开始怀念用手机刷门禁的快感了。。9 @( ? X# N) v( w
: C4 M" z. I! |0 R! ?/ ~1 L1. 基础知识
3 T0 q2 h L, l8 J1 Q& q% d. O: \ m
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
- z0 A4 t. o& Y7 ^1 A然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
- G% m& P0 x: g" ] Y$ {如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。6 \0 y: D# b+ o0 }( L, ~
) k6 R) e' V- j6 V2 X; Z. ]6 z* R( U1.1 ID卡和IC卡
2 E( x. t0 D Q) r5 B" q" {7 N- H4 A# c) A0 I ?2 ]5 M& T
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
: `* ?4 q* ? r8 v5 i* w( f/ d6 O+ C6 B- i
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
* v! N& u5 q. Q0 J! o9 T) r& }# S8 s
主要区别:0 Q/ A$ ?5 `6 ~0 c1 g
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
& y& A- s& C( o0 ?! RIC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
) z3 h( i6 Y8 y3 t# T& h# _" _) r3 H
IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
9 j5 z0 h& I; l7 p. e0 W* Q
h4 ?0 c: s; r4 \" ~/ I+ A" }) o
" [, I) D" d/ ~1 V# A+ z
8 K4 ]! i% j% P; Y
& H2 [' Z4 J3 G; H# }6 i. }以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。
2 m; X" K$ p/ A, h* @" b- |7 b. z4 F6 ?+ ]$ T
总结:
* _+ A6 w( L7 s% T1.ID卡多为低频,IC多为高频;
5 F/ W" r8 a) \$ C: l7 A9 P2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
4 {# f( H6 d% G" n3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
! J* w U! L2 K. s4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;$ H* {" n6 P5 |
4 f# [. c$ C8 T* g& p& E. t1.2 接触式和非接触式IC卡
: X5 E% O/ n7 C' _7 ]' Y8 E6 x- X/ P+ E- d8 g, _, v0 \3 ]# @! M
IC卡又可以分为接触式IC卡和非接触式IC卡。# k- E- s7 }, J; I# ~5 k
0 r; v) x) l: U& a/ a; _" r接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
5 |; w) R3 B5 n3 W I& b9 |/ t% |; ?. _
非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。
/ g2 Q& t& [& s! S$ G; G4 Z7 k7 `, H' h& P8 ? J: D
两者比较好区分,直接看卡上有无金属触点即可。1 [% g$ A, b6 \& e
4 w; L/ m" _& }! _2 Q Z
( V# r, Q/ S, q9 E1 `
9 z- v' I/ |7 v: @% I j1.3 RFID和NFC
# @ n) E; D t, y: w) t1 v. ^1 \' G; o! x
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
1 X5 Q# ?5 X$ Q6 i6 f. _7 E) p" A1 e9 z/ [# M' \
RFID技术:* E* `3 s. x- j
1.通常应用在生产,物流,跟踪和资产管理上;
i/ T6 Y9 }' E2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;" c( j, G$ r( @2 J# l1 @! m
3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;0 r. b6 h% O% S& D1 W/ J' G
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
- I. n- K8 w# ^' a* X/ ?2 l+ g) N" @; B8 t6 p9 {2 V# {
NFC技术:
: e: q2 \2 w: w1 J8 A$ v, g9 O1.通常应用在门禁,公交卡,手机支付等领域;2 m+ w: j. R! c
2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);
, N/ ~5 l6 R! D0 T3.NFC作用距离较短,一般都是0~10厘米;
3 W3 G! F [/ S* r( ]( }1 H* [4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
4 \/ z# C0 |4 @" U5 Z- v. O* y6 ?2 I$ m6 i
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。
; ]1 z7 K) P- W0 i! Y( N1 U7 Y
0 L2 @4 n% C1 S0 N$ ?1 e+ j3 c$ H1.4 ID卡类型; ^/ N2 i7 W' C8 {4 \- n- c
" J* `9 q% ^8 z UID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
6 J% p4 x3 C* l% s6 Q; s
3 C0 x' D0 Z9 @' x! F ]. sID卡
- T+ I( d$ S2 l$ ?( @0 PEM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
. T2 f1 _) K0 ]6 N4 ?6 Y
& X$ T2 _4 U3 ~. X2 y1 M$ DID白卡
# u( p2 [" `+ bEM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;. s* N4 U) B5 ^9 d3 i4 Q( ~
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡
, s, a, H h2 g1 h, e* T0 l6 t- J# D$ y7 f% n% O* e
HID卡
; O/ [$ i b9 T( y. o全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;
h! }6 x- D7 }6 m
9 V. h4 ?7 _4 s1.5 IC卡类型, s5 V. I- O( U, w( P
" M! f# x; R; Z. Z: h0 iIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:% n" X: e; c1 v8 r. I. X' [
- _3 @; g0 w% c' u5 k0 ZM1卡: b7 @0 @2 a" L$ \/ r
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
( ^# j9 Q; ]4 F& e! Q( N4 q& E" l$ _. Z: T8 m1 \8 X
M0卡
# ^( e3 E: Y6 |/ h4 D9 A7 z$ p全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡; P9 g, a, U6 K% N. n2 y# e
9 u+ r( n: j* D/ H' q4 p以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
4 i7 y9 i3 Y9 g5 J8 [* Y' t: ~; l6 ~# j% `2 E/ \' z3 k
UID卡
, I: c+ N0 X/ I8 H4 y" r( |全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;' v+ l$ q, z8 P% L9 {6 H: N: S6 I
但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
# V( i3 ^0 {+ C" Q# i, a4 Q, w. b/ _3 y- M4 B
CUID卡4 y7 f) c: V! Y' ~
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
, }; ]7 H( M2 H% w8 c7 Z# @6 \6 v近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
# p. g' _3 r- G* q9 P+ \( C; j$ }3 b
FUID卡7 i% Q( I4 N( V- a; c, v
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;& S0 k8 E& p; T) g. ^( l. ?
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。( W" a' ?) c/ X/ s* ]1 o) V
6 ^$ K$ i( w1 w
UFUID卡
. g, [9 h4 F% ]* C- [集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
s% E2 \$ w# }+ B; ]9 s* { D- b可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;3 I8 c' L2 _( p4 T0 y
$ V7 L- J5 m! ~' }( ?
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
$ W) z. ?) a. [) ?& M1 v* @
4 @' `; X% M. g4 ]$ m& X/ K9 p产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes0 i9 j: ^9 g' v) ~9 u# @
0 W" i% B# v0 g) V F1.6 IC卡详细分析( q1 _+ M4 ?& t* o% {* _
* A) J# `9 F( w1 Z
1.6.1 IC卡存储器结构
' t- v, Q) ^! l% a8 F
3 H& H) w$ v+ x4 t以M1卡为例,介绍IC卡数据结构。
# I2 h" K' v- J& mM1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;$ S" |, S3 g& M8 \6 F) @) C$ Q3 g7 Z
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;# {; A1 @$ [/ [# N8 U6 Z
$ v! K$ r- G( |6 g* ?
2 L, l7 Z S' J; a) ~. Q
( s/ p; D/ Q* E厂商段0 H' l) g6 L7 |. Y3 B b
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。
, ^9 b+ w* O6 d& a8 Z9 d其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。+ \; O! I" E- X+ R* v. q
并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
2 N+ a' l" l8 [. c! h
r9 N/ Y" S$ x/ e1 h- s+ [* C2 h& Z. M, t2 X$ p5 A
7 t/ B& {# W1 e# z ]+ h2 S
数据段1 L- L. ~, D+ L/ s
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。% ]: q- P8 ~) _" P6 \9 V( G' @% G
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
( ^& B d7 q0 e& n7 \# u& b值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
0 k2 {4 b6 `9 c7 Y+ B0 C. W0 C) b+ f4 S' O, ~5 N
 q# [# h& _3 K
4 \; S! x# |4 ?- y3 }( B! K& W
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。5 Y7 G( D. [0 D% {
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。+ S9 h8 ~9 J0 r% R
7 o) B2 ]3 l# a! y2 J. X! D. J; \
控制段
9 q! G' z) E% j& H: [! }: D, R每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
1 w& R, P. R' r
# Y! U2 U ?+ G( G1 q# j3 w- Y- E) J
* s) k2 s6 Q3 \& O: y8 H$ @5 G如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。- R+ s% s& M/ z1 c: T: k- v8 s
$ k9 e8 x( ?2 h6 C
1.6.2 IC卡访问存储器3 M' q3 O6 ?( \/ h, U: E
* \9 W. q( ~% P. ^: F& F数据段支持的操作
, k2 f [4 X, ~- G5 C根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:+ @% R) Z& G3 [7 }# {0 i1 W* U/ _2 b
. ?; S# O7 @7 Y+ Y, U& k$ V+ L
$ n- Y8 k+ z1 P
7 d( D, |1 V1 F; f- V" N, U: z. o ], @可以看到只有作为值段时,才能加、减、传送、恢复。1 N V! }) l& e, V, ?+ \
) Z& ?/ z3 B/ w3 [: {8 z! a
各区的访问位定义
% r1 _9 w2 d: _( C5 q Q o+ i* w每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
2 m: }" H" _# d! G' `7 Z访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
: _: C% p/ n5 E% T9 ?8 a4 ~ w) l8 l2 \ T9 Q4 d
; J6 h( o5 U+ T
3 p. S: J7 @9 M, M- B6 y6 z# b
访问位在区尾的存储形式
, P6 ~" @/ J( F- B, a
) Q- K& @8 D6 j8 h' s: R
B T% G0 L4 L* g0 T$ P' R7 D8 ]) ~6 z% h! k
区尾的访问条件# G0 j# j6 ]) @7 M* a8 ^, d! S- V) b
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
+ U) t1 ?( W! o M5 J, r
4 v$ R/ L# b3 f2 f# L8 J4 M( Q1 _# ]: a
8 Q4 b3 g/ T: n- a n* ~
用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。
3 G2 N# c( L( K, v例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;
+ f' Q5 j, _1 R又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;# w2 g ]+ Y8 N4 |# [
: j6 v H9 p& x* W4 h
数据段的访问条件
; v2 `0 F$ B: ?9 q5 j根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。8 Q S3 [+ G$ D. X, h
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。& X3 Y6 f( m' t1 M' c/ V M
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:4 C; S- A# p" j, n v! P- f0 L5 F* {
0 H( w, r3 D4 u# H/ s- ~# l/ \5 I% w4 C1 m
3 h6 X W3 c$ }6 x# b9 ~' v! M
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
+ ?8 a9 a" ~, |2 C5 e/ C! u4 s# _" {
1.6.3 举例说明
- V0 L H3 b) A
$ }7 a3 z6 I4 H5 ~1 CMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;6 H e I& L* x# Q
字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
% h9 T l; B+ y( _" I& Y/ |# m; [; |2 V8 n) M; {

1 {9 t& |$ N! \; ^
* K7 p% c: }) u& I1 }6 ^: e对照前面的访问位在区尾的存储形式图,可得知访问控制位为:
( {; Z8 v. b% Q1 RC10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
* o% a0 K7 @4 r4 N$ J& T1 Z7 i3 F4 i w. T
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
3 K0 n2 w y8 g8 ~" I6 a6 T: C9 lC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;: ^4 h9 G" W0 l1 g; ^! T
. D$ r; b9 y$ H% ]. f' [- A块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;1 f% v h0 e5 u4 s
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;0 m9 D4 m. O% ]! k8 Q
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;( f/ K5 o0 {3 x. S" [3 ^
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;
2 Q8 b) l# B$ G, W$ d9 L7 i- Q3 k+ q8 m: G3 J+ Z
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
" f: b5 g& C# e; T9 j( {; `
) c2 T8 K! g3 U j) x
+ `' ~" |2 }4 h& X1 l
: x* o! m8 K- Z4 o最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;, F2 ~ [/ `& |
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;
9 X, m' i) q# @+ z9 T中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;" s; m. n* T# X9 F4 B* x2 s
; p# {! q% T m4 T6 G) j1.7 非加密IC卡和加密IC卡& W' e) h: t7 Q; J: Z: w
$ R) @- c8 s# i( B1 B# Q4 `非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;) k0 T- x3 R+ q! g( Z6 R' q3 |
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。7 G8 O0 e! s: r3 N
7 [; Y1 _, B8 x& [: ~2 [& q
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。4 {/ Z% t3 ?" v; Y9 f* d1 d( H
5 q4 K6 b4 `; Q6 t
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
/ {. N$ d4 a6 q/ I9 l) A5 B' d$ q因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。, o) p Y$ K7 L7 P/ u
0 c$ U* O) j& x3 j7 I参考资料:4 s; h! m2 J4 g R! s2 ~
码农生活 篇二:IC卡门卡模拟探秘
6 Y/ j) J2 G: F0 r) S- A6 IIC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】 I3 l, |' J4 m1 ^
谈谈 Mifare Classic 破解4 R/ _% N! }- j- R+ `" p! r
rfid-practice9 S% D n3 E# i0 k, o: J4 A
Type A 卡存储结构与通信( y# [0 D9 }1 k! |* T' ]5 @; J
Proxmark3 Easy破解门禁卡学习过程
; `* Q# b, o4 U" m) H% N6 y
( u/ @5 f2 \+ d- \' f7 n/ Y! M2. 手机NFC模拟加密门禁卡! R( y) ~4 A1 v6 \) B' E$ W
0 Y& D( R8 l, `0 N( A" ~7 M: G# t有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
; g0 P8 g' g' Q
; l2 t7 U7 |/ {9 \$ i首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
" Q0 C1 j1 { |部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
( D" T. ` i, ?* z6 Y1 @! p. d6 Z$ a0 c/ A( _
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。0 e1 a- B$ Z: Z- R) _% n5 r, G
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
6 x8 y* j; R- c
. Q" ^2 c. b p0 o& Q1 a3 P. _! }) s1.读取加密卡的UID. Q6 _ e, o d( {
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
a" `. _+ E! F6 G8 E注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。0 ^& t1 @: G+ ?6 F1 ` ~; @
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节) {& a1 y+ ~: g8 Q, q$ P
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
0 `0 l/ |/ ]' D: K3 l8 @1 m7 P4 W4 T3 N+ i5 S

% ^. d' X# C3 z4 U. C% F+ T6 x& q' \$ T$ y' Q: o, X- l- Q7 D
2.读取CUID卡数据
& K$ W& d7 {: W# a- q6 H' F将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。! i) i1 y( s1 l- k1 m3 h, u( \! p
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。! e; | [) {* J1 Z. l- h
7 ?3 ^! C& { o. \
, g- D# ? T, V! H- S3 ^: M6 d! F. }% ?1 A" ~: U
3.写数据到CUID卡
7 m5 m J7 g4 y7 G再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
. A" E4 H! T) K4 |" v再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
( M! |; j& A' X- N9 ~% D+ x
( w, n+ a+ Z. }& P0 y6 X' g% O% f* p- k% _" O7 Z* f
& s0 z4 v% L) t8 z
在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。3 a$ s- n2 X/ n3 \ Z" ?
1 o8 Y4 I# l t: n

" M8 C. E1 O- d4 f% X- F! H+ M% q! l
4.NFC手机复制CUID卡
/ m2 X8 p. d8 z最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。7 E3 C" t- T/ F2 k! q6 h
2 ?/ L0 Q" L+ p5 T8 ^接着,就看运气吧,我小区的门禁系统就只认UID,搞定。' L* v" t# Z& ~8 `0 b
- o' [+ ~* i/ |6 s& g
5 T. S' ~0 Z, f* G# O% w' u
|