记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。
9 \' _# r* o. z; e8 K% C
( O6 \% ^5 o5 j0. 缘起. B# A& [7 T2 H+ E3 q6 O5 |! I* Z
* A- b/ ~/ R. p" E$ t! c" R之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。4 O$ ^8 \( ]) p6 h3 s0 ^
后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
4 `( b8 Y% l7 v2 N, b6 u0 f! i/ }7 }; l; K
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
/ `4 d' X) y; w6 X B, _那个时候,我又开始怀念用手机刷门禁的快感了。。
- @- t. H/ X- Z" S) D' h2 i! ^# t+ f. ^) R
1. 基础知识, h" c& k8 o# J9 x: |' ]" J; ^
. e- r; Q8 M7 }$ b, h8 `; h于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
6 ]! n4 ^9 C' X+ C然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。. m7 y* A( |5 Y' T" q
如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。
/ g8 d* r% v% e/ Z1 ?% H' u, W3 w0 A: _) Y6 h% A) K
1.1 ID卡和IC卡
! P1 W7 D4 D, o; P9 |+ s5 E' G0 }0 J# H' C" |9 L
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。7 K5 N% d# t2 ^- h8 a0 H9 X2 C
! q/ A: z( a4 p( n
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
) t+ J' S# d5 p$ ^% C# t+ {4 H3 q/ a: Q: l
主要区别:. x1 ]9 b% J2 X& ^
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;5 {9 c' r* j* Y1 R
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
4 a/ I! R0 D0 N7 v3 |* B, e
' h9 h( r- f5 J' f% Z. x1 o8 GIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
, R3 U" f V+ I5 F* l% p/ D0 {; ^$ K+ A9 }# r! b; P9 H
4 [7 Y+ N% C& A. K; E1 s* I6 r
! ]: W$ V5 [. I S$ W8 |7 t0 [# @. F$ e) }
% H3 a1 }. C( h以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。+ D4 y4 \1 A6 @% ?5 X/ G' F
( w! \0 E8 I4 e5 T总结:
" |+ m3 {2 h, \, S, |1.ID卡多为低频,IC多为高频;; H( y. Z8 b! n) ` O) \
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
% k0 p# w6 s6 A1 b3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
3 ^3 u8 L. |: z8 K1 j5 D& B4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;5 J) H; u* \: {. Y$ O
* L3 g: {' G4 y6 U1 f8 U2 x7 t1.2 接触式和非接触式IC卡9 y3 D/ D5 E- i9 e6 T" F- A0 G ^: Z
7 X5 a' M# b- `& }% gIC卡又可以分为接触式IC卡和非接触式IC卡。8 A. `8 S# |/ S, @* O' w; X6 P
/ t. b$ H. N3 K% M- V$ l接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
% \: x. f7 g t% D( o+ l6 ~6 T. @& n( j/ I2 [( a/ n8 h3 q
非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。: F5 l' I) L- z# y# x! A. @1 g
, n0 A3 E" }( Q& \3 s8 \两者比较好区分,直接看卡上有无金属触点即可。' z Z! B; j; f, l1 U& g4 u' |
) a w# T6 m8 W0 Z8 ^1 u

( i& d9 d! z+ ?& e
$ I0 J$ w; b) l* @: K. w1.3 RFID和NFC
% @8 x# E0 N+ v: {! {
5 A. `0 t# b; X0 N非接触式的读写技术常见的有两种:RFID技术和NFC技术。
9 {/ {8 N `: M* c- X; @! ^( ~+ ~3 R/ B. V9 f, p" m* W
RFID技术:$ z1 ^0 F) g' f3 f, b' P% z; _. q
1.通常应用在生产,物流,跟踪和资产管理上;
: H7 G1 }/ n' M2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;7 C7 G# r. m3 v. b. f
3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
+ G& u/ B3 A% t$ `4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;/ D# W2 o, K- S4 X! V$ K
& E. K- Y! X4 H1 F3 x0 xNFC技术:
& x7 e8 D \* L; E* A; l1.通常应用在门禁,公交卡,手机支付等领域;
1 w. v3 Q4 g J* S2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);, j* f# E2 ` U+ ?2 i
3.NFC作用距离较短,一般都是0~10厘米;
l( {6 X1 p; T6 G6 I% b* ]4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
" S2 ~9 }, ?/ k) a4 K$ W9 l5 y! t0 g/ e( w9 L9 h2 m
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。
+ Y+ B5 r7 f4 \7 b1 [8 S) i3 e" |3 O- Q- b6 `
1.4 ID卡类型
3 a0 i' l( J8 n4 a1 k J6 V! u( ^' N0 u3 c# u* w/ k# u+ S) F
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:7 t- ~$ N2 P" B6 q- b3 a
7 N( v( e* ^; N" R3 eID卡: I, q9 Q: [% ?# F, E( z3 p
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;/ D& k" c9 n) @
( w5 M2 }/ ~6 }ID白卡
. M; L# D1 g" n4 t2 Y% C, ~EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;, v+ P. ?" j$ N6 H- S6 i/ Y
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡+ P4 U% L$ x6 Z2 d; Q
4 n" b0 c5 {# h$ Q8 LHID卡
/ o$ E7 t. Y, s, E) A7 l) Z全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;% R% k! C; |% x" H8 h
9 N" W- K0 K Q- J& A: W1.5 IC卡类型
$ I3 G' r7 Z7 [) ?" c
& Z, a8 k8 U5 z o" lIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:/ {% V; E/ }3 G. F. H
I! c9 }* V U5 |) NM1卡
6 l9 o" [4 }4 q5 b, D5 f! F; ?' p3 U全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
* M: j/ \9 W" Z0 K& Y0 v* `5 T8 P0 Z- ]* C/ w- Q
M0卡
% l7 P/ s2 o7 K9 A" `全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;" r7 [, G/ {; _$ a' [% N3 G$ D
! t0 s: p$ D" Q
以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
6 J6 o. \" A, x- F O, M, h. o* ]$ g h7 c& N# `8 c
UID卡% p2 e- H. W8 c. g9 I
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
/ \% c; Q! `! w但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
5 y, h5 y: U% H8 L. {: h; ~
: ?, ~! s' S3 P7 [. q, A7 sCUID卡& v1 K) |, W( R& |6 X% D7 K
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;4 ?# u% v( F( W* g7 ], m' B
近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;$ D5 e/ m' N* o! h& b
8 }. t; p6 R3 q' G/ S- C6 _: h
FUID卡& w0 `2 f2 z S4 E' A2 ?/ b8 @0 o
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;
, G$ E: J: {- }$ E% ~. P但缺点也相对明显,价格高、写坏卡率高,写错就废卡。3 B9 D# R; O2 p( H
0 L1 \* c3 N7 H' q8 s, v: d4 x: ^
UFUID卡4 j" k4 A* ?/ k
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。/ W9 }. H6 U3 T- u5 Q- A
可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;) \' e# r- E: z7 F
/ [$ q- }" Q; ?2 o9 i* T% N }判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。$ l# z/ T8 R9 n/ G" ~
0 r3 R+ Q1 B& J0 X. z) S! x) L产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes
0 j3 k0 v% m: z6 C a
) F& d( t" E6 `8 x' Z {1.6 IC卡详细分析, [$ B' W) `* }( Q
* F6 a* K: \4 G9 ~3 p% @
1.6.1 IC卡存储器结构
. a# d* W) e( L4 f8 m7 }3 t
& p3 C, k( [ u! [' ]以M1卡为例,介绍IC卡数据结构。' x; Z& G7 U$ l% d. ~
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;) o- g4 R$ w) h8 b
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;; W" T& d! k- s9 X
' i' b+ h; T" k' ]6 O) ~6 Q: u
* E, y) c0 }4 t4 M( [9 J+ s
厂商段( o" L- G6 j7 F, J: S- R: i0 a
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。; ]4 r. }- E9 _% W" u. r) v
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
+ u! Y2 [- K& H! X并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。5 T: s: J+ M: B5 g3 r8 I9 F# [
8 J7 T1 }5 o) [' x

7 t% i5 w1 x( c6 L8 c( B: C
% e/ B; h( A2 U& w- v9 K& ~4 ^数据段
2 }9 ?2 ^2 [: @ w& `) i除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。1 _% j6 ~/ Q S
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
4 S" ?8 V# p5 Z/ v值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
7 r- [& }/ y/ j
6 _' k5 a0 h5 `3 M
9 q) N$ z3 G5 z. @! [5 B0 e* t3 A$ g3 H1 A3 |
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。3 q& ?, M( {- w& k7 V
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。6 o$ R) ?4 a; t+ j. H
2 b: r9 M7 j9 Z, }# z控制段( b: ~6 \7 b5 Y6 u/ M( d
每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:' `5 x$ k& `! D" K5 L! G* [
, a7 P7 A. K S. {& ~/ S

7 ]3 V6 J, e/ h2 k' H
' r8 Y1 n2 t) _' ^! q1 S7 {如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。0 U- Z7 }# g+ l% e+ e7 {1 \
. S7 h8 T, r; a1 C2 C4 u, @% r
1.6.2 IC卡访问存储器5 K2 r* p+ d$ `# H
) c* F' m% t; q数据段支持的操作4 F3 I. B, }$ ?* g
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:6 E( S' P4 C6 j
, Q$ p& K+ Y$ `9 N7 j# m1 q
0 i, a: p3 r5 b+ m: L% ]
+ n2 |- d* F9 o, ^! S9 p# A可以看到只有作为值段时,才能加、减、传送、恢复。
- p) _+ Q! p/ r3 q1 j3 B- A4 V9 r' b
6 i2 _8 G. p) c4 x" k各区的访问位定义2 P: U- T ^3 D! G7 @# I2 Y
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
) |0 p0 x. r) C1 i- `& C+ ^; O访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
4 ?9 c" J# ~/ ~9 n, n3 P
! @- ?/ d% _) o/ Z: n" L% ~
8 m) w, T. V) h+ h+ z; G1 I
1 f+ t1 x. F' A G+ o; m" f访问位在区尾的存储形式' s R$ O3 t/ N" J' c8 e9 G" t
8 c; M! E8 c+ B/ M* A; S E

: i3 L" |# s0 m' E6 E1 E9 h4 J l# a7 P
区尾的访问条件
: n; e6 M8 Q! d, I* L根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:/ D+ N8 k" E& Z4 a
" y# v& @6 w+ c- e( f9 d- \ ]

. o: P) R" h$ A: W
3 J1 b& N+ s# B8 p0 j用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。* r5 B/ P" g- D' l" }0 C0 d( \
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;
2 q5 B7 K* {' e P又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;) g4 g: s( }1 g( V0 @
. U% P0 D8 Q1 w4 v# P
数据段的访问条件
a9 d; p* p. E& p) @根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。/ [: v5 I$ _: u" u, v2 s2 X6 m+ j
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。5 l' l2 [5 `1 [5 n5 A* S6 X
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:( ^$ O4 f% N$ o1 @; M
. p+ C7 Y$ z. i5 j4 t
4 N% I( `' z3 v) \9 I. i$ l
# H, j, [" _( C5 l% o如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
9 r; E' _6 G6 a" }
0 X2 x5 Q7 A" E. }4 a( q3 C/ b1.6.3 举例说明
8 ^7 f2 g: }- i3 C U. d& m9 u+ }* O5 y+ H7 `# `/ B, \
Mifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;6 w" [6 _# v; D5 A* U
字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
, i* h! c. s) ]
" G* x3 b6 g: A" E/ k
' j& F" A: r8 ^1 V) p7 l1 @* |3 @ @5 m( A' I2 ]: \
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:
5 h& v: ?- B+ I2 @* ~C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。9 a D- Q0 S& Z# m' O) W+ F9 x. N
2 \) e2 \" y2 n* H6 v9 C) c2 A
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;8 G; B0 k! e: ~( F# Z
C13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
: j! X; c% F/ d/ D1 \ M8 Q) R8 a* V. y8 r7 ~/ p) b
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;8 ]% n2 M) t6 X" Y1 v$ ^' t0 A2 k
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
. J" Q2 W0 M5 i( q7 ?8 i: r1 q9 l块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;8 y" e. U$ L' K( j
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;' H, j) ]6 m" t, c; D
- ]' b& F2 r3 x( o
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:% g& c- b8 h9 b' o
5 k D- }5 T! _* H% \- j6 w2 V

* H3 M% d+ f Z/ Q# H# T& f, Q# M7 Z) p: F
最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;/ f/ c/ ?4 X+ X5 G) v4 {0 B
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;8 A; e0 n# A6 k6 k5 j
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;9 ?7 @6 L0 S* f
7 U _! b0 m9 @8 g' P0 Q" _
1.7 非加密IC卡和加密IC卡9 Z$ _& k1 ?4 K# ^" A
* i2 u4 y$ l: ^2 X5 K非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;3 d2 d# [/ p/ N* Q8 K7 A1 A
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。4 `' `0 ?5 ?$ v# [ W, k$ g
+ F, i+ P& U( o+ U" u一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
* `3 _( u: Q4 n0 k; G( B: Y: L7 ^- K) P' u4 X6 I7 n
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。$ p: D8 V3 T+ [/ D/ D
因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
* M& l& J6 m# \$ O6 M" D7 [
) u6 t4 J7 U5 d3 ~# b参考资料:
1 j3 E: O' L# F; T码农生活 篇二:IC卡门卡模拟探秘
& z' N! v) J: T1 E% P XIC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】- e& b& h! \3 N. w; z7 Z
谈谈 Mifare Classic 破解3 U! V8 H% l& r& x
rfid-practice
; _8 I+ ]6 H) m. ^& t4 b5 o* PType A 卡存储结构与通信4 Y$ o3 E- P4 I; }6 G
Proxmark3 Easy破解门禁卡学习过程! h' [8 P( n+ z* M
% j& ^. D7 R+ r6 j. e
2. 手机NFC模拟加密门禁卡1 ^7 v' k Y$ q% f$ z
3 A! v! N0 ^/ ?+ x! M
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
! V+ N( J1 ? Y# x
( @' B6 n4 Q" @/ G首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
1 q$ ~5 t* O6 D/ l' U/ G部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。7 z! Z! o, X: V
' [' w( e% W3 R5 o9 x5 \% p
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。. L" j+ |# g; T
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。4 w! W2 M/ j, \' u9 U- @' ^
, ~. q1 G* `: k' v
1.读取加密卡的UID9 O+ g; d7 L7 \. s, x; p
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。* F& I3 @% T& I2 S$ m, f" {
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。' {, |! F! L9 z% B4 d
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节& E$ l/ a. ]8 z
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
) T8 t* E+ b& F: Q5 Q) {: P+ B# m$ T) A; c

( b1 L7 t2 |5 O, Y& J
) @( m9 ~/ o, }* d2 P# y5 K2.读取CUID卡数据7 m& k0 g7 Q) c7 B- D& }: q0 j
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。" N) c5 j9 ~. `" n! o2 q* C$ M, n
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
. D% a3 O6 ~$ {4 ~& D# Z0 B
8 u& x* }* y- l" A% F
# V0 o9 I1 L; F
+ q+ F- y8 f. J5 |1 ]9 ^$ A3.写数据到CUID卡" j6 m# \; G+ E+ d8 c" f
再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
. @' O5 y7 z; m4 J再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
+ C% A6 V* N* P* c) H$ ^; I# V. O; S. ^3 V8 v5 p, p+ [8 D' H

" s9 ]9 p& I! m( Q" ?% ] ^8 N9 a h' T
在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。# _; f* R# r1 A$ G7 F7 ?* _, M
* l# W7 {" P9 K" w1 ^

; a8 U9 v% p. i% O3 M a6 h* t: b" |+ i) ]0 t* s5 d
4.NFC手机复制CUID卡
+ m3 `1 G6 w% N+ ~9 H0 [最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。
& Z/ s' [& ]6 D: i9 [: Q; `7 P# o5 t: ~ q7 J. a4 b$ `) k( `( B
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。( M' Y9 q4 l: O3 u
. q5 A6 Z. K# @; r: y" L2 O9 [6 d
3 k) P: d, _% e) P( U# k! k6 E4 m( b |