记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。+ o& J8 C* t o: |4 Y8 a
6 _' l& N6 ~: {' @
0. 缘起
% _. K9 n, I9 y4 D: t. O/ [
# r+ q/ I2 E' [之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。! z) e4 R. x* o: H) v( e
后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
' N7 B( f5 x! x; h! H9 r g9 s/ p3 l+ c5 O$ Q
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
! h$ V" i8 d' z那个时候,我又开始怀念用手机刷门禁的快感了。。
7 [+ c: t% Z2 `3 j4 a, A6 x& h0 T- B3 I9 T0 @- T5 y: g. G# N
1. 基础知识
. Z0 i" o7 c7 n$ n
$ {' _/ X9 }7 i; ~8 C m( k于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
6 D$ B" C7 ?( J6 g" @5 r& g) L然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
+ B2 n n6 s, E如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。4 f0 s, H* x+ O9 N
7 A& k/ U* D0 n) ?& a* [1 a1.1 ID卡和IC卡, [; I" |8 A+ f# v% T/ X, ?
( I7 a- }5 F; i( V# ~' o4 eID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
! L! Q! g9 ]9 n" o! \: |; s, n7 x
( }% F% }9 u/ h6 t) WIC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。( K9 s( d+ @) a8 d( f
6 u2 x6 K: {) I+ P4 v主要区别:* b- ^- t- D. i2 S# Q$ t" }
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;8 D( u+ ~' V& i6 [0 I, h
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
! T, R Y4 y, Y5 W
& E( E8 {; K: [. ]IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
' q1 e, {/ m/ G
0 M$ h* F' k% r [" y) c# R. d- c) o1 W. a+ v$ Q* z+ o
( h2 H+ n7 a( y! |" p, m- q( C

3 K# ~! r. r$ e% j9 I6 }" u, w4 I4 X2 T4 }+ U+ o! @
以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。
% b* B& L' s& \% q Z1 w* d x3 b# } i- p
总结:. z8 S1 ` g, n& U+ S& ^5 T4 ?
1.ID卡多为低频,IC多为高频;
9 b. L, c! V& l( e0 D0 O2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
/ Z8 m" x' I# ]* H/ v1 k, F3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;% |; L" V4 y r5 v1 @" l3 ]( y
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
4 o: U9 ?5 v' s1 e, B+ l7 i- e8 Q
+ k% V3 Z. X/ V N5 [; D: B9 w9 [1.2 接触式和非接触式IC卡! v" M, }$ e- F' ^: |
# b. I" }: t( D3 Y1 h' G' ]" L
IC卡又可以分为接触式IC卡和非接触式IC卡。! K! W. c2 `9 y4 }
! C% l+ O6 d! D' v, \& B
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
+ p: y, G: a# f1 E
& v' i. S9 ]/ I' }! `7 _非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。5 N+ Q& g+ k2 s" |/ p
1 \# a6 W% K" I# w7 N4 H
两者比较好区分,直接看卡上有无金属触点即可。$ l5 E u! M( f
! l! ?% x! B8 _5 p. e; m% r$ `9 V) |% A' u5 J& p; B+ R
) }0 P; k: \$ L$ m1 K4 z
1.3 RFID和NFC2 a- q8 U4 i2 d f6 `# J" c, @
: T+ }8 p+ E7 f4 f l1 V
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
; O! c2 ?8 J* v* ~( @) B$ W* }! W; x
RFID技术:% V2 T8 r8 D: ~" E( y9 c8 t
1.通常应用在生产,物流,跟踪和资产管理上;
1 X$ x9 v: r( ` u2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;, ~$ i& U" s C$ k1 h0 y3 M
3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
* _9 l. J9 I+ m( L f4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
) N+ q$ t% e- Y6 \
[8 ]+ T! ~; l' YNFC技术:" C; s5 {6 {% c+ ]0 R
1.通常应用在门禁,公交卡,手机支付等领域;
' d, {" A( ]$ {2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);* o. k" a2 `7 s/ c5 Q: m
3.NFC作用距离较短,一般都是0~10厘米;
6 ~4 N2 d: T9 d. ?4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
; }, B; B+ E8 R h% a6 ]7 m4 |$ L$ q
; ?5 j; Q% h. V9 N/ Z4 ~总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。
( @) i* m9 C; A1 k' ]' M1 t! s& e# V7 }: \* |/ X
1.4 ID卡类型
- P+ _% m. Y8 e7 A0 r* q! p' ]3 O4 z
A4 A4 f' i9 J. ? N4 n+ IID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
" C' i( S6 I/ b$ |* ?) @$ R# c! i! k2 f4 u" P: [/ [( ^
ID卡7 Z8 F- u+ |1 N6 Q5 U) x/ ?
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
6 h, @; P/ ~, y. B( G& ^" R' K3 Y# h) i' b% D9 V( k3 M
ID白卡2 {7 g% m- C5 L3 _1 Y& X- a) ^3 d
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;: W* B; D7 X Y! J8 S5 v. t
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡% V E" G5 s$ U1 V1 L0 j% e' X
, ~9 p+ T0 r% V- v4 M. ?: W
HID卡$ u- F0 ?6 a8 d6 m9 c
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;
! S- f6 h b6 U: u% j9 }( E7 W5 x# R7 V' O! }
1.5 IC卡类型
- G' D: Z7 L. |
9 H: U+ L- x: f' jIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:4 a4 Z' a8 N4 S
- [! E2 G) V- X( j: {# s# o0 d
M1卡6 h, V' N! L% y7 ]
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
' [" |. d6 K, T4 u) p/ g! s3 L/ Q, x* t4 ^8 }4 M9 r) d) m
M0卡
/ j+ i% @, ?. B @全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
+ @. x7 a3 v( I' Y0 h$ _; [. Q9 v
以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
, H0 l# P f0 \9 i: w9 v; g- g
6 D1 E: \9 O) S0 Q mUID卡! `+ p2 i' ]' r
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
/ }5 M: U- `8 J, \; G4 l但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);+ l( e( O8 [6 p: I
6 Y" [3 }: B; p- R' ~) VCUID卡
7 [- J4 S# |" [6 u ]5 m为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
6 Z& X" a1 J7 v近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
7 k: {! B' ^2 x1 `. f" C2 I
% j! C. o% {4 U/ i( r& F8 D3 |FUID卡9 ]0 ~4 _& i/ J) ?# `- @
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;/ I1 ^. r9 }9 [
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。+ v4 p4 D+ S! Z/ e
2 |1 b9 N% f+ x7 i% wUFUID卡( S7 {( [" _: v9 z
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
% a0 b/ z# E1 u可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;& V! [( s6 t. p1 u! c x
! Q& o+ S# K1 A$ o
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
% b- _9 B6 Z! Q; v2 e( ?3 m% F4 `6 ^& ~8 P
产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes$ V- W7 ^; o5 Q. u8 ]
2 J1 K1 Z1 G1 U K
1.6 IC卡详细分析. v$ [. s8 a- m7 Q( n1 u6 j: I
/ w) j8 X- c: J5 y
1.6.1 IC卡存储器结构
- \3 \7 v8 |% o- }" R( V
6 S7 T8 t0 T9 \* |/ ^6 ?以M1卡为例,介绍IC卡数据结构。$ R% z: q9 ]) K8 V
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;
% t! O- ^2 W- d每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;6 S# [: ?' i3 ~: k7 `$ X) F% r
+ P6 m- q6 K6 O o# X

4 N% |: R% o: }" B" c8 L) t& @( Z' I# X" h$ l' s8 e" f6 V
厂商段
# m& f& [6 k. d9 \9 w- b每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。' ~/ B& A7 F# I- [8 A, Z
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。7 P; k3 K2 e6 }; Y
并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。" `; K/ ~8 K' d- Z
6 ^* u% S# Y. s$ O6 x
; o0 I$ x* b& q9 y
& [7 C( T' X8 T2 V
数据段/ _, ~+ R; E' |2 ^3 @7 R. R4 k
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。
) [: [" R& Z3 t7 x数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
# }# [9 S/ O2 w7 ?& }值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
! p |) d! ~: \$ y4 C( X2 {) d; `+ w' H; E2 \/ X) b* c
. K. p% o0 @- G% j# O% b
" G8 D7 w: r! J6 T0 k- k4 K3 q6 AValue表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。
, X' F8 m4 G! S4 |Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。
: `/ ]4 t: H8 A( L! X
) s6 _0 l/ @9 K5 Z; E' U, q控制段
' O; Q% @2 n1 c+ \; k4 X每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
5 ]" G* a4 t5 |4 e1 B9 w l! {7 H$ O+ L- Z% E8 j1 [! G

$ I8 C: [/ {0 s+ O+ v d2 {. l! q
: Y0 i" C: y- T* x& t- V如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。
( S& G. m! F# E2 b% ~6 R
5 R5 i+ {% y. B5 I1.6.2 IC卡访问存储器3 T: J6 f/ y! @ B- Y
% F/ C, F" ?4 Y; E0 G) _% i9 j数据段支持的操作
- T# l% Q C# J! q$ l2 ^, n% ~根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:/ ^8 k2 m# T0 ?5 \, t/ y0 y8 k3 E
. n: F3 F# ?: w8 Z8 M% I4 Z+ }- j* O( Z, ]4 @
8 S$ H8 a* t4 \+ M# p* M可以看到只有作为值段时,才能加、减、传送、恢复。/ @0 }/ i1 J0 m$ {) k0 W
8 h" e2 G4 s' g' K各区的访问位定义
# P& Z% g$ ?$ s8 ~" e* o) }7 R2 Q I每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。/ v8 Z/ q) }, n" Q* h5 U$ \( \1 g
访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:4 C L0 K- e3 y& q
. I: L' @" b, N+ l' V
7 h# M( u7 Q( k2 H) ~5 }: l4 k
$ I5 k' d2 {; R7 o访问位在区尾的存储形式
3 C9 M5 r5 d7 `; X& p; ?) A/ \0 y8 y5 G- x
- N3 T1 Q0 i# g+ \9 ~
`. q0 ^+ d, _& ?区尾的访问条件
2 Z, x2 s; F* e. `, w. r根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
+ a& U# ]( c( `. t# D, [, r% @( P1 d! t, \$ j6 H c! P
0 t8 _9 j+ c3 G0 J* v j% x
) A5 N5 V6 o" O* |; s# N6 {用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。) N8 T. P2 \, H8 o- B- D6 M+ q
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;+ X1 a! ]0 L# r! t# q7 Z# u$ \* l
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;; s; g6 g0 b Q, C
8 D% R+ Y3 |% \+ [# [ Y+ U
数据段的访问条件3 n; H# k: J- A( w1 Z _
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。! ?) K. @ u1 M! [
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。
0 j2 q# Y' ~+ f' C+ d其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:8 `8 l, ?4 q: _
2 r% B9 E! }. @6 X0 @1 D- ~ Q% y! \' W- o; _2 l9 ^
. I' A# U q% c! Z3 C+ C
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
8 d- k) G. y! u x4 i* M+ K" Q5 P! U7 P% c1 c
1.6.3 举例说明
! \# Z C$ d: y; L
0 }) ^; e/ w% T; U" Y+ C n4 AMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
& I4 I6 i/ t: ]( A- g! \& o5 o字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:$ d" u9 M6 ]; K1 N2 y5 q9 H
5 E6 x( |3 ~* J3 w

' d, H: W' b: p. M+ A9 _
& B! X) H; @* M, i对照前面的访问位在区尾的存储形式图,可得知访问控制位为:
' G8 u. U0 f% h: p+ s# [C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
' @; N# b8 N9 x/ N. [
9 k+ A9 Z0 D9 r8 f" ]8 hC10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
% i4 N/ v, H1 @C13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
5 d9 m3 p) w5 K0 c' N M$ h
* \+ f4 o; T( \$ j$ e0 V块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;: U4 u! C l. @# [) R' g
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;" \( d- H; X# y3 W
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;) O% d- p! \3 E; ^
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;
( @: U7 s- {, _* @1 ~3 {; q6 n
3 k9 v7 s. A- G* h; n+ B这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:* l* Z7 I" Q2 i
b$ t7 P o1 X% d% H
& k6 @* h2 A. R/ s, i& u- e- u, a% `
最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;
|5 J6 m( r0 a3 }" l# K1 k最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;0 `1 t! c a$ L3 ]: v9 h
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;
2 K4 g& {1 R4 a! l# E+ @4 P* p' q) J7 H: y. w
1.7 非加密IC卡和加密IC卡# p+ r( P+ J; T' t
# Q6 {: y+ M/ s. ]/ {
非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
) i7 Z$ ?& w' `4 T而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。
% @* u. t5 `" e2 z. F. \
! I7 ?' d ^1 u1 M) o8 c$ F* d3 \6 ^一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
' m$ f5 O4 ]" M' y3 {4 E2 l
6 N$ j F. c. U6 V" }* _$ W对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
7 E0 n: K3 Y. D0 o因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。2 f- q1 ]+ K B% s
; [9 b2 b4 H0 o; T
参考资料:8 n, g: N# Y$ V8 K# v, o4 O `4 B2 W
码农生活 篇二:IC卡门卡模拟探秘
: b0 {9 {! ?/ W0 s5 t1 s; w' `' aIC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】
, H8 a9 Q1 E2 [8 z9 q谈谈 Mifare Classic 破解
- I _' ~) H1 {6 X. trfid-practice8 P4 A( ~6 W+ ?
Type A 卡存储结构与通信
6 M7 w, `3 Z- w2 G. f: PProxmark3 Easy破解门禁卡学习过程* F4 A1 V! C0 j s! \3 s) b8 z0 { @
& b& W0 x. H1 _' ^
2. 手机NFC模拟加密门禁卡8 ] C7 a: L' Q1 X& s3 X" d
- f6 q7 i& J/ P1 D' g+ ?: b有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。& U; d5 `7 Z% ]8 R5 L
* }; C5 d& k; O$ P4 N
首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
. }, B$ z, d/ u部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
- P2 Z0 W& F- m2 ~* X% U% y; [' d. Q0 M! G6 L% Q! f1 {$ o' _
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
. V4 v1 H8 o# z2 b: X1 U# m8 o在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。1 k1 q3 A0 F/ a8 r: z
8 R9 {/ Y$ F/ e* u" [' @9 E
1.读取加密卡的UID/ W* B( |7 @- q6 Z
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。# y3 {/ Y0 x7 j
注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。
+ e! m6 A* ?" Q. S- e4 G$ i前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节6 b$ _( R7 O1 t5 Z
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
1 l7 L" R7 F# x, w. n; {5 [" R) {7 d9 f9 O, j& T! |+ y* u, \

0 O! ]* Z& u3 ]4 N/ N) Z
% E8 r/ H! l6 C* \; S$ @, U2.读取CUID卡数据* ^- V$ n% j; I% j7 a
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。
0 g# t- b6 W( M# t6 G接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
9 G' _. k0 E3 V6 Z' P0 W- a* }$ z, R( g* |

: R3 z5 O& B) M" y5 n! V: H2 s
# H* N/ t2 X5 Y/ d; e& k' o) _3.写数据到CUID卡
# f, S' j8 y5 B+ R再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
- E' U: b! f$ x+ G再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。& s4 I; M V- s# }5 h
% o* _4 V5 C6 C1 E
* {( u) k3 W9 P% M! m
4 c& v0 v% S1 d& c在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。" H$ Y. G' t/ s
0 _1 t( R8 M4 J; s

! C4 }2 i9 U1 @1 E4 H2 I; l! L1 k; R$ @: q" Z$ R
4.NFC手机复制CUID卡 A3 v$ Z* h. l3 s8 b
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。9 m, G9 w. }& v: O8 b9 i
5 E9 p4 `* T2 ^% S
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
2 v3 A W* X& \" G( o' Y1 `9 C+ D& J* [! d+ O- a3 t
6 d/ N& `: B# J/ s! U+ ^1 T6 J
|