记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。3 }& L( B2 |3 R% {1 D9 C8 P
9 G" M; n5 Q: j" W' g4 s
0. 缘起6 [: `- \$ t+ b# \! L
3 @9 i# ?) C/ |1 W, Z) R9 j' h之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
" s: k( a5 p: R后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。' Q& z. R2 {% a# `" P/ S
2 f& q2 ]% v: _; i4 H
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
* Z. S- d- A( t( n4 k那个时候,我又开始怀念用手机刷门禁的快感了。。* C6 F! L, a3 h& A: Z- S. D
6 @# m' v8 j: `! ]5 r( g! L% Z
1. 基础知识7 l2 D+ A, A/ i, V/ Y
/ |7 e+ T, t; C* p
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
2 y( C* v) |# Z) `然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
& ]$ H' ~% e6 T y- @" }8 @如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。
+ K8 m( S% Z2 l8 s w0 v9 s3 X
/ K* j- @2 L+ b7 o A1.1 ID卡和IC卡+ z2 S- d1 a+ B. N. Q4 s( h
$ t2 ]' \8 c' K3 j. v+ L% s2 h
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。9 Y+ z1 V) E9 ~; T3 b/ ^1 \) L
9 O# Y' w+ b! f% ]* EIC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
[5 l4 d% f6 b$ m- `8 ^. ~& X T9 {1 W5 Q- m+ M9 u: d h) `% v
主要区别:
5 f& |0 `" E G# a$ z6 FID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
M/ O4 F. y. ^IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
- `7 w0 q9 b+ k2 y4 C% G: c6 u# G
% ]% }9 O* s& K O1 bIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;) m! y5 o$ ^& J* q- q/ M7 ?
+ u- z, d9 V; j( n3 Y& P; H2 q

5 m0 u! a; [) q3 V; v: A3 b
1 D4 b0 P, ^7 T' x
3 n! O3 }8 V4 P& n8 V+ R( Q4 w0 S1 m& W# m; T( {; k; m
以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。
: R/ _) M7 w8 X; E- C) V# u
1 m% i/ w1 F$ r4 g& e/ E/ o总结:: w4 V# d: L w3 v$ A1 o. ~
1.ID卡多为低频,IC多为高频;
8 ~, Y; a/ O( ? S @' t+ j2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;! ?9 g6 T$ H8 O
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
/ W) C# p+ i4 I+ g% V4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;0 C* Z3 O9 k/ ?7 P, Y9 H
, P9 t) B. Y: O% B0 R& X. r& F, ~1.2 接触式和非接触式IC卡
* Y2 e9 X6 z: R' @* ?+ N
- k6 z1 Z/ o+ d! k/ m- L0 X" Z _0 F% mIC卡又可以分为接触式IC卡和非接触式IC卡。
; B) t! K5 y3 q, y* w- x" i, E- J9 f& Y) v' b9 ]' Y5 F0 p
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
* {5 |0 D) C: W. g* h* ]9 E1 K+ ]% ]' l* b7 E: i
非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。) a( b" V' u# j+ r. [9 g2 x) m [
2 j$ n; x7 `9 k6 b两者比较好区分,直接看卡上有无金属触点即可。
O& z& ?9 D) ^, Q3 b+ V3 [4 G6 {& x# p( o2 w. f! K

) |2 w' q) C% `5 ^# P' P, y" [/ c( ]
1.3 RFID和NFC
) ?6 H* s# N+ K0 A2 X( e
; j& ]/ R+ i" i/ n2 v+ E非接触式的读写技术常见的有两种:RFID技术和NFC技术。
, [; [* F+ [+ e( y! Q, X8 y! Y; S2 x/ R+ D2 y9 _# z
RFID技术:: g* h0 Y* D2 _: D6 l: k
1.通常应用在生产,物流,跟踪和资产管理上;$ [0 z) E3 {3 ]$ b% V9 O
2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
c3 a3 x% I3 Z3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;; G4 E; Q4 y# R l/ J" j
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
@, V9 R5 P! K( C. T( z- M2 i' \+ w* r* w
NFC技术:
, {$ p2 K! w1 z$ _+ J" n1.通常应用在门禁,公交卡,手机支付等领域;6 D9 h* s! @. I* |/ E
2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);. D% E: u: b2 k
3.NFC作用距离较短,一般都是0~10厘米;, T/ w8 V0 H. ]; d6 Y2 x
4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
6 A+ m6 R2 q! l/ C% R) Q' C+ }
a4 x2 E# _9 K& s总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。+ v5 c4 \+ }5 @4 b* p) w3 n
* q9 S* C4 W4 U/ O- `3 y
1.4 ID卡类型
+ ^3 D2 L( q4 i2 N9 M
3 i, j4 r/ y! Z" P& HID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
* L3 x# C3 d! ]1 S9 X, [# G, w3 R$ ~- Z* a7 A: l4 B* i5 }
ID卡; ? N: u( B$ h
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
4 t- B; ~' l' M/ h9 u* j8 h6 ]" x8 {4 Y
ID白卡9 _. @3 r$ v, n/ K! i0 r2 c8 m8 d
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;5 H* Z2 s3 e# c. f" m- t/ c, g$ K$ b
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡+ I w" H6 D) v, T! [
& k4 X ~: O8 a2 n& h3 U2 {HID卡
6 D6 X h3 X9 b+ l8 P全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;
5 x- \! s9 D* M* Q: a8 ], I: ]
3 h: P' Z7 F1 d1 @0 F* _1.5 IC卡类型
|; {1 s, u; U% k
) c7 w2 A$ K4 q- bIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:! W4 C4 o' X5 N6 W3 X
1 c2 I' I* H' l% m
M1卡! G: |& } k1 I" u7 g: Z
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;9 F& B. T) g6 \% m! J
* I; [7 W+ S/ `
M0卡! D: @2 O6 U& B- K, ~ s B/ N. A
全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;( E; W( j+ x/ A0 u
0 t( Z2 M! _) {9 m9 k n以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
; e9 D) P# J! T
- j& I; d/ m8 v- ~8 pUID卡
/ ^4 B( W6 c9 V, e2 ]' C4 n" W全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
) `6 r' q) v# h! m. ~但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
% Q* ]3 Q$ i) }8 x% J. p7 \% |5 w4 h! N; r3 r# R- M2 }. z5 e
CUID卡- u# b! r( W4 P9 z
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;2 \9 e; w3 v) G N: O% t
近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
" _9 r8 C( K) x9 U* N- h/ J# ~5 ` \% v2 h7 }* D& ~! [
FUID卡
; G& ~7 i- a4 n5 `" z+ j0 u, l0 ^# RFUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;2 i4 c1 L0 {8 i& ?! X
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
6 h& p+ q( a' d( c
8 ~! h! Q5 u+ c, `# E ~UFUID卡
+ _: A1 D. G# x集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
, t& L2 N) U9 K; x/ ^可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;- Y+ k( f% k1 E
' t0 D" e0 m2 j/ a9 b! q
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。% S0 ]+ U: f' [4 K6 n( ~1 E1 @
+ p* a- N% S3 H% j6 x* \
产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes: |4 w ^/ l0 O' C( S; U/ s. Z n @
7 n4 S* x# x+ L2 e# f) k2 z
1.6 IC卡详细分析1 X8 f9 l0 |7 r) P8 Y
2 Y) {/ D! |% ]! L# G
1.6.1 IC卡存储器结构
+ k7 X# a+ U6 n+ x! k1 k9 ]1 C9 e; y
9 q, B" H" R" D1 x) o0 f0 t以M1卡为例,介绍IC卡数据结构。( V: Z* V; h! a) |
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;
& }* c7 B9 T) ]每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;6 N R1 H# }; @2 A; s! h! s
( }; o9 q; ^' R4 L4 P+ w" r+ F
4 `0 m% U1 f1 [) d3 f% b" Q" {
' |, Y; s. Q! s$ f: X$ @
厂商段
s- _3 n: o% f0 ^) ~每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。* `. h# j( Q( a3 t& K3 k
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
" v. Y. M4 {2 c2 D5 [9 |0 C9 d并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。: n. x, N/ t( c- c3 H
0 g5 U& D( U9 W. n& G
Z% @8 U7 C" H& T6 j; c) L
; p: ^% N) W l8 _数据段
?: L, B/ P5 q, h; X3 r3 z除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。
4 {% F6 k' C1 m3 A2 `5 ?5 t, z! B数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。/ I$ X6 U) Z& i/ k1 {
值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:5 j* X0 l( L* h2 N7 m% a
, h) n( t' P% i& L8 V# F2 l; @/ B/ k
' U& b( S( u0 ?. T
7 [3 b' \& X) C! d4 V( ^Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。
0 u c/ v1 g4 s }6 ]/ p; }1 B& |& rAdr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。& _! `" i. K* v& }5 ^* _% r4 M: F
2 T. o" L+ b) W8 E
控制段
" P4 Q/ ?3 S. Q每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
: c6 x. W; I6 A* w0 X& q' _( b# S" O

( D& Y8 r5 V8 e0 W! E( D6 V' r- l4 s7 A9 R, i% x( \4 q
如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。
1 G' ~5 A1 j; t" G/ Q/ A1 ?9 n n
1.6.2 IC卡访问存储器
6 O. N/ U- C+ C- Q
2 x. Z' [3 C: v5 o! L; J数据段支持的操作& f: U: n4 l3 \! l+ p& W, ^" |
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:6 j; p) P1 Y' }: Q
& x4 ]3 j% L+ O4 z

$ q- V7 \ C; G* V% J
8 {5 B& H+ D$ K+ L0 p% w$ a2 ^可以看到只有作为值段时,才能加、减、传送、恢复。8 x: h Q# R; l& V6 V
0 O) u8 M, U' F2 F9 \: c各区的访问位定义
( j& a2 P* ?! C# ]( M+ C6 [每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
2 B9 t- {) C x. M/ k# }2 b# y访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
3 j' R8 I, ~: t9 z7 M3 o
$ {2 f1 U+ ]. e |4 r1 R# T& a4 K/ v8 A' V2 ^* q# h( v w
; w8 B# z) `* G, r" q" V
访问位在区尾的存储形式: c* ~. T. d1 z: ]9 C7 S1 K2 \
( A$ o, d9 k; d+ l/ g
" p/ J' k C: V
' c% _& [+ e6 \9 P" i区尾的访问条件1 `+ j6 e* L/ A t, P0 T7 r' V j
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
2 P. i2 X8 k! s- \# W/ h! M& O2 f' k

6 g8 M% N6 m% F* V1 O
7 l& v/ ?! K8 }* E* _用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。. g; F2 ?, W. I
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;
: @) P, j7 ^) `! @又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;' o9 o+ ]4 ]3 i' y/ V4 o4 c+ x* Q! j
* W7 V4 }8 M& h. e+ s ~5 l
数据段的访问条件$ C) e1 q; D( O) \0 [0 P; i
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。9 v+ M8 G' z( G. z# y/ J9 `
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。
' `( @/ t7 U% R9 L) r8 I# ?; f2 R其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
- k$ G; J0 [; L% h% J* ~" o5 P! w- r& h- }
5 u" x/ C2 C/ U. E* D0 @0 c
; t6 T5 r1 X4 O, `2 w
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
N# z% ]4 W; q) x. j8 H; T( P) G( |* R: |9 z, P' ~- \
1.6.3 举例说明5 V2 u4 H; v. f% c+ I) l, v
& k( `5 L3 t& @
Mifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;- [9 u# \$ a# p2 _
字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
0 X; k' s2 m8 b* r! d2 k% c0 r% O7 k5 E' j
: f! g$ L) J2 Z; I
& R1 Z8 i, W* g: }+ c" M对照前面的访问位在区尾的存储形式图,可得知访问控制位为:
, S! r& ~, a0 o. T, n% dC10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
; W0 }2 L- X3 M
8 H* ]- f2 C9 b8 p. @$ |5 u i6 oC10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
- j K, y# A9 WC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;! c" h$ J4 k* T1 W% o& k
2 L; P0 i( h3 G2 Z9 g7 d
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
" G' @. D( }$ w+ L% m2 g/ n7 C* ]* ~块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
2 ]8 I1 L7 r( R. i p+ L块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
8 G4 n, k* b' }3 V$ \. b. Q: G2 D块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;3 n& \4 `( y9 x$ c; Z2 X! v. @
* ~/ a1 ]" E z
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:7 J6 o$ J1 O2 B: ?. c/ e
4 a- ?# B. r& f( J' ^7 d/ W; g, R! e9 @9 _1 D% F$ ~
( @ F6 h9 g% x3 L; N
最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;0 j. r: i4 W5 ~7 n$ s4 a
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;- _8 d" h) ?' b
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;
# }" U. a, V2 x: I! m) A8 g1 t: ^9 |9 z; A* T/ \9 Y
1.7 非加密IC卡和加密IC卡
) I: R+ e7 K- I ^4 G" n! A2 ]1 R* y, } p$ s; B7 z& R& P
非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
# T5 C$ y! E/ y+ u5 T% p7 v" ~: A而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。1 [9 ^# o5 f6 Y- g- w1 M
( v) u. C2 h3 @8 R一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
9 i4 {. u0 n! L6 Q; d% H5 o: ~; l$ U; X
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。; M: v( X- f) c
因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。5 f5 N5 n5 [" a( |; P
- U% m7 X4 Z3 m
参考资料:, r' J4 {5 B" F+ K
码农生活 篇二:IC卡门卡模拟探秘. T8 x% f/ |( X
IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】
) g- k; G, Y/ ]# B ?% Q谈谈 Mifare Classic 破解
2 N1 j y( | o4 r+ @7 d3 jrfid-practice7 _' D k5 W, y: b5 C. h2 A- C
Type A 卡存储结构与通信8 i# `. R+ @7 @3 n
Proxmark3 Easy破解门禁卡学习过程0 R! E- O4 I- i4 F
. S7 T5 y5 d. A8 g0 ~
2. 手机NFC模拟加密门禁卡
: F0 ~6 g; B' v+ q$ m! J! `: v& H: `, K
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
5 W6 I/ L# Q2 y" B. {+ D; C% `" x# O$ O5 U, U- H/ r- A
首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。* l3 _0 [0 |6 j$ j& k
部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。% x1 ?( r% i) e
1 h8 t% b; M) C$ C8 L
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
$ E7 d4 `) ?- j# U6 u在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
7 r6 N0 k' ?6 Y7 ^ A5 y2 r2 |7 K5 e. Q5 i
1.读取加密卡的UID$ Q* {% o. M5 a
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。% \7 r9 P9 k3 z' Q" ?
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。. V9 ~! c8 F2 }- V
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节
) |+ i1 i1 `, p7 ]6 S6 m接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
" X0 f& L D0 y* r3 _9 x- y
* {5 A6 y0 |* P# Y- @# H Q/ }- c& R- |# I$ ]9 W: V7 G
8 p) @" z! [; d5 G2.读取CUID卡数据
1 ~7 s8 G- j& D }3 w) ^将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。
4 O, d2 }8 m8 y& @接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
" V. Y' m3 F- p& N6 v5 j5 X; q7 U5 J: ?% ~; Y+ K
5 ]- `( @: D- w# ~6 U/ i" E- e- @* P
* f$ f8 D4 n6 v E3.写数据到CUID卡
. B$ ?. l8 L _; S2 u- `7 ^再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。& T; g( U" I8 e6 v o8 [; M" R9 @, _
再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。8 a: i7 x+ W& q/ Z: \5 B7 g5 I
$ h# h" `$ U$ E4 x" l8 @2 L) ]0 m, Y
, f/ ^0 V! w6 d$ @* K- Y8 f) l; L- L7 i4 {* N. U
在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。" L1 F& ?3 \, c1 e8 _0 z- i; D
+ @. H5 E8 g% g$ K) p5 d

3 m: t- ^/ l0 p" h3 [" O( {) t& b
- p Y, W; i& T/ w; h# X4.NFC手机复制CUID卡: k/ O( ^) m" r! o
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。
& A% E% _. M9 A. m0 p0 k
6 B, Q8 }) d% j! h; ~接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
' P, u' Q6 O' F) C7 V
+ o, e! G# v) i$ f; k: j7 Y: A, p/ b4 d8 e
|