记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。' k0 X9 }+ e' w2 H7 U
" ?. I m$ p( E- \+ n8 q& ]0. 缘起
& T1 ^4 h& ^1 M& a4 Y1 s
, l% Y5 b3 {7 n之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。 K2 h* ]5 R4 q3 w
后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。( }$ K+ w" }* H2 x9 m& N. d
. Q, l1 {" C- [# C" ?# s% f新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
0 ~* m) ^9 `% w那个时候,我又开始怀念用手机刷门禁的快感了。。) M" D2 C( e ~7 J% Y& H
. [ d; ?( [$ r+ U7 D/ o1 v: ~7 z7 X
1. 基础知识1 @* T- Q) J. `3 l Y; P) o
, Y5 ^& p' H& h1 H& x# r9 T7 [% r于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。7 A6 ^0 l3 ^! F% z
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
# r* S+ O1 b1 V6 T- [' b9 p: S如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。0 K6 A+ H$ |3 V$ x$ r" {
# e, A$ F9 K4 y0 E+ i4 c+ b2 G1.1 ID卡和IC卡9 {" y. s; X' |1 r6 E
" g1 l' ~% t6 v ^7 j, g
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
+ u+ O7 [) d) a H* p9 B3 s, m1 s9 e7 h" W9 w1 B; ^2 {3 O f
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
' H3 z; _! Z( K/ Q( [5 |1 p
7 l2 y) M# j2 u! e5 I( w5 v$ @主要区别:% N% n. [! t: e- g9 W
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;1 F# L8 g( ~8 ]6 W) i) L9 ?% V9 _& Q
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;4 A( q3 Y, W* Q" g/ y3 I
5 N0 k* r1 Q3 x8 m* q. U
IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
' |" G" s/ H- t% I: _4 M# C4 A, U2 y; G, I K
1 t( X8 r- O( d9 T$ M9 H1 n8 N
3 z. N7 ?% v4 S( d+ V7 N' v' p( ?+ R

$ f9 N; t; y* U
& h( X$ F9 g$ S# g' v$ J3 ~以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。# z; k& E5 q2 I- }. |
. E4 L6 D( O0 R4 s5 G2 p! J, f总结:
0 \5 f( A8 E4 G- f1.ID卡多为低频,IC多为高频;/ t8 i# z7 k7 j, y1 H+ I5 Z
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;3 e4 j1 C6 v4 X$ I, t5 q
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
9 X- l% @0 @" p! c6 l- B5 Z9 w" `1 M4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
4 y; q# D; E# M6 q9 T" n, i- @! P/ X- H' M! S" F
1.2 接触式和非接触式IC卡
. o( V/ n9 b5 o9 Z* S4 m6 Z# u
- {' p }; D. y3 a3 g& GIC卡又可以分为接触式IC卡和非接触式IC卡。7 I/ k# C- S5 J, V+ K' e
0 t( ]0 C6 B) y, \
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
1 x: \1 y5 D* }7 t
- v* f% n7 t, r非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。
+ F2 {* u2 w2 M& x( j1 O% q n& Q4 u9 T! d( D
两者比较好区分,直接看卡上有无金属触点即可。
: W/ K' `! q& f8 @0 ~+ Y
' l0 i' m0 i3 v- i5 u
7 |9 M( G. j+ p" D. r
5 }% P, a. w7 y* _" c- e1.3 RFID和NFC# o* G0 K: \3 D) {& J
6 A. Q5 |, u. D% L* q
非接触式的读写技术常见的有两种:RFID技术和NFC技术。) S# f' T- t! p2 j# g
/ B' p1 y) O$ x' n; BRFID技术:
, u n# f9 P% O: W) h0 U# C+ ]1.通常应用在生产,物流,跟踪和资产管理上;
' M: v& F% T& z' }! l/ e* Z+ {$ P* [2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
4 G/ Q& K9 F# d. K* N5 j3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
. A& E: v( M3 b" t& H- Z4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
' }7 W6 ?1 N) @6 |/ c0 x3 U0 s8 y/ A
NFC技术:( i/ \7 p6 z- ^
1.通常应用在门禁,公交卡,手机支付等领域;
- {! v4 ]( G- q2 Z- d2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);" m. L2 o3 A+ p f. S, L5 I) u
3.NFC作用距离较短,一般都是0~10厘米;
7 R/ c/ ~7 K1 O; ^# B3 R4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;! ?2 u1 K: ]/ ?1 S* g# c$ g- o
" }2 i Z* S0 b4 j, {4 V. E
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。8 r/ T5 M) K1 e2 T9 o9 h# u* w
' R5 Y" |$ h$ s; y3 Q1.4 ID卡类型
7 T. v4 S# ] X: D
9 @6 n+ \' w. fID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:# i' f6 ]) p [! ]
! C6 S/ B _) v0 d; R& s# w& {6 D
ID卡- m( d: A$ Y6 Q
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;: X& v; p' n! [& X( k! V' l4 j
- K7 F+ c5 G, s! CID白卡
0 @2 j' }2 q I% P3 N7 lEM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;) T& b- M' `% M# c; i
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡8 z( n4 {& E5 C) D; ~
0 B( V" I" x* p0 m& Y: z
HID卡
) J! n, n9 X2 ?- q# X: j0 V" T# X全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;7 ~! e$ v- K: r- x" b
+ s4 L& u J# u" S3 t
1.5 IC卡类型
% K) u8 h; I8 B/ g9 ~5 k9 }% V2 j0 {/ X
IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:
5 T# G% e I' |3 W' c7 |. M* a. I) u6 D" t `1 E( Q. I( T
M1卡
9 V" }- ]3 Z6 Y全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;- [5 q. `& \% z* g
( |4 r8 c1 o+ y- i# ~
M0卡; g. p; E* ^7 P5 z1 t
全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;. ^3 p- J$ J8 _4 U
& B2 Z* S+ \; ^2 U! S7 y" K% w以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
% W' u0 T) K, O& k+ }. Q" p( t. q1 J9 V* `$ K
UID卡
@0 [% B. [, K1 D全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
: s0 q6 M: A" _& g6 y2 A5 b& D但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);+ ]4 \ }& L. Z2 S, ]: { Q
/ d! [/ l: I3 S+ w/ P. @$ i7 ^CUID卡# c# k E+ q5 ^8 N5 I9 A; @
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
1 g/ Q/ _0 r: `+ v- Y) C近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
+ p" m% z/ ~- l- z( f3 G- ]; N0 B# G( [7 c+ O" h3 y3 J4 C# J
FUID卡
5 j2 G8 O: f" E) V& G/ }FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;0 k r$ N* u1 c8 D' }# b
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。) u, H7 z4 u( o( W$ z
9 W [2 p& U: q, d6 S
UFUID卡& W% {% c5 q: e8 V9 b" P$ T# Y6 I
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。2 q# o ]1 |1 a( y) Q& u2 \9 o
可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;
( m/ f5 `% j6 B6 `0 k+ B; l) Q2 E% H1 p( ?
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。" {! y! M8 E$ u2 v. U
& m2 b. ?4 D+ M2 a
产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes
- o1 c5 t' g, s- A" n) ?# [/ j: v4 y- b# f0 l! _. q
1.6 IC卡详细分析2 S! e) N9 w& G9 D3 `$ Z+ v v# P
: k& I4 a- d; s' j q+ M- S# I0 @1.6.1 IC卡存储器结构! n$ F( T( V3 _8 p
: q- ^7 h: A# Y; _; }4 _
以M1卡为例,介绍IC卡数据结构。
' V. M1 t! s8 I) ~7 q4 S* u7 f& e3 ZM1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;: s* {( y3 H7 d% E
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;
. D& L% H$ {" J) ^7 \- k: q. Z/ {

2 d Z r! ?) [: M5 v6 a
+ l; |% {& @- O" v, \6 [' D$ F厂商段9 ^9 w. d9 b# y! f" s
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。
5 r) h+ Y1 z% ?4 \0 y0 I其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。) x) b* M. G4 g. ^& H3 y9 b5 g( \
并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
% U# X1 g6 Z9 h7 S; d5 z8 R0 s" Q2 B- F( G
5 C( q: O% `. M; m+ h; E3 G
" s$ }2 ^- F% v. E9 ^3 r2 p数据段
% R1 ?4 q- }( }' B9 A4 f- ~4 Q5 a& v除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。& ^: h+ l' x9 \8 j# Q
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
5 X( U" u1 m% e R/ b值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:, O; u; b F+ [0 n* H4 B
& O: ^2 H- C+ q$ Q1 @2 @6 y
8 f8 \/ b" D& B8 R3 O$ T; s
& j1 D, ^9 Q& L8 E7 B
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。( p5 [0 g* `1 b9 F: u7 K" e
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。& m/ t$ _$ o) D# w4 D) j
4 G# ?; u2 t5 Z7 P" \- w控制段5 Y( h0 ]" P1 g: I# c
每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:' z, } C4 C8 D$ Q R+ A. I2 \- O
7 N& R; L( [( O. s( f) ]; p" w/ n5 Z6 j- b
5 T( `0 C6 h% J如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。. M0 H/ \# f8 k" S w$ K% }
$ N! Z: e) ^. F$ j' u1.6.2 IC卡访问存储器
' U5 l, g8 A" q2 r% `5 |2 U0 E$ ^2 O
数据段支持的操作
6 H2 l4 D2 G0 p d# `: ~根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:
1 @# G& F) {8 u' l/ }( x r! u+ ]! h* a t/ G' l1 e. T
4 k7 v, w: J5 H3 c& `& C4 z
" N* T* U9 w `! N( ]; i5 a0 F可以看到只有作为值段时,才能加、减、传送、恢复。
$ \/ u; {! e- H: A$ \& @1 g! J. J' Q4 c
各区的访问位定义5 t5 B9 k5 q/ W% B! q8 o8 \
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。" M% \( f! \4 A1 T& ]
访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
3 g; o2 R; s) U& n
T# x8 X. l# Z+ Q2 b/ a4 d! Q: `) D7 q! T7 E! C/ k7 W
9 l' f% s/ ?- r/ ?: ^' A
访问位在区尾的存储形式
* A& ^4 i; l) I2 }. `( A+ w* O/ f
0 U) E; Z. N: P/ m/ u4 X* y
1 M8 y& p2 ]" l$ d6 J6 M
& p2 A5 g/ Q8 M9 ]6 ~0 W' b. @区尾的访问条件7 M2 R; ^, E0 o- P2 J: f% _
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:
1 L% t, l+ e( U- G& {2 ~
" |8 y% h% j) T) o) t( B5 D
+ |. j. ]9 a0 u# c3 [' Q6 E1 z5 V N% Y; G' R! G' U
用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。, W) Q, y7 f5 f9 H8 I6 l
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写; q3 h( I- {) ~# D$ G1 m+ L
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;# V) q$ \# d7 D8 S1 a7 {6 t
/ a2 u! U* @5 e8 f数据段的访问条件
, e; \' S* w9 [0 m( E; C' g根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。 [& ^2 |& z% s& p) Z0 Y4 c/ r
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。# u- P! E1 c7 d4 I* Q& a
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
# f; v3 w: u7 _; Q0 G8 q
- c% v$ I. g% f" @# ~% \% s( T! T( E" b' w/ D' E
9 w# C8 [' f( D3 F如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。 X" r6 q7 d( d9 W; J3 ^0 Y I$ N
) s4 L3 U0 `1 j4 n( p1.6.3 举例说明
( i! z( i6 F* x: K% F7 f/ N8 @
7 a4 ?3 F! p3 w$ q& b; T, kMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
R1 G" B+ |7 C' P8 S d字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:5 H8 S8 H& A& B; K# u
8 O, m9 ~0 q# M5 ~' @# Q6 n* _9 Q

9 ~4 t5 t/ r: k& t9 q8 Z, B% K! L' M
6 Y1 q3 k2 P; x! H. F# r s. I+ v对照前面的访问位在区尾的存储形式图,可得知访问控制位为:7 }2 U* J: I1 L2 o" o
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。. X+ R2 \3 ]6 a& y- u, n
7 f9 v, Q8 \( j$ U$ R [
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
, o6 F: ^, ]) B s& FC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;' h2 ^; Z s. E# B9 q; Z8 r
- r( N& P2 M; l9 {& ~2 f/ a
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
* h( a4 \- e1 O- m& _1 Y0 O块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作; V; q# E% ~" k5 A3 n& b/ F9 [8 H
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
4 w" h/ T9 K0 f3 m9 P4 h1 A块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;
* V+ l4 V6 H& {5 a$ O, y' P- R8 V; h3 y7 p9 u5 |+ f% K
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
2 C, U& g- O# ]( p: c
s4 u# F. ]( y+ k3 t5 n2 q1 q! f3 p2 D4 h
/ J) i7 u3 u" B- [: e2 s' c最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;# A0 |/ G" t* ~! y
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;
5 w4 z+ h/ Y0 O5 w2 w* c中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;
# T7 u* q" X' y- b2 b2 c5 T
0 B+ h O- _! U1 P8 e6 a" a1.7 非加密IC卡和加密IC卡
P- @% }4 ^$ m6 `- c! R9 x1 W' c' a2 s; \
非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;; T: p: K7 r" Q# \
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。
4 m/ z g- w# @, h' {
- i D. j. g" ]& _ N! Q8 i: y6 P一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。! y! F* t% ]/ b% d
( c& F1 Y* f# B/ h, n: z对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
1 D8 _/ A% S% K( n6 j1 U4 H5 V因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
* L4 {6 |; F" Z$ [; V6 \1 t: u7 F: ]+ Z6 V9 j: K# m
参考资料:8 u# B6 g; {* R5 |
码农生活 篇二:IC卡门卡模拟探秘% i: f c- ]: c& C; t& Y& F
IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】! A9 V, U1 ^: p+ ^! u7 B4 B
谈谈 Mifare Classic 破解" ?6 k: d0 D# u$ D$ J" ~+ P, R s
rfid-practice
6 c3 M. l- B- l IType A 卡存储结构与通信
+ D( p1 i- @" u/ P) Q! }+ k: kProxmark3 Easy破解门禁卡学习过程) n4 g0 u0 m/ A, c
1 P. Z& Y+ X ^0 k- J" ?2. 手机NFC模拟加密门禁卡# I0 u* |7 [0 s# E5 Y% _( u
# k. r7 c6 h' N6 @
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。4 g2 }9 }# [7 C# v
# o/ A" t. f6 M S首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
, f: P" J3 a3 Z- K! r+ R4 j" @+ b部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。& Z$ b9 @* ?( N- |
9 e: ?, x1 x6 v' p" n在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。; q7 H" n' p- ?1 f+ N$ Q! }7 f
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。8 d* ?+ S- a# M+ {/ V2 b) Y
9 ?8 K' C; m: Z- L4 `8 m0 u1.读取加密卡的UID i8 K& t6 f. w* c" y
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
6 B) m9 a" T; w* s- F7 y注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。) r# C' n6 w7 d& c$ ?; y& s, w$ L
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节/ }+ e1 y+ B7 c1 ]+ h# X) i
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
0 C' S$ a, e2 d6 T6 i* x
1 q) a. V; }0 b' T# |+ b- X* t+ [
3 P8 Z; j% u% g( l0 f* B+ z1 |" c3 ~ a4 i
2.读取CUID卡数据# z, \0 m' J0 b/ w: P6 l& v
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。/ w, _5 ^, I) z
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。, Y5 B9 C, q! w* R( |
% D0 ]$ J; D# R: F* ]0 \: F
( D- k; r9 `! T3 F6 \4 j$ ~
X5 r) T5 A- {8 k3.写数据到CUID卡& A9 ]$ `+ `, Q6 k/ y* T
再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。+ }8 v! W! L& ^1 c: {0 Q
再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。5 N) _( ^2 `# A( D8 N6 c
* E+ P; E7 Q" }( Z) G' O0 Q {5 I, e& J5 _. f
4 x ?% L$ G5 f( Q' t3 f在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。5 }# O! ~! X8 j7 e6 C" R+ b' ?/ J
9 b; z3 U( l8 A& s: J1 c" O& X a7 m1 y" g6 c2 Y
; ]- e W& @* _ H+ J, _
4.NFC手机复制CUID卡3 x) j* U8 a- u3 W5 u, |( j9 _% L
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。
4 z6 u4 D& d; r* _- i% V5 k
( [9 K& l: d6 R' T2 i N接着,就看运气吧,我小区的门禁系统就只认UID,搞定。/ D; r9 N& h: Y! c' ^7 j
' V+ X d7 _6 V: b
1 h/ d) H2 x! C. l7 \: f6 }, s
|