记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。2 T' {6 T- J- s% `8 e3 ]
8 {! L' M8 Q7 A4 o& c! V/ F0. 缘起& J* {5 S; @9 X3 Z" P# o& n
! d6 w, ?2 _: S$ Q之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。 r$ J2 C1 E5 V( T
后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
4 ?3 v; H0 L6 B1 y' B# W( o# L) `' ~% D; t
新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
1 R+ X" j# }8 t0 z; S那个时候,我又开始怀念用手机刷门禁的快感了。。0 K0 b; i8 K, V& N, X$ d' K* |/ c8 s
: n8 a* H, K7 U; ~9 X1 z1. 基础知识7 P# y( m& o0 i& g+ U/ W4 x) l$ p9 b
" F2 l/ |" s, _( z: ]+ ]' w
于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。' M8 y ~& k# g# N9 ?
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。
% y' O( W+ B& ^* f( d如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。7 _4 _% H" O( U& ^/ r
( p- a; u q$ g! y1.1 ID卡和IC卡
/ u* ]- W+ `; Z Y- v V! L$ s2 w) ?8 f9 k! l8 c8 t
ID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
$ @( g, `6 j& \- I% P- k. _+ F6 o" o z9 S- y5 a0 ], J( @
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
' H( g. W n) T! p# T/ d: X. C2 F* j( S2 J$ j6 H3 Q; I
主要区别:
/ T7 R8 J' H3 O1 c, ~ID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;6 e4 _' _0 K" o( k J
IC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;2 \" t' e3 h0 z! O8 r
7 h, J9 |# R; N. l' |% F5 fIC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;
& \ T4 U9 \# [' _3 _. _: h1 }/ }3 U( h7 `' ?

% y* w( g! \+ V- b1 y
! `1 S. v2 ]) t) J4 T ^, }$ e
6 T: K0 @! E0 H+ X: \( f2 ]7 m2 C+ x
以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。
4 D3 _/ `# a/ h+ c, t& O" d: a( ~7 c5 W
总结:: y4 N2 G5 m7 M% O: Z9 w: O, ? S
1.ID卡多为低频,IC多为高频;4 T: s, A1 Z; f- K v/ ~: Q: O
2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;
, @- e' M% c8 t# w3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;
5 g: q& O7 _+ {4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
) P" z) P* _2 j& Z7 b9 t* T1 Q; s1 {7 A" M1 @4 M+ H$ ]5 u- |: |
1.2 接触式和非接触式IC卡
3 }& n) W. J5 r S8 F
& x" j5 L' e% v# W% |8 J H4 @IC卡又可以分为接触式IC卡和非接触式IC卡。
+ H: d8 L! L3 A* S& A) N Z! g* ^$ @: R: l: C H V
接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
( P- S6 k1 [. K4 b# H- M6 d# P
0 \. b# b( H& Y6 O& v, {% ?, K非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。+ F, `3 J' [9 L" J
# g% I, K0 b6 a, R* }4 o
两者比较好区分,直接看卡上有无金属触点即可。
5 S' I- T' z" m- k M4 c
/ Y& F' \* y" h; d* H. p
; d0 i! b9 B( @* j3 U S9 e. `8 G/ j4 k
1.3 RFID和NFC, A c6 ^8 y6 v/ }% G: y9 I8 q
8 o7 c# w. E( Y* P4 K9 O% V
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
- W Q* C( o( X/ |& u) @: I& k i& J! s
RFID技术:
6 Q: P* z% l o' r; \1.通常应用在生产,物流,跟踪和资产管理上;
5 K& d% H6 m i2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;
1 c; A! G3 U+ j9 J3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
, ]; w: @8 y; I. `5 |4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;
+ p; s' z; ^8 q0 ^( q% M& P0 m& _% x/ G$ Z+ z9 @7 T
NFC技术:. M- ]; D; ]+ U* b& t! d8 H
1.通常应用在门禁,公交卡,手机支付等领域;
& c3 m$ S: P" m# `2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);
7 @2 Z4 D8 E/ _3.NFC作用距离较短,一般都是0~10厘米;* j9 L1 t; O! q. S4 }
4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;
# j$ F2 N; H5 b( ~& f) E B
+ {# x9 M1 n/ k& L总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。
9 T" u B' |7 D3 x, A8 L" Y
e6 f# E: U7 w1.4 ID卡类型
* i& B/ `. E0 u! f5 a A- z" K8 A% `. D' O; U- x1 e
ID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:
9 t0 o9 e# S8 k" b$ o" z3 Z m- R; X) N! \$ P
ID卡
$ E% v; \6 Y% |( fEM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
- z9 N& U( V% Z. n: Z: i/ C: d/ A* Y7 k3 T1 B
ID白卡; Z4 {5 ^8 f) R; |: Z- s9 |: e3 L
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
5 B, d' s7 Y% O+ G0 }T5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡0 n7 o2 x. O+ `* o+ F7 u) U. ]6 ?$ q5 J
- D: x/ @2 a! m- |$ C1 T1 T
HID卡; a {( X$ |9 m* u+ [- v
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;# k0 X0 T7 }* j4 h3 s
) v0 Q9 _+ C4 @$ t9 A2 W0 @9 Y
1.5 IC卡类型
1 `$ \* v( z* a2 t1 M
3 d5 S' B6 |4 q( U7 `* |& \IC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:& T9 z4 G" V6 P- e1 E4 M# w
* W u1 m+ |7 A+ j) b R$ W
M1卡" V7 P, r: o% V0 c" A, e! M& W
全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;
- }) Z' s$ Y8 C" ~' A' d3 R* v5 G& i
M0卡- X6 t* ~. E% h5 r
全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;
1 E# s4 p) p. E/ @8 T. Q
h) R& _, p$ P2 J以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:& j i; O _. v/ B1 z
9 G8 m& ], Z; h' P4 ^UID卡% |/ b2 x' v+ q, w- t
全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;4 u7 J# H1 s' o5 B' \
但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);
) V- t2 L5 c8 f& |- K" G; H2 U& M* }- G4 M1 H! w
CUID卡
* ~. \7 C6 I# ^0 @# A9 D( H为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
( I) M7 t2 a) ]& A近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;5 \5 [% _7 w. R; `
% W9 M# ]$ a* ?# qFUID卡( @4 \5 H4 Q J$ L# q2 w
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;
1 M" T$ {. w- q8 `1 U2 N但缺点也相对明显,价格高、写坏卡率高,写错就废卡。3 e$ x& H9 C3 |! N5 x5 b$ r, f
% v1 z6 i+ M( T- O8 X7 ]
UFUID卡! y4 n P7 l1 s! n
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
) q: @# F" W4 s" I可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;
! c; P; s* G: `4 A* z% c, |2 P- M# d3 r* M3 S# Y$ x. r
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。4 {1 X8 n5 R5 t. b' n
1 l4 Z; u8 }( f. I2 h4 M+ a0 Z6 G0 ?产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes( }, ~6 G1 _) H# ]3 M
9 u! g* Q, [" i/ J4 E+ e1.6 IC卡详细分析' A+ J( K6 z( A0 j! j$ t
7 f6 H! O9 }. x( Y1.6.1 IC卡存储器结构
/ M+ v' [- ~9 J& N( o. W4 T `% k. y; m2 o
以M1卡为例,介绍IC卡数据结构。
( [( @7 i+ G' vM1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;1 p9 [- Z2 l/ [4 L0 r) F
每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;/ A6 c3 Q6 `; N. S# `& h: W* N3 A9 x
8 b% }+ P! _, @# K* m- r# R& l7 {' Y& U+ F
* u" G' T" q0 O9 g厂商段1 Y- t1 n; N/ b
每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。
! U* l o( n7 \* T% Q2 X其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
( [3 P- @9 S& c' G. j并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。
6 H; J$ e1 U9 u2 N
4 D0 F7 k2 ?( ?" i. u0 s; N6 ~& {
0 F! P8 P+ b5 l) `, |
数据段 s+ ]: Y0 D& m6 l8 a1 f4 A
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。
) \6 h4 Z* j' f+ } A/ S数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。
) m" O1 a) U: J2 B4 R值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:% \$ L: v8 V/ v* H9 O, e
8 L7 }" h6 G; r
 o( N$ v2 A8 J" Y) d2 y- F
, I5 X8 T) \" Z0 Z* u k; IValue表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。2 l+ c5 O8 b7 _
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。
& V' [0 K' m4 u0 `9 q7 R d9 t8 T! |8 e/ f% J/ f
控制段- i4 o; z( D2 i( k: C5 a
每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:7 p c0 a7 T6 Y: c: O
7 U' S& M7 e0 }# ^

0 F0 e: b# o, c& m
3 O5 M, v& @/ Z如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。' m3 K* G1 i' h' w* u
! u' p, w$ d/ N' C2 E. w0 v( z' e
1.6.2 IC卡访问存储器! d* X. q% @# \6 X
5 {0 f) t2 i& x( ?4 D数据段支持的操作: S. ^2 `9 @+ T
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:
, ~( N. E- @2 f- M7 ]' b# {$ V y& n4 H$ q, Q- h* l
! J9 f8 J _+ ~
. G! u, F, t6 v8 W2 o
可以看到只有作为值段时,才能加、减、传送、恢复。& C5 Y/ o0 q$ `+ E" Z
5 _* i1 A/ j$ s5 [& ^/ R" {& e各区的访问位定义
. J8 a- Q/ ?! P每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
/ u2 c; y9 T+ H) w$ O/ d& E) w访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
2 D( x/ t% x4 U3 j5 k
! C+ T6 I4 A; ^6 G4 d9 g/ u% A2 s; l7 u0 P4 Y# q; y/ k+ f" T
$ V, n* l# W/ Z8 T- y$ l" l) @访问位在区尾的存储形式
( r3 T! j- _& ^4 _1 l2 Y9 q8 b" {; z# X3 _
' h' h( N8 p2 f# Z% E. U0 e
* ]! d: g9 f: I& ^+ S' h3 U9 u区尾的访问条件
2 \4 L) j, d9 L* e根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:: e0 r, O6 t' B# d
5 h7 l. L' L6 {, u8 m
# N* P! ?% @! u& p8 L
( r: i# m: y/ o7 k7 @' h用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。
8 J' J7 b0 [! G* m5 m例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;8 d o8 o# m9 z, ?0 P% Y, s d
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;
3 r0 e4 g4 H' ^" A2 |7 s
2 a' d/ c+ c) M3 D& R P数据段的访问条件
# v& }- |9 n% T! ~) [$ B根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。' z w) U& }! E3 l6 t+ A+ ~
相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。
( M6 v8 s( m. h1 p其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:5 a: o: N- ]+ `
% K& g. d; l' d) v$ Z; p
) @8 i, t( ~$ H5 b
8 C D/ g+ V0 U# _2 Q4 C& x9 {如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。0 a V" T. ?* ^5 E
# i5 `! O; s/ Q1 G$ o) ~; L/ h7 ~ J
1.6.3 举例说明
6 _3 C" i$ A3 O8 @+ i" D5 c9 U2 O, \) H+ U, ]
Mifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;
: Y7 f* y7 ]( _5 I字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:. J U' p5 g% P( k
6 j0 v. ?+ I$ U- u

8 f( m. G4 A0 G' F6 T. \) m3 G
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:& ^1 l, Y/ R; O, [
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。
1 K& O, v* k8 o+ j/ ~; q6 O0 ^4 L% \+ m# @. g3 t
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
; `* ~9 d5 u' pC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;7 O n; M& Z* y3 U# U5 G/ D
; j' y% S3 }7 Y4 F2 U- ~& g" J块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;1 _3 u9 _$ ` ^( g
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
0 [5 O) X$ w/ ^. p0 z块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;
& b; ]; |( ` {# Z- _: T: I块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;
s" X8 A- ^ d' u/ M5 E
. |. f9 ]) f) [ ]这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
7 e! d/ p6 J, F6 q5 N, {, D/ i, M/ q& A, i) ~# D

8 C8 B- {4 \& S) l
; S9 N6 e {' o最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;; V/ P8 m: l) N' k
最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;1 c8 G8 o3 G3 E) H$ j( |: R9 [
中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;
2 ~$ \8 a" K( o/ I2 Q
# Z! e a1 Z6 \5 x) [1.7 非加密IC卡和加密IC卡. `( x7 M: I7 f4 M* t2 J: U; M
; E, B) L3 ^5 g% g5 v
非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;/ y& G W+ b5 x" ^
而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。+ d3 `! x9 w! [. R; I7 a* O9 z
. w, M( t+ X7 R- B
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。
) D& S# J: m7 r" b
. m1 e' u! B+ J0 Y, U& X- Q对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。# m) ^/ n' \& m L* j$ N$ P
因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
( E3 P4 E+ O F' o# U2 ^8 }' R: F
* b# T" }. F: Z: I& ^% W参考资料:
% w# p" B# h2 B* U3 r {$ b& L& k码农生活 篇二:IC卡门卡模拟探秘
% M% x% y, N1 |) w& v0 ]IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】
* x* ? Q$ K: M谈谈 Mifare Classic 破解
: Y7 V8 v2 U- J/ y! ^7 Srfid-practice0 E) D' B$ i. w! L
Type A 卡存储结构与通信 S! r0 }! y6 j$ M( C& i
Proxmark3 Easy破解门禁卡学习过程
; n/ u9 Q0 X ]& y& w$ x
$ b" j$ \' B& B" p- ?2. 手机NFC模拟加密门禁卡
0 Z9 D2 t0 C% b/ [2 D* f$ W9 c) V- c2 X9 j/ P+ H5 |. n/ b. R
有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
/ n+ B8 Z: V8 G0 Q, ^; P& O/ c
5 B/ M* `7 |/ g2 Y3 Y( J# `首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
2 L; ^4 |, M% {4 o5 K9 G7 ~3 U部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。+ ?( t6 _+ g2 T/ N6 J
3 {8 N, L, a8 \
在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。# u5 X. x% k# {- i$ _ k
在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。
+ |/ y1 u) F& ]
: g- r8 ~8 Q% j: G1.读取加密卡的UID
, X8 Q, P3 V: t: \0 B$ F- N# Z5 @9 B打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
% M1 d# Y- G2 s5 i% Q6 J, r注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。0 o- | L" I7 D7 u7 @# q
前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节* W2 v1 K( w: H" \# x" k# p
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。
! Y* [; S! V9 y; U7 N* c, E2 x/ K" k3 R" X) p8 p9 V' M0 H" R

( Z3 D y" n- j- ]- O. d0 _
& Q* a+ Q v. }3 P2.读取CUID卡数据 `# L$ S3 @, t9 K& _8 G, ], h
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。
" G# a5 S5 `; m接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。5 `) V8 d, k: ^
9 Q: o2 e! n o
& u! l9 s3 G/ i1 O+ G" }
- C1 {4 }& T: c3 O# c2 o3.写数据到CUID卡" U! n7 [) M6 L; N, i9 {6 U& w
再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。) g; ~: a- R! E7 d* [9 f9 U
再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。- C# x8 S4 M$ l- V s( T
( ]7 k9 N$ [" B) |5 v3 y1 {! o6 x
, b( c, }4 a: S
$ ~$ w4 Q9 X5 D( g' A在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。
8 p$ b; H2 \$ |* ^3 v2 B8 X
$ N, A, Y0 m8 j) ~) T- g
, p$ { b! Y* I; F
! b, \8 H* C4 e1 F' A S, I6 n4.NFC手机复制CUID卡1 ]6 P7 L3 G5 g Q# p9 J/ e- p
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。1 l. {8 V( e, h# L
( \4 K: Q1 l# |; H4 g- o- E1 e接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
* `+ R8 x3 a6 { @! q- e3 [! D! W/ V0 D1 n* ^- `5 K
2 |3 b1 G E* I- |; H# b" z
|