记录小米手机NFC模拟加密门禁卡,以及Proxmark3的使用。0 H- m v0 a1 T) j0 \
7 S- {* [, _ U! [8 U, w
0. 缘起$ r# K& {& e; _! v+ r* v9 B
7 z% |! L# r y7 c' O0 g! ~
之前,小区用的门禁卡为非加密的门禁卡,使用小米手机系统自带的门卡模拟功能复制即可。
( u7 Q% @( g; I* a/ U9 J9 Q后来,小区门禁系统换了一家供应商,再使用之前的方法复制门禁卡,手机提示为加密卡,无法复制。
( Q o; s. e/ S/ c# `/ Z' B' h! L
6 e* `8 \3 y1 h* a& w$ O新的门禁系统,更安全了,也支持APP远程控制开门了,直到有一天门禁卡丢了,开始使用APP开门,发现这APP写得烂透了,十次有五次点击开门按钮无反应,需要反复退出、打开APP多次才能点击开门按钮成功,还有两次直接没了开门按钮,提示到物业管理处处理……
1 [! S& R g9 E1 d那个时候,我又开始怀念用手机刷门禁的快感了。。1 y) f1 R p4 K3 [, K$ m
! ?# V. _, d, e7 W
1. 基础知识
1 \4 [7 B4 {, Y0 \7 n+ A" I
* }) H" x8 [( r% }' X; `5 v7 B于是,我开始查阅资料,基本确定了小米手机是还是可以通过其它方式模拟加密门禁卡的。8 l# b5 U1 E8 j2 A! W3 [5 N3 s: a3 T
然后,资料查多了,记不到,又怕以后用到需要重新找,干脆水一篇博客记录下来。& v+ e3 ~ ~& s1 ?
如果熟悉NFC和IC卡,或者只想模拟加密门禁卡,并不关心原理,这章可以跳过,直接看下一章。
- d) E) y/ t- l% \8 g4 D9 y5 W3 n6 l# D4 `' H1 h( K, w" N# e
1.1 ID卡和IC卡
* V, H4 y: p/ M3 i6 h5 e. U+ T
7 M6 L/ F/ e x) v( b" aID卡:全称身份识别卡(Identification Card),多为低频(125Khz),是一种不可写入的感应卡,含固定的编号,主要有台湾SYRIS的EM格式,美国HID、TI、MOTOROLA等各类ID卡。
d+ I& b3 u4 b( ~9 z0 x' {2 R. ^. Z2 f& [( F% O- e
IC卡:全称集成电路卡(Integrated Circuit Card),又称智能卡(Smart Card)。多为高频(13.56Mhz),可读写数据、容量大、有加密功能、数据记录可靠、使用更方便,如一卡通系统、消费系统等,目前主要有PHILIPS的Mifare系列卡。
# L: h+ g% ]/ l# E6 H# {0 D$ R
: P5 ~7 _3 x5 R4 G2 z4 h( P% B, z9 N主要区别:
) h4 a6 Z) g6 _! G7 NID卡,低频,不可写入数据,其记录内容(卡号)只可由芯片生产厂一次性写入,开发商只可读出卡号加以利用,无法根据系统的实际需要制订新的号码管理制度;
) O" Z6 m0 W( w" @ V! oIC卡,高频,不仅可由授权用户读出大量数据,而且亦可由授权用户写入大量数据(如新的卡用户的权限、用户资料等),IC卡所记录内容可反复擦写;
) V: e4 N( x4 A' W" ]) G/ s6 ?& W4 ^$ E0 L* c) s
IC卡由于其固有的信息安全、便于携带、比较完善的标准化等优点,在身份认证、银行、电信、公共交通、车场管理等领域正得到越来越多的应用,例如二代身份证、银行的电子钱包,电信的手机SIM卡、公共交通的公交卡、地铁卡、用于收取停车费的停车卡、小区门禁卡等;- M: z/ w* u9 t# ]( z; ~
2 m8 w+ l8 L; J4 [: J2 V0 L p
6 Q( y' `' K5 S: d
% M. l! O: ?# f5 f" [6 x. q
9 C. ]% j6 F, ~8 Z以上图片来自淘宝商家,网上找了半天相关资料,发现淘宝商家解释得最清楚。! u) {* C$ l0 A d/ p! Y1 q: e
% v2 H4 Y$ |5 c, B& |0 _: S
总结:
' t& ~2 }! `( |0 B9 w7 `& u& l) ^1.ID卡多为低频,IC多为高频;
( H9 W6 W3 A; q) @& S. @2.IC卡整体上看比ID卡更有优势,市面上使用的大多数也是IC卡;* {& g% S1 M# B% {$ f7 F
3.对于矩形白卡,里面为矩形线圈、表面没有编号的多为IC卡,里面为圆形线圈、表面有编号的多为ID卡;. j/ M5 C; {) h/ G5 ^ V
4.对于异形卡,有编号的多为ID卡,最好使用带NFC的手机进行测试(目前手机NFC只能读高频13.56Mhz),IC卡会有反应;
) S7 B4 z( p* P1 ~, s7 l! d
/ Z* g2 b$ Y T) ^- a, S8 `1.2 接触式和非接触式IC卡) J& m& r) w2 k
: Q5 |: e. v) e
IC卡又可以分为接触式IC卡和非接触式IC卡。
4 N4 H9 ]8 Y4 I% _0 X
) x3 h* G& T+ S! r; X G8 l接触式IC卡:该类卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写;
! j+ C- t3 d/ e
4 S: U; B" E% I+ l$ h N6 N非接触式IC卡:又称射频卡、感应式IC卡,该类卡与卡设备无电路接触,而是通过非接触式的读写技术进行读写(例如RFID、NFC),其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。该类卡一般用在使用频繁、信息量相对较少、可靠性要求较高的场合。
! P. s# @- {) x' ^% Q8 c7 _, R* D5 A6 {0 r
两者比较好区分,直接看卡上有无金属触点即可。$ R& E( T4 F* ~# w
+ _8 {3 u# \4 \- O( `5 |
5 d5 C# l/ x& P6 J
7 s4 H# _% \, }6 w0 ?+ V1.3 RFID和NFC" I4 O; c1 x) z" X0 a: _; l
1 R9 X. E* z) e# L. P. S! B
非接触式的读写技术常见的有两种:RFID技术和NFC技术。
; v! C: z" L3 M* h
' u+ q L8 U' X$ wRFID技术:
% h0 j3 M% {8 ?% C& x# t1.通常应用在生产,物流,跟踪和资产管理上;
3 v7 A/ ]( A j' |7 w& l; O% t _; }2.根据频率划分包含低频、高频(13.56MHz)、超高频、微波等;) E" R1 |: }/ i3 E4 Y1 K
3.作用距离取决于频率、读写器功率、读写器天线增益值、标签天线尺寸等,工作距离在几厘米到几十米不等;
, G; i5 ~$ e6 X4.读写器和非接触卡可以是一对多关系,也可以说一对一关系;且读写器和非接触卡是两个实体,不能切换;! U$ W5 E2 X0 ]- y v
6 f. v$ b: _7 `. GNFC技术:
2 c8 M% o z7 V6 z4 d' B1.通常应用在门禁,公交卡,手机支付等领域;
" H9 t7 g o4 A T8 J6 `5 [7 L2.频率也是13.56MHz,且兼容大部分RFID高频相关标准(有些是不兼容);
4 M. t! K* F9 A$ J! y0 o3.NFC作用距离较短,一般都是0~10厘米;
$ L% [4 B) ^; S9 a4.读写器和标签几乎都是一对一关系;且支持读写模式和卡模式,可以作为读写器也可变为非接触卡;2 f3 m. F+ I) o$ f: a- _
6 T, \# Q7 ~6 Q, p1 d
总体来说,NFC是RFID的子集,但NFC有些新特性又是RFID所不具备的。6 ?. H) M# E8 k% k
0 b/ X9 { V2 i& H# s8 r% b: y1.4 ID卡类型; F* `/ J8 E/ e# Z% `
5 R) q: Y0 G; x0 h7 pID卡,工作在低频(125Khz),根据卡内使用芯片的不同,有如下分类:4 Z( U( l5 ]' R' N' y
" x5 m: s0 M5 f) T: v F$ |2 q, K) v; W
ID卡. `& c' S" v+ c$ q
EM4XX系列,多为EM4100/EM4102卡,常用的固化ID卡,出厂固化ID,只能读不能写;常用于低成本门禁卡,小区门禁卡,停车场门禁卡;
8 h3 u! ~* N+ ?3 Z% L4 _: I" j6 X" U
ID白卡+ f7 r5 c: A/ A4 Z
EM4305或T5577,可用来克隆ID卡,出厂为白卡,内部EEPROM可读可写,修改卡内EEPROM的内容即可修改卡片对外的ID号,达到复制普通ID卡的目的;
9 c c% e C3 {$ rT5577写入ID号可以变身成为ID卡,写入HID号可以变身HID卡,写入Indala卡号,可以变身Indala卡1 F6 [8 b( B1 E/ |! K3 I
% R+ ?( g4 W+ `1 K tHID卡' l7 R ?+ Q7 ?6 C) U# z3 e3 ]
全称HID ProxⅡ,美国常用的低频卡,可擦写,不与其他卡通用;8 X! f& }$ ]/ b7 b# F! M5 {
. ?3 H. } r& h# Z4 O1.5 IC卡类型
, f6 k+ f3 D$ `! M# h1 n. d
/ d& m: s% p& xIC卡中最常见的是NXP Mifare系列卡,工作在高频(13.56Mhz),根据卡内使用芯片的不同,有如下分类:; i2 s+ Q% G9 ?
& w+ W9 h$ Z) K, z/ c( s: e& |5 _M1卡
. y0 V/ S2 e' W6 x+ x; M, T全称Mifare S50,是最常见的卡,出厂固化UID(UID即指卡号,全球唯一),可存储修改数据;常用于学生卡,饭卡,公交卡,门禁卡;9 y% I# e: h6 ^5 ?
2 E8 M1 c A7 O9 J& ~* D
M0卡
3 R6 D5 @8 N" [" `) C全称Mifare UltraLight,相当于M1卡的精简版,容量更小、功能更少,但价格更低,出厂固化UID,可存储修改数据;常用于地铁卡,公交卡;/ [' t( K0 b6 |4 ?6 ~, E7 S. P
, F; }3 m+ v) E1 Z5 ^3 o# M/ A以上两种固化了UID,为正规卡,接下来就是一些没有固化UID,即不正规的卡:
# _6 E4 Z5 v- k/ ?0 [
! _6 r0 O7 C F) h9 H3 L7 yUID卡
. {& f$ X6 _ j" X0 v全称Mifare UID Chinese magic card,国外叫做中国魔术卡,M1卡的变异版本,使用后门指令(magic指令),可修改UID(UID在block0分区),可以用来完整克隆M1卡的数据;
) q, ^; Y) }+ s0 Z/ j# Y但是现在新的读卡系统通过检测卡片对后门指令的回应,可以检测出UID卡,因此可以来拒绝UID卡的访问,来达到屏蔽复制卡的功能(即UID防火墙系统);% ?) k6 O9 o9 q- d1 z! A9 [; z
8 g9 N* L5 B" g4 N; Q
CUID卡3 u# ~3 I9 L) n" [3 i4 O$ e) m
为了避开UID防火墙系统,CUID卡应运而生,取消响应后门指令(magic指令),可修改UID,是目前市场上最常用的复制卡;
* c! H! j1 L) H7 P- x/ x近两年,智能卡系统制造公司,根据CUID卡的特性研发出CUID卡防火墙,虽然现在(2019年)还不是很普及,但是总有一天CUID卡会和UID卡一样面临着淘汰;
; F. [ w) T' y& ^3 p7 X
J" v( I4 C9 r/ V/ h. \- m! HFUID卡( A0 n2 q1 x% G$ _
FUID卡只能写一次UID,写完之后自动固化UID所在分区,就等同M1卡,目前任何防火墙系统都无法屏蔽,复制的卡几乎和原卡一模一样;
8 j4 r. A8 ?: C( n2 e1 B但缺点也相对明显,价格高、写坏卡率高,写错就废卡。
u/ r) v! ~ z% k- g9 \1 O1 y6 i# Y6 K
UFUID卡8 f8 L5 c N7 A2 ]4 P) i9 _) H
集UID卡和FUID卡的优点于一身,使用后门指令,可修改UID,再手动锁卡,变成M1卡。
7 i9 b, k* C9 m j可先反复读写UID,确认数据无误,手动锁卡变成M1,解决了UID卡的UID防火墙屏蔽,也解决FUID的一次性写入容易写错的问题,且价格比FUID卡还便宜;* D2 E! z8 A: A: z' |
- c! k" X' _8 n7 |, z! l7 s4 T
判断是M0卡(Mifare UltraLight),还是M1卡(Mifare Classic 1k),可以通过SAK值判断。
( J: I; X3 D9 ]# ^! b
( J5 F7 q6 g- I4 j/ Z产品ATQASAKUID长度Mifare Mini00 04094 bytesMifare Classic 1k00 04084 bytesMifare Classic 4k00 02184 bytesMifare Ultraligh00 44007 bytesMifare Plus00 44207 bytes
/ _+ y$ ^9 ~/ x# S$ v8 ]4 T2 N; `
% U6 B U( g, m0 Y, O8 w. b1 G Q. I1.6 IC卡详细分析
9 c1 S6 T; {! H5 }! W4 f8 N- ?# d; y* d& z, q0 }% k: }: {
1.6.1 IC卡存储器结构
! W- `3 f2 o9 C
) q8 ^$ s' F" x- h. P以M1卡为例,介绍IC卡数据结构。+ v4 w0 l4 w/ L
M1卡有从0到15共16个扇区,每个扇区配备了从0到3共4个数据段,每个数据段可以保存16字节的内容;
) p! Q% Y5 Z- _% r* v2 n" b每个扇区中的段按照0~3编号,第4个段中包含KEYA(密钥A 6字节)、控制位(4字节)、KEYB(密钥B 6字节),每个扇区可以通过它包含的密钥A或者密钥B单独加密;7 ]% i5 Y8 ~ R: {0 j x
+ j7 `. w* F: C H1 w, c

( z/ u1 ~; U, `; Q* N5 g! [' \5 _/ ^& x3 d" ~# A9 E
厂商段
3 I3 P$ h* o9 t每张M1卡都有一个全球唯一的UID号,这个UID号保存在卡的第一个扇区(0 扇区)的第一段(0 编号数据段),也称为厂商段。5 M" j! X! E1 q0 d/ \. H
其中前4个字节是卡的UID,第5个字节是卡 UID 的校验位,剩下的是厂商数据。
* ?/ J2 ?' X& \并且这个段在出厂之前就会被设置了写入保护,只能读取不能修改,前面各种能修改UID的卡,UID是没有设置保护的,也就是厂家不按规范生产的卡。( r5 |6 y( H8 L) C( w, V
9 l& J% h3 ]9 F9 w9 t( i* B! }8 K: `$ i
; [: X' W; Y# V9 S2 \数据段$ ?( q" Z( K+ B
除了第0扇区外,其它每个扇区都把段0、段1、段2作为了数据段,用于保存数据。: d2 i$ ]2 C- E2 A/ c" V# ~
数据段的数据类型可以被区尾的控制位(Access Bits)配置为读/写段(用于譬如无线访问控制)或者值段(用于譬如电子钱包)。; ?' l+ {& i; p0 h& C
值段有固定的存储格式,只能在值段格式的写操作时产生,值段可以进行错误检测和纠正并备份管理,其有效命令包括读、写、加、减、传送、恢复,值段格式如下:
+ C" j# O4 ~2 X* u
( w% r5 b: n3 p" [: O, H k) z( e2 Q. Q3 |/ K8 Y$ j2 a6 W
7 h$ o a% a2 Y/ B& h8 ]
Value表示一个带符号4字节值,为了保证数据的正确性和保密性,值被保存了3次,两次直接保存,一次取反保存。该值先保存在0字节-3字节中,然后将取反的字节保存在4字节-7字节中,还保存了一次在8字节-11字节中。: X& N: g- R6 b
Adr表示一个字节的地址,当执行备份管理时用于保存存储段的地址。地址字节保存了4次,取反和不取反各保存了2次。在执行加值、减值、恢复和传送等操作时,地址保持不变,它只能通过写命令改变。) N6 _$ c, J$ M9 V( c/ I, K
, P+ f! K R4 ?$ E% M控制段
. [0 B: D2 i7 ~7 P每个扇区都有一个区尾控制段,它包括密钥A和密钥B(可选),以及本扇区四个段的访问控制位 (Access bits);访问控制位也可用于指出数据段的类型(为读/写段还是值段);控制段的存储格式如下:
! _/ N9 R$ K; s3 J5 K# S! W; R6 w$ T& Y( r" q4 r- ~( q) a

3 E; Z9 q( |+ l6 v0 V' k
^4 l: @) q/ p0 _+ M' }8 b. `6 F如果不需要密钥B,那么区尾的最后6个字节可以作为数据字节,用户数据可以存储在区尾的第9个字节,这个字节具有和字节6、7、8一样的访问权限。
' |0 _% W; x [8 E" `2 E# E6 l! F$ J6 N: t1 ?) l" i* \+ U& d( O
1.6.2 IC卡访问存储器
" m% C$ W; c X
) g$ ~ s1 k; J% s) J' ^$ V数据段支持的操作' ?( Z' [( g1 {7 X& b* L+ `: I: E1 U
根据使用的密钥和相应区尾访问条件的不同,数据段所支持的存储器操作也不同,存储器的操作类型如下:0 S* Y3 L" R' r% K
- R" y- m$ b' a" e$ s
9 N, p' ~9 `) A/ @7 ]
4 l: ?! t7 r* L- h7 t3 w
可以看到只有作为值段时,才能加、减、传送、恢复。4 x. H6 t; [, \. E
- R( \8 F8 T$ O9 R6 E# |
各区的访问位定义
+ [" F, f; S# M8 T! D0 W+ b' z每个数据段和区尾的访问条件由3个位来定义,它们以取反和不取反的形式保存在区尾指定字节中。
l7 p- `, P2 Z& R* ~访问位控制了使用密钥A和B操作存储器的权限,当知道相关的密钥和当前的访问控制条件时,可以修改访问条件,各区的访问位定义如下:
5 i' m9 f& v! j5 L* f) @+ o; t1 r4 Q. M' T( Z5 M

9 t* G0 `6 g# y; t1 T$ }
$ i0 ^4 q2 z" P4 f访问位在区尾的存储形式7 u j* \# R i( a. V. r+ H7 m
5 N! e' v* }# p5 z% R% @
6 d- R+ i, n) D' ]( e" p
! k+ a0 g9 n2 P1 w) M- c" X
区尾的访问条件, [" X) {7 E) _2 W! f
根据区尾(段 3)访问位的不同,访问条件可分为 “从不”、“密钥A”、“密钥B” 或“密钥A|B”(密钥A或密钥B),区尾的访问条件如下:" K, E3 o4 }6 {0 {* i* T
' c8 Z0 |6 y( n. f$ n+ s

$ s: P# _1 o) J' v' I* t; X0 L) W7 G3 e5 [( Y n/ }
用灰色标明的行是密钥B可被读的访问条件,此时密钥B可以存放数据。
5 V2 [( r. l# n. D! h7 Q例如:当段3的访问条件C13C23C33=100时,表示:密钥 不可读(隐藏),验证密钥B正确后,可写(或更改);访问控制位在验证密钥A或密钥B正确后,可读不可写(写保护);密钥B不可读,在验证密钥 B 正确后可写;% k. g9 g3 p3 N6 `0 U
又如:当段3的访问条件C13C23C33=110或者111时,除访问控制位需要在验证密钥A或密钥B正确后可读外,其他如访问控制位的改写,密钥 A,密钥 B 的读写权限均被锁死而无法访问;
?1 b5 a4 |( b+ u
, `2 G9 Q+ y+ g: W/ Q: `数据段的访问条件3 A6 L. Y+ S1 x- X8 s6 p; {. `
根据数据段(段 0-2 访问位的不同,访问条件可分为 “从不”、“密钥A ”、“密钥B ” 或“密钥A|B”(密钥A或密钥B)。
1 t; T9 }- n7 t: O R* E. |, s- W相关访问位的设置定义了该段的应用(或者说数据段类型)以及所支持的应用命令,不同的数据段类型可以进行不同的访问操作。 读/写段可以进行读操作和写操作。值段可以进行加、减、传送和恢复的值操作。4 W; |5 d4 h% |- h1 b7 c ]7 B
其中一种情况中(001)只能对不可再充电的卡进行读操作和减操作,另一种情况中(110)使用密钥B可以再充电。 厂商段无论设置任何的访问位都只是只读的, 数据段的访问条件如下:
( t7 {7 a0 B8 m% [+ j
5 @' R: z6 d5 h3 W3 X& E! g, t+ f
! b' L4 u5 N2 p. V. [' r0 s! r S
% p0 k/ y7 f- v如果密钥B可以在相应的区尾被读出,它就不能用于确认(在前面所有表中的灰色行)。如果读卡器要用这些(带灰色标记的)访问条件的密钥B确认任何段,卡会在确认后拒绝任何存储器访问操作。
2 F, x1 a, |+ F5 f
+ L9 w5 ~, \+ }/ D1.6.3 举例说明
: K1 U4 s4 G% c+ V6 X; z; ` R5 X1 e, t; j' I6 h
Mifare S50出厂时,访问控制字节(字节6-字节9)被初始化为“FF 07 80 69”,KEY A和KEY B的默认值为“FF FF FF FF FF FF” ;& |" J7 m% } n \5 P8 a6 s
字节6为FF,二进制为1111111;字节7为07,二进制为00000111;字节8为80,二进制为10000000,如下:1 b. }. T' M: i: S% L( o8 H* T
7 K! m; ]9 n" B/ W# r! c; G! [
) W7 q) [2 E* }1 A! j( H, d P z8 k% ~! m9 j
对照前面的访问位在区尾的存储形式图,可得知访问控制位为:2 ~% ^2 G! a3 o$ _
C10C20C30=000;C11C21C31=000;C12C22C32=000;C13C23C33=001。& W! R* }* J1 O* M& q$ n
% z+ W r5 K; k! `8 b. K( A' |* Z% S
C10C20C30、C11C21C31、C12C22C32对应数据段0、1、2,参考数据段的访问条件图即可得知该段三个数据区的访问权限;
. ]# ~( A7 _. p$ \# X. wC13C23C33对应区尾(段 3),参考区尾的访问条件图即可得知该段的访问权限;% g- F" n5 P. A; u
! ^- x3 E4 c% o块0控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;! A% k1 Q' X5 {( A& m* y6 j
块1控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;* X Y% b- P) e9 k! H
块2控制位为:0 0 0 权限为:通过A或者B密码认证后可读,可写,可进行加值和减值操作;, i& f: S* {! L% d b- U
块3控制位为:0 0 1 权限为:A密码不可读,验证A或者B密码后可改写A密码;验证A或者B密码后,可读可改写存取控制;验证A密码或者B密码后,可读可改写B密码;. w, W( r/ a8 D
3 p* @* a" e6 G4 i
这样每次换算还是有点麻烦,可以使用M1 S50卡控制字节生成工具快速换算:
; C r' D! l3 e: z6 v& U
3 i1 z+ [7 q. ?4 s7 l
' q) Q, l' E# Q, M; z' N
`- j$ k G& ]" M$ E% q最下面一行可以输入想解释的控制字,也可以根据上面的设置生成控制字;
- d5 N o8 [8 u最上面一行,左边是数据段0、1、2的访问控制位,右边是对应权限所需要的秘钥;
$ Q1 Z; X: T0 |: J$ d! ~中间的一行,左边是区尾的访问控制位,右边是对应权限所需要的秘钥;
7 f! M7 _; Y% K3 h* j R' h5 v# S( E7 u5 l- [5 g
1.7 非加密IC卡和加密IC卡
; ~2 C2 L5 |: O3 U. U( ?
% B+ A, _3 i& ?1 r- g5 a5 a8 ^非加密IC卡和加密IC卡的区别就是,非加密IC卡中所有扇区的KEYA和KEYB数值都是默认值FFFFFFFFFFFF;
, m7 \" w, f& k( }. L, y N1 f而加密IC卡中,其中有扇区的KEYA和KEYB不等于FFFFFFFFFFFF,部分扇区加密的卡称半加密IC卡,所有扇区都加密的卡称全加密IC卡。
2 X: T& K9 R' R0 [' b4 L- P( d5 ~
一般的读卡器,像手机的NFC,是读不到IC卡的加密数据的,需要用专门的工具,比如Proxmark3读取。3 D# o; x! [- O
, o! C' `3 ^8 l# E- ]8 r! S+ |
对于IC卡,除了对卡上数据加密,还有滚动码加密、服务器数据验证等技术。
7 X4 P# h/ R1 B! z$ f6 ?因此,对IC卡的解密,更多的是门禁卡、签到卡、车库卡等的讨论,像公交卡、饭卡等涉及到资金问题的,基本都有服务器定期校验,得先搞定服务器再说,难度高还违法。
* t+ e' l, V) [# v" R+ V. D; H8 B
7 \4 m. l; I! O9 ]参考资料:
% m8 K/ M" K; ^; x码农生活 篇二:IC卡门卡模拟探秘
: v* i+ V4 t( |IC卡简介【M1/S50,UID,CUID,FUID,UFUID复制卡介绍】' g* ~( d- ^' l
谈谈 Mifare Classic 破解
" d( J* N$ Z1 G; l! ?7 wrfid-practice
* S1 x( Q6 n; o4 |6 ~2 ^Type A 卡存储结构与通信1 [% u) v9 l! ]: l! S
Proxmark3 Easy破解门禁卡学习过程& X* [/ d( G' \/ }3 C# G' L
5 B( K+ [, w) T0 D- r3 I4 w9 M2. 手机NFC模拟加密门禁卡
6 P2 Q/ G3 o* D1 t' P# f$ [
+ Q8 X+ u" Q/ M( D% Q( g有了前面的知识,再来看现在我的加密门禁卡情况,手机能识别为加密卡,肯定是IC卡。
$ |% B1 ~; B& m. T& x/ `% @
E& h+ p* j& R+ A. P8 ?4 o首先,加密卡在目前这个情况下是无法解密的,如果按照下面的操作失败,请参考下一章。
6 n9 W% f3 N; P6 `部分门禁系统只认证IC卡的UID,利用这一情况,可以试试复制门禁卡的UID,看运气能否打开门。
6 V: ]% M9 ~. H$ K; Q3 |" j- t
; k/ O& O. _) R" T, B在已root的情况下,直接使用APP NFC卡模拟 便可读取加密卡的UID和非加密数据、并写UID到手机NFC里。
7 u$ Y; `; [ Y3 C% `! y/ J: {在未root的情况下,使用小米系统自带的门卡模拟功能,出于安全考虑,是不能对加密卡进行任何操作。手机的NFC,理论上可以读加密IC卡的UID,因此可以使用第三方软件MifareClassicTool读取UID,因为没有root,不能写手机NFC,但可以写IC卡,因此还需要一张CUID卡(不能使用UID卡),某宝上一块多一张,思路就是先读取加密卡的UID,再读取CUID卡的数据,然后将CUID卡的UID改为加密卡一样的UID,再将修改后的数据写回到CUID卡,最后用小米系统自带的门卡模拟功能,复制未加密的CUID卡即可。- e$ t$ c: X4 K- ?
4 Y) w9 P; @3 H: [! Y D8 B+ }1.读取加密卡的UID
5 d; i2 V5 `! M" n* `; ~打开软件Mifare Classic Tool,将加密门禁卡放到手机的NFC感应区域,识别到IC卡后,点击“工具”->“显示标签信息”,可以看到加密门禁卡的8个数字,4字节的UID。
. G6 \! H( h1 [9 f4 z注意,在16进制里,每个数字为4位(2^4=16),8位(bits)为一字节(bytes),即两个数字组成一字节,这里8个数字,即为4字节(Bytes)。
9 D7 O" {/ d- T3 G' q" U前8个数字,每个数字代表4位,8位为一字节,8个数字就是32位,即4字节4 r7 ?& |* x2 C# v% w9 L
接着打开“工具”->“BCC计算器”,输入UID,得到1位BBC(两个数字)校验数据。$ N# V+ F: D& }: X6 e
# ^( C# F) r# d. V, O9 }% P
: q! G4 w8 ^: W+ A; n
1 t6 G2 C7 ~& E5 t- Y2.读取CUID卡数据4 N3 m7 Q+ b' M; ^
将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“读标签”->“启动映射并读取标签”,即可得到CUID白卡的所有信息。3 ^1 B- h, | q- I
接着修改第一行的前10个数字,改为加密门禁卡的UID(8个数字)和BCC(2个数字),一共10个数字,并点右上角保存图标保存。
1 a7 s. Z9 y. R
( M9 E5 q: Q7 }- ?; l) a- [& w: i2 J
4 r) T& L. p0 o8 G% J4 H' b- _
3.写数据到CUID卡
2 n. X( C- ]! F9 D; E( f再将CUID卡放到手机的NFC感应区域,识别到IC卡后,点击“写标签”,勾选“写转储(克隆)”->“显示选项”->“高级:使能厂商块写入”。
( I( }6 M6 p+ M! W7 C/ ]! H再点击“选择转储”,选择刚才保存的数据,点击“选择转储”。
9 u% z: h) p! X, o/ G
- ]1 c6 U% t' ]4 n1 J: s" g# F& x0 b: p' e" o. T
B V& o* c1 N" ?$ k, }在弹出的选择写扇区界面,默认即可,点击“好的”,最后点击“启动映射并写转储数据”。6 z, I, x# n% ]) f2 G
6 P, C: h. H- J% O0 `
( ?9 z ~' b; }' I/ C$ R0 r& j2 N" A0 }, C3 n
4.NFC手机复制CUID卡( j6 s& G6 F0 S
最后,使用小米手机系统自带的门卡模拟功能,复制刚才写入新UID的CUID卡即可。
5 f, }4 [2 H+ K! N" V. w& h+ T' r B; Z. Y; N2 X
接着,就看运气吧,我小区的门禁系统就只认UID,搞定。
, z* Q1 i2 r8 A5 v ^
+ y% ?# t' h% l7 ? s* m; K4 ?$ }" `+ o, {0 x7 K6 s
|