记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。5 K. G0 L# D8 r
) D: ~. _) r4 [' W2 ?/ t
0. 缘起
$ o$ ?+ r# a0 n# N9 L2 j& G2 k. P' [% q2 b; O: x* U
之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。) Q6 N/ i& b* ~2 J3 q: M
后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
# r* k; i8 \8 V( A: G0 V4 m0 O( a
! R( B; U; k' V+ }8 {* W" D6 G新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
; E9 k/ g/ @2 ^那个时候,我又开始怀念用手机刷门禁的快感了。。& E) T$ b( _9 V! O: R
' u! r9 o: W x3 Z* a: v1. 基础知识
, N2 V7 {+ h8 H8 d- \8 @
! C- g, u) F: X- }7 t) A! i于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。
1 Y- w/ n* b* E8 z然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。4 \0 S" h0 d9 a3 w
如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。
9 _5 e. D! U5 C# h A3 g9 x! L- Z* v4 v, Q1 c
1.1 ID卡和IC卡3 i c& ~: O5 H2 A) p9 q
( B) u1 \* Y1 ?
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
! B$ z6 r& K( c) M9 M- r m; C, K+ g, g/ G) Y% A$ K
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
& C( j' w" d7 ^- M4 ^2 T& h8 w7 }/ x1 H6 V8 }- q% K% ~9 W
主要区别:# P. T j; r3 g+ t5 t' l
ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
, n' x+ t9 V& ^6 p; w+ lIC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
; R& r# N6 {) ?& t; P% x+ k
8 o$ A S# r# P& y) uIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;: U/ a& t, D) m8 R
. f4 `. X; z0 j) O
0 M! k; }! ~. T7 I, ~" V# \
K7 Y% G4 X& Y; S9 o: l

' U" L" f9 C% v- {/ y4 {) ?$ ^# e2 M$ k# Q! n' ]8 U
以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。4 m% ]' q% q/ c% @- E8 d! T
# d5 w$ L* Y& g总结:4 a, L1 i% B; c& m9 m; G( D
1.ID卡多为低频,IC多为高频;
' _6 G& ` i* ~' D2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
3 f) T( S; Q- Z& U' ?' s: `7 z3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
* s- [) x- u; i M( P$ A4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;: @' P9 Q ~5 F5 a" u1 T
5 h; W2 B: O0 n) u" u
1.2 接触式和非接触式IC卡
# Z9 K8 J$ Z; j# L" f9 [/ l: Z6 p6 J& ^0 A+ q3 o
IC卡又可以分为接触式IC卡和非接触式IC卡。: s6 o) ? k2 i3 R. |" ~7 ` }
( ]' h# x3 F: ^2 j6 F6 ]5 o5 e! a
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;% Q( ?, \+ m) A7 D7 [
" H4 r ^" {& C% p! {非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。, S0 b, K& o8 {- h [
8 a# e, Y7 ?4 K% n1 j两者比较好区分,直接看卡上有无金属触点即可。
% b! A1 E6 Q: @. G5 ? m& [5 A
& C) t$ M) L& s; z
- |3 w" T7 e; w4 `) A5 Y& {4 I7 H$ D3 @; j. |
1.3 RFID和NFC% J) a, |; n4 q) n, d
r. q4 H4 m$ E9 f+ C非接触式的读写技术常见的有两种:RFID技术和NFC技术。* u8 p8 y1 P! k/ W! g+ p7 c
7 _3 W% E2 o* |- P8 uRFID技术:
. d5 o; k A+ h o1.通常应用在生产,物流,跟踪和资产管理上;: P5 r0 O+ F/ a2 h- L' f2 y
2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
5 @6 G4 k( u* d* ^, O, e8 a3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;2 Q% J, t( o9 ]
4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
" h2 b- ?3 t/ t& m5 S( Z( D/ X4 Y% c, x4 x$ P! o+ N8 f. m/ O
NFC技术:; O5 B! l; N- i% y; w' c1 W& I
1.通常应用在门禁,公交卡,手机支付等领域; z( H$ @, ?* o6 Q: H4 R: S
2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);' n y0 o+ ]5 z* k- {
3.NFC作用距离较短,一般都是0~10厘米;
) i1 U# W2 D* Z" P9 D4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
: K- _" t& d5 }9 I/ @) C
2 o/ z/ \2 p2 I* R8 X总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。0 @5 h: q, r# k, I; y
5 e' s0 [" c. |1 W& V" g) f
1.4 ID卡类型. ?! c2 H1 {% \# P" ~' C O
' [" s/ [4 g* T
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:% ?. A% B+ g: M2 R6 Y, k0 ^7 H
/ ~* z& k u: J* X2 eID卡. i& u: }) B6 k
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
9 w0 m8 U" }4 k ?# l# R6 }
+ W1 ]: K& b( y j5 z5 z7 YID白卡
# V$ A! K( X& ~1 ]4 xEM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;3 m- ]4 }7 k4 \9 S( t; G) @. h
T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡# w4 K+ \0 g# V4 q" D# r
% K) j- U/ N& PHID卡: K4 G& n0 ~3 h9 _2 |( p) s4 a
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;
$ [8 J' b& b1 u/ O
$ Q! ?8 A0 Z) x1 g- r5 h1.5 IC卡类型
) Q6 h: W0 _8 N& X( W# U, M: _4 O7 }1 j; I
IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:
, c0 G3 Z+ B# z6 T
. w7 h1 ~3 q% F) M7 YM1卡3 a5 N9 }0 I* u2 k- P: O
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
4 \ @9 E) f+ O I+ }+ z, L
4 K) A I5 u2 K) W: B. G, sM0卡. z& c# b0 L$ q, a0 h
全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
% A3 n, r( |0 d/ I S) G: `# u: z0 R2 z% d! d
以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
& Q7 H/ g3 w7 Z; P4 }, J- k# i9 c- X+ p$ U, Y8 [9 {
UID卡, L. n# I1 V- I
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
& Y. f! d' @! I* ?但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);- H- E! ~/ Q( G: R* f- K9 [
6 W1 z' G% D$ S) f- J7 W* J+ k$ a, }CUID卡9 [$ h9 g" p) e
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
$ H9 K) ]6 z6 n7 F H$ q) f近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;3 N3 ]/ q1 r& P$ I! [
- J- j H/ }) n; T: J5 c9 gFUID卡
" ?1 l& m" t' jFUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;+ W/ a0 X! l5 f- `" t* `) T0 W
但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
7 e1 g+ o% P$ M1 u- x v9 Q' B5 j$ |3 J/ \; T
UFUID卡( }) s" t" q2 m, r" i
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
# G) H0 e: L3 \$ ]$ w0 q( T可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;( F& a) i# _ M" Z
7 S0 s/ M" D7 l$ u9 q+ T% }: D判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
: Z8 D! x" A s7 J
7 Z; {; B% O( r! R5 L" M2 u0 `/ l产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes
6 G6 C) w( V* q+ n( }0 q" D
' S7 n% K4 s i7 p' @% h2 D% A0 S1.6 IC卡详细分析
( i' P1 d' j8 a' _- Z3 a' l$ j2 V! l o
1.6.1 IC卡存储器结构, U- x& N- V& x! d- k; v3 F! k
. D6 x/ D2 C X6 \! W以M1卡为例,介绍IC卡数据结构。
3 u* D! R5 u" |2 EM1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;! @3 i2 ~4 w) Z' h. B3 R5 i8 j u
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;
; I ~) [ ~$ @4 n0 n9 r' L7 Z9 R; f5 Q

+ n3 |2 c# R/ [9 }1 v; Z
@7 K+ _0 u8 q1 b8 a% D厂商段9 F: Q- e7 ^1 O2 Z
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。
/ x9 p8 d4 X" C$ p9 N其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
3 ]# C" P& w* g' p并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。# N+ q# G4 \: z9 P1 N4 s; t
+ K$ ?* l' I' A" e
6 E5 k: M8 j- ~3 t9 S: @
8 z' t- \! ?3 ^# Y/ \. K: t" P7 g. y数据段
& [- E4 ` _. n除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。. r6 h9 a: `/ s
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
4 }' E6 ]* F5 s' F& m$ `" }, C值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:4 G7 F) _& c( i' q1 D
0 Y$ P) E& b* t% [2 f- D( x
/ H- V. |2 B2 w; R" {8 ?
' t' E8 l* A/ v& y0 ?* _: j# A7 RValue表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。 s2 W- c, M1 Y, O0 |& R
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。" }. B3 H( D, E, k) Q C2 D
$ k8 S+ b0 U1 y控制段
0 i* g& s5 L) j$ G$ h7 d每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:& \$ N, m+ c, _& y5 g
/ N8 ]' p1 K4 C. j

. r6 T' u1 l( j: J2 F: I8 I/ q
" g; I7 A- T' y如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。) h( g4 a! n& P1 b/ G
2 E1 g' J: U) Y; ^( n. b9 n1.6.2 IC卡访问存储器' b! z4 Y" O4 z
) C% ]8 R l2 c+ p" R, ^4 q8 B数据段支持的操作: n+ ^: d# }9 o1 _# |4 y
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:; i7 u! }/ `) E( X) ^
* i1 s9 ^) ?+ z
; o+ e6 R, \! l+ x
5 j/ p+ t, s2 W- }可以看到只有作为值段时,才能加、减、传送、恢复。0 ]1 E, T) W8 a+ Y1 p# P
9 o$ n$ a, K0 ]( |2 o各区的访问位定义/ Y; r( \& u4 c
每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
3 l [7 A' ~- R7 g/ l( @访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:) U+ {0 Q6 |- w
2 u' _9 H6 h8 s6 H3 I: s

' f; ~: A8 f' J' ?* u" V9 M2 b1 |, h, k" N- n
访问位在区尾的存储形式: p( m9 y0 M+ o7 P# ^: v
6 y5 ^2 n- i) O" I/ r2 H5 B/ P D
( `5 D. v7 k6 ?. r4 @; h! V5 l ] ]# v0 e6 g9 t4 i( T/ [
区尾的访问条件 o" V; V, | ]. S
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:( J0 H$ E- z% w" B) l
- ~' M1 ^' P# q, K8 n
" v C* P6 i; H( p' G9 ^( x6 T- d
; {) e5 Q8 R4 B7 }3 @
用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。; w" z9 l! S" Z! e0 ^9 E* K2 F
例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;: Z6 t3 ?2 p. v z @
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;9 M! Q7 X* [2 m$ j5 N
3 x7 c' K+ K/ \9 @) @+ L0 i
数据段的访问条件' W! b# K T+ S0 @4 `$ f* g% k/ M
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。1 V2 Y9 b- O3 }4 w( H! ]
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。
; a% q0 z4 Q* h. |3 S. c其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:3 N/ }- a' T% E8 }% A
' {: Q. u. K9 w3 v" R( a; S' [5 V9 x
& s- Y" [( I3 d2 c4 e/ S
如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
% {7 {& P; S% S& h& _( l5 ^
! o8 h7 j5 e. i, C' J1.6.3 举例说明
) z- I+ \. q- w" N8 l6 Z% d
3 C+ H% B8 b: ~9 \: \; F7 v) h# m' R% jMifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;! o* u+ [' J) `, p y6 v
字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:
, o' g* ]/ f3 [* _# d2 D7 B) M% Y: v1 S9 u5 v; G% A
0 L* f& W5 X# x/ ~0 i9 ~0 ?
% b5 \# w6 d0 |9 f% \" M9 @% s
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:( D: z, [4 |6 d, n( D2 ~# k
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
: {; J+ q/ L I- H m4 ], ? F/ @! W7 a: ?' N' q' E2 l/ C
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
" T- S6 A- I/ h A: sC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;
7 j/ Z" J5 ]" e! |7 _ D4 e$ b# W1 s. Z
块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
$ G B- {0 q% i0 h0 i7 [块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;8 L8 B. i, t' L
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
( z. U3 s# T4 O5 ]( o: ]" g+ i块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;3 G5 o( i* |7 ]% V( T N! \
2 R; V3 u' C \3 B" S4 D! g. {2 l这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
% V o/ ?7 c. j/ }& p1 A" q7 ?+ r+ Z9 p9 ^4 W

" E$ o" Y8 B7 k* R* k' r2 J) v
4 c C9 |* O" H) N! [) i7 ]9 |6 ^最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;1 H" j2 ?; g- J/ f5 r) S( m
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;" p+ A" e- m4 g Q k
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;. O$ R) ]; F. l& c" M9 b- D
* }. e. @' q4 l- G7 b3 u; r1.7 非加密IC卡和加密IC卡
) [0 m ~: M8 z; }) o
5 m' {6 w% ~4 X+ G非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
6 J* i; K% _+ b; A+ f+ Q ?而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。1 ]$ t# K/ G/ [6 `) h0 d
6 T: J% \% p; s9 Y u
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。; Y! [2 f4 I' C9 K6 ]
" m7 r! [; m0 v1 }5 J2 s) O
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
1 v, U$ Z* A6 k( C0 H% {因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。* T& r5 N/ Y4 B5 ?6 N
! ]6 w" i% |& c$ |5 O参考资料:
: j% {0 r8 ~4 K7 l2 J码农生活 篇二:IC卡门卡模拟探秘
# y0 N0 |# r( |! nIC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】- o6 T# S# p+ X- D! c
谈谈 Mifare Classic 破解
5 u) f) ?. b. h, ~; trfid-practice
- a9 }: T* g4 f% r/ k2 WType A 卡存储结构与通信) W5 B7 m! E3 j. q, }# e, I8 n
Proxmark3 Easy破解门禁卡学习过程
. F+ }: | U9 ~3 ]! \; n& \. M
, T& I. f3 a9 l: D2. 手机NFC模拟加密门禁卡
/ N5 w+ c. P f" n( x
3 \* h( C, N9 [* K有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
: j* m, w! U' v
0 H$ c& _1 w; E( i5 t0 P首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
/ T: r; L4 q# p7 r4 n部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
1 D. p2 Y7 c1 u7 V( k7 U$ I3 N/ a0 T! H! x" b
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。3 c; b! W; P3 b$ O- a3 O* t
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
$ I3 c \; |3 I9 M1 s$ I- P. a0 y2 X$ }
1.读取加密卡的UID+ c- u i; L& r# K9 g: p
打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
6 K, P7 e! X6 R5 N0 `) w1 h+ n7 a注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。- H) I$ p$ y0 {6 w* _( P2 T, o- ?
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节. s6 g: W* a- Z
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。$ M2 z1 G; M( Q
/ p! `1 A& u1 q( p6 q7 T6 Q: F4 Y) g/ F. Q# b: d; ?% I
5 T7 l, {: @0 H m& N" u3 Y! ^
2.读取CUID卡数据, `% f4 B; y* L4 s' l
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。: @, g' A# p. T$ J
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。6 U; H# n$ z1 S: s' I
' ?4 z. W4 e' @$ I8 n+ [+ ]: |# N- c6 o% Z3 o$ W7 e. Z: X! w; @
2 Z. M9 X1 L, W" n# ^0 G- e4 }
3.写数据到CUID卡
; }' j1 z* B5 U* S e6 B, ]5 Z再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
5 ?5 n' k/ |& |再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
9 i. t1 }. m( x# n( H- v4 B; @9 ?$ J% V
# v/ N- ?0 A. `) `+ V
% J/ [) k$ t* N/ H9 _, V
在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。
. S/ h& ^6 A5 R6 |" D$ |4 g- X" i D0 x
/ |2 \: |8 X9 a% n, T8 s
% O9 Q& Q! x0 s0 u5 j1 Q
4.NFC手机复制CUID卡
' C2 { X7 |3 A最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。: D3 N3 P A _* I
: c% J) j a1 E# i4 \接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
8 V% Z7 Z% J! Q0 Z4 H! x* B/ g
2 Y& B( u/ ~$ D8 b# d4 u! u, M8 r0 K% U0 L# t
|