记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。
4 |- D3 O! C( Q. A8 j- x' F
1 G* R4 b% g0 @. F1 E; ^0. 缘起
E8 Y2 W* h \" ]# }% } \6 g% I) ] c8 k( D7 e4 @/ o3 y
之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
% j# P9 w( o: l e" K: W1 \$ w后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
7 u) I; `+ |! w/ ?7 H; w' C
$ v% c* S. V. W* e, }+ g" Q$ ~" N& c/ h新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
9 S& E; S h) }那个时候,我又开始怀念用手机刷门禁的快感了。。9 ^8 G/ @* N A
+ O J: z( ~4 @) j! S& j ~
1. 基础知识7 m5 T* [7 Q, e& D' `
' E D8 L' ]$ ]0 K u6 `4 O* }
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。4 z" a! n ], @1 F
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
$ K G! W; c' Z8 [如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。
3 h! s: y9 H% O4 e# f! q1 [. `6 Z* T* P" s; W' Z8 P2 s. O* {
1.1 ID卡和IC卡" c$ ]% d1 B m" E
' H3 `, \% r ?5 g6 U( }8 c
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。4 R+ `6 ^) u6 L9 E9 R/ {
S2 \4 \# i" R) f& y: DIC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
9 t# K J; F! S5 S- p0 B& k' W& |- A2 J5 w2 j/ J
主要区别:
) y* g# J) Z" w* M7 J& q @' H( SID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
0 C. U0 g* x- QIC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;; j# \3 i; A" g" Y) S3 |
2 s) b% x6 k2 E6 K' N uIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;) Y$ R. ?0 t4 C! q! _! Y5 ^
4 D$ V/ c5 b4 {. E
8 X6 ^4 c4 J2 X$ f% B
- p) S; ?( k' S9 [
, O) z9 P$ r0 u
& V- Z2 L& z; P4 o) p+ f4 H以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。5 D e Y: E" A1 U% z8 U( g
# n1 t5 \8 c' _- H; t m; h& F
总结:5 [( N' X- @+ ]3 |8 l
1.ID卡多为低频,IC多为高频;0 n3 W9 f% j4 y; J& o6 Q0 o
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
* B R5 k5 a; ~' D: v3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;) |" ~8 d% u5 m4 @8 f' t, Y
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
+ E% l, [" F) r# _" b2 v* W& Q& ?3 Q% Z3 P3 V0 e
1.2 接触式和非接触式IC卡8 |" d- e0 Y$ X5 J# w: v4 [
/ D+ X" L4 E9 h7 v( d# RIC卡又可以分为接触式IC卡和非接触式IC卡。
. E! p( t, p+ p" J# s' \( [& k7 Z& }, g+ G; C
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
2 _( O @4 H* \6 u, U# Y' h: v5 \$ Y
非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。, ^/ |3 m- E) `' V, B# u4 q" ^
) p5 F7 _, v+ t+ O+ O) U4 @$ F两者比较好区分,直接看卡上有无金属触点即可。0 Y8 x6 U0 D9 M3 d
' W. p. ]" e) Q) | B2 O, i( C: ]+ s$ o4 E9 G/ u$ F
' K$ S! p* z& u" c) b1.3 RFID和NFC
5 U* o' E1 u2 H i3 M' Z( A& y' \0 p$ A. ~( e3 S' X
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
5 ^5 h9 i* F/ o* `" X7 O: }
2 t8 Q( j9 A$ f+ F. g. a9 WRFID技术:
3 L5 C! a+ D+ K$ c. X) H% d1 c1.通常应用在生产,物流,跟踪和资产管理上;) q- s' g- J' O9 z- Q" k+ L9 l1 B
2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
: c A( s3 s/ j, O) U0 i g# v8 B2 U3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;, P1 [% `, n' s
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
+ |& ~( P, W5 u7 Y4 g3 n3 C: Q3 a2 a6 R: F8 p6 M q% s
NFC技术:: E7 p" G3 m% O6 C4 T
1.通常应用在门禁,公交卡,手机支付等领域; y2 P7 w+ \& D+ e
2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);* c p! o; u6 d) o6 M9 Z% f7 [
3.NFC作用距离较短,一般都是0~10厘米;! C/ b$ P/ V( }8 d/ s) i( \% l
4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;) J* i9 Y* a& k6 w/ t' f
& G8 b2 I" x: B
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。
# Y# U" r+ U3 H4 l2 _1 M+ L8 [8 Q) a4 k) C
1.4 ID卡类型
$ E% |$ F9 L B1 ]4 U8 F( \! I {% ] y
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
9 ^2 Y0 E/ _, Z; Q! }4 X! v7 H' B2 f3 n
ID卡
2 @% b( B, q! @4 N% bEM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;, l- c; i+ I9 ^1 z' O, K! v
6 a' G! u# N MID白卡( Y$ }' R3 `& g% E/ c
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
. ]0 K+ X+ }! y0 a) |T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡
3 m( z- d* m; n! A3 ?0 h4 T9 ^% ^$ V, t, l$ y' ?4 y
HID卡% Q6 g* t0 e& F/ D( U) F
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;+ k1 w1 X( O. H& r A& f- o
' l4 W- |$ `9 V
1.5 IC卡类型! |1 ~$ F! O! f, P. l
" l8 H' d! O- b# d. y
IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:
, I/ d5 G6 d. B3 \9 F2 e3 i
+ o7 _3 t# T4 f* c/ vM1卡, C* o. @4 X5 J* }
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;3 V2 P, e0 _* l: P9 h% ?2 O
! w9 ^, }6 d3 r( K7 rM0卡
7 C; \6 N. [. r# L' d+ _全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
3 j# o$ J9 P- \9 x6 B2 w. e% l9 r$ l& ]# ~. r% f. g1 y
以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
/ f8 L, s. Z( j
( F, E+ W( |9 E( e' i) e3 nUID卡; v/ K: _& T: M, T+ e
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
. e* ^5 i9 a% c9 ^( O( O但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
- x( r) v/ e( {
. @! j* s9 o5 r, H. D7 }$ xCUID卡
6 M" ]% d' f9 f @为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
, v+ j# m, |& g) b5 l近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;6 d7 ]% J! l5 `/ R L
) ~2 n3 j3 T1 l" J& K4 JFUID卡
2 i" ~) @- r( r2 C# TFUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;
; A0 c, l$ b! D2 Q6 ` \- @1 @" d但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
]; f8 [. g! ?6 q; q, }( n" _, p" t' I: {
UFUID卡' G# Z0 w& W" V8 R
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
P- v1 x$ `. Z# Q4 K1 W: B可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;; X; g; T( r+ i! ^7 K) X; G2 \
6 E1 G6 z) x% a" ?6 y) w1 \
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
8 t) `% P; _( U( \( O/ j5 F; p
6 W2 e/ U6 _8 d7 E* Z. d: }1 M产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes. q* |" ?& w8 r1 ~% b" _ s7 q' _: c0 p
! y( D u) z$ q$ I) @: g/ f3 }% Y
1.6 IC卡详细分析' E9 o( e4 Y3 I
$ y. Y {8 G( P _& L# X# h0 U% W1.6.1 IC卡存储器结构
% `7 o& p7 }/ @
0 F" n' Q' Z! x2 |# P8 b8 m以M1卡为例,介绍IC卡数据结构。# x: ~: Z/ Y) C, b+ A2 a9 S
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;0 S$ e7 ~- w) W9 E
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;" }: c( S0 @; E f( q+ U
# F3 m- N+ w, T j9 A4 }* n
% H) y% w+ [0 ^6 x
o; ?5 _0 a4 Q( S
厂商段7 m F8 |& k6 I% w6 d8 I
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。7 F& ^5 D& x# ~0 I- c; q( d1 N
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
9 _& _$ f; T% t+ @# |$ b% _并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
, A. u. U: Y9 W
9 A; m% c9 _8 s. Q }
! p& v; T& F6 D8 b" f
" U" U3 o- i# D1 w! K数据段0 J2 [6 [ b3 z i$ V# {
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。2 q7 T* s. g- I
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
+ q6 c3 w' m3 J; W4 m3 ?1 T$ J值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
1 g% U4 _: ?2 A. q
: A5 ?6 x2 Y+ @
; L0 a; |6 \% s8 i# K! p: {7 o
0 D0 t' C, g) e! A2 ~Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。" ^0 X+ h) l7 p3 d
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。
( ^7 ~1 R( j, u* [
( Z( z8 x: `$ I. v- v控制段- J$ j6 g$ x/ X. E% e
每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:2 X, L4 T" M+ @& \: Q* f2 y
6 o2 V/ ~/ K0 K; \0 k# j
7 X0 z/ }7 h) i* s: @
3 a# {" w* ?) E+ v如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。8 ?2 d( r( D* }' h7 V% p) X
2 U2 w1 Q% w9 C- ~; p1.6.2 IC卡访问存储器/ F- ^2 ~, w/ R. S; F9 k8 C
4 K' r' W7 U' d数据段支持的操作) `3 x* T6 s! O) @4 H |# O1 D
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:6 a# x+ O$ z) G. u( C
4 I' @; C6 v n, w# b- _0 K
2 `$ m& X2 z, Y, t
?" P8 N8 U3 r0 G# H$ T$ I' x可以看到只有作为值段时,才能加、减、传送、恢复。
$ n w( y {4 M+ y0 f8 l
9 w( U8 \( o8 B) ^8 @各区的访问位定义* u" p9 C6 S: T/ C/ y. [8 C! P
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。4 l k N ~5 z" U0 \
访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:4 U- P+ |: f u' S, r: @
. f4 w8 p8 N9 }) ?
3 ^8 k) e& V: D( z" l w9 X i3 Z; V, e
访问位在区尾的存储形式
' E+ L5 \9 {6 N5 s- V1 z) s
' Z( s8 G' H2 L
5 T+ h3 H1 E+ N2 m" I2 M; W$ o, `9 m1 S# Z8 i
区尾的访问条件! r8 R8 F, b- N. V$ L+ S
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
N/ x7 R8 o0 t0 M9 h1 ~2 F1 T
$ N$ |& A% T0 o/ _3 u
" G6 p; n# P6 W u
; V2 p# I% f5 r' P1 ]* f2 i用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。
7 Z6 ~3 c+ [. j# c4 Y1 i X例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;$ Y. X0 C# B% }! E$ Z* V
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;
1 K8 e3 A$ r/ S' r* x# R% C2 d8 X. J2 ~7 A, s
数据段的访问条件
$ M3 b: C+ a* g% M6 |根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。1 U3 r8 x( C- w5 @. Y
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。
5 z7 Q$ A& r% G其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
; J( W) S1 `& d1 h' C1 y6 G
- F8 l( }. W, e; E) U$ V9 M4 F& h! ~1 u$ h2 |0 z
$ k8 g8 t2 C, B
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。; o% T. K4 P6 ]3 z
" O8 T. C# v, b! O8 ~. ?' p
1.6.3 举例说明( E% H+ R- ?# [- D9 L: j
+ C4 w+ _' [& f8 n& DMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
& M# `, ]; Z# b* C8 J; R9 @字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:( p& Z& t2 x% g- O" w6 p
2 S; W3 J: B) x- _" P2 v& k$ L; S% u; B! N6 }" {
$ @' q d$ \$ ?5 y0 j! `: z
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:8 k: G5 S! B/ {$ y
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
' o9 U. |3 s8 Y% C
. H# u9 y, O; B! JC10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
- i, R/ b1 s/ Y8 Y3 u" x- W+ JC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;6 t5 W6 n# q" }. M5 W6 S1 J0 `" q5 ]
1 c |8 {; S. r* Q5 F8 t
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;! Z/ N3 L4 a9 {% X; K
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
2 M7 m4 s9 ? e- r块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;2 b& Y$ j; w6 n& o
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;+ @1 @9 W @- `3 v
# a2 y% C) n) e0 F
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:# Z" M4 A2 W. P
; D) ^ E5 K3 h0 I. t4 o, G
5 h' p: v4 `1 i& I' u+ ], g5 u/ ^: ?9 ?* p+ p
最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;- a9 } j+ U& I9 `* }$ b
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;3 o" T) M1 O9 Y
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;0 J: e8 n, F6 @: @
5 ~( }& J* I8 ?' {: e
1.7 非加密IC卡和加密IC卡7 ?+ }4 i! \! p& d4 @
+ I4 Q8 ~3 Q" p5 C% Q3 N+ `3 h非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;# ?1 n: O, g& h# B' c
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。5 q' B. S( ^: j! y. r3 L7 V
2 m4 }0 p, x a- e8 s. f一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
2 |* \! j' }6 L5 E: \0 M, `
3 y1 S4 c- e. `对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。% j5 r0 M4 |/ W3 U& _. ` b/ r
因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
$ E' r2 c7 E6 D$ S; K/ t% \- }
5 x5 c8 o* E- y5 P4 ?参考资料:
* t; i! S! d0 [1 ~) x码农生活 篇二:IC卡门卡模拟探秘
3 V9 ?: b( ?) x4 l" XIC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】$ B/ a: W% R3 e f$ C- h# @! P1 ~
谈谈 Mifare Classic 破解
% d0 s! k" Y, @rfid-practice
x& @% B) x/ z8 I- ~& QType A 卡存储结构与通信: D4 O- h5 D+ U* U, Y
Proxmark3 Easy破解门禁卡学习过程, r* d4 s: V; Z" I) j% |- o0 _
8 s0 d! \* S4 J1 H- Z
2. 手机NFC模拟加密门禁卡% k! R& c0 e- \
: h$ G: q2 n" ~; `. I9 i$ l2 T4 [有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。7 @/ Q8 A$ c- ?2 u+ @$ L
! \$ e: L6 g" w- O' X5 F* X
首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。/ w3 m1 V' f& ]) V- I- B
部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。" i+ F6 g# t c/ W. \
$ ]% U5 }4 I2 B8 V% Z2 @6 |7 y: j在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。2 C" v& j$ v1 [5 m1 l5 ?" U
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。/ |# `& I. `& E# J& Q
. g+ a9 D$ z( J" v+ u& ?! @
1.读取加密卡的UID2 N1 k, l$ Z* k, o1 g
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
/ ~4 e$ `, ?7 U9 D! S* h注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。
. o+ v W- H& i6 s2 {* J前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节
) C/ v! {" o. i" y, w# K4 x接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
8 U( |4 r+ _5 ^% J7 M P+ X8 i$ k% m
) E' p+ j; l! a: f
; r% L) J$ |; J7 A2.读取CUID卡数据
5 c' q; i) }& s( C2 ~将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。3 t7 T# `4 h ~
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
) }, K. N) J6 a* f: v1 B
. r' Z+ |( O5 y4 J; _
, @9 \$ F3 {. s1 A3 U6 Z, i2 t2 j% q
3.写数据到CUID卡
9 l% r, c- W* n2 o/ l, I再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
0 ?4 j3 l4 M B! r再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。+ p8 u+ f9 Y7 m* g
, G: A6 K+ V% a, O! u C

! I2 W7 O+ G; j0 I7 W0 S
# i3 ]0 W. v& O在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。
r( L8 |+ x6 e5 V. H6 c
6 F! L( [6 [7 Y: z- [% f1 h
2 f. c! S( T4 b& a+ A" V- J9 \4 V3 g( X& `% L r: j" v
4.NFC手机复制CUID卡) L& @$ v+ l2 {: x" z/ n2 ^
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。' z; J1 g- O' k$ T- {
0 _1 _, H2 x7 l/ j
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
8 l! M/ I/ `& L. J) D9 y& X% I+ c- N
# q N5 ~4 U8 T& P |