02 IC卡介紹
近场通信是一种短距高频的无线电技术,在13.56MHz频率运行于20厘米距离内。其传输速度有106 Kbit/秒、212 Kbit/秒或者424 Kbit/秒三种。这段话也说明了它的技术指标,13.56MHz,传输距离,传输速度。
比较简单的一个判断方法就是,如果卡(水滴)表面有10位或者18位编码,且以00开头的,那些都是ID芯片的卡。在IC卡中包含接触式的和非接触式(感应卡)。飞利浦公司的mifare1(代号M1)系列就是一种非接触式的卡,M1卡的使用比较广泛,一般公交IC卡,校园卡,购电卡,购水卡等等。综上,因此小米手环NFC版本仅仅支持13.56MHz的频率的IC卡。
一、IC複製卡的種類和功能說明
這次購買的卡片
IC卡加密区段简介
一般我们的门禁卡都为M1系列,所有这里简单说一下M1的加密区段原理。M1卡分为16个扇区,每个扇区对应4个block(block0-block3),一共64个block,编号为0-63。**第0扇区的第0block用于存放厂商代码,已经固化无法更改。其余区的第0-2block用于存放数据,block3为控制块用于存放密码A&存取控制&密码B,结构如下:
A0 A1 A2 A3 A4 A5 FF 07 80 69 B0 B1 B2 B3 B4 B5
(密码A 6字节) (存储控制 4字节) (密码B 6字节)
并且每个扇区块3中的密码和存储控制全部都是独立的,独立控制本扇区的各种操作,每个扇区都能实现不同的功能,所以广泛用作一卡通。存储控制里面4字节的具体含义我也不是很清楚(不影响我们破解),所以就不说出来误导大家。卡中每个block包含16字节,所以M1卡的容量=16扇区*4块*16字节=1024字节。
我这次破解其实就是针对密码A和密码B做文章。
二 、利用可反覆擦寫的UID或 CUID卡複製家裡的門及學校的電梯磁扣
準備設備及軟體
軟體:M1T 1.7.0.0版 (MifareOneTool)
設備及材料
我上方所買的為可反覆擦寫的UID、CUID卡都可用 (ID-5200白卡不可用)
取得原卡的資料(DUMP檔)
放上原卡,點擊【掃描卡片】
按【一鍵解原卡】,並將原卡Dump文件儲存下來
放上新的CUID卡,點擊【寫C/FUID卡】(如果用UID卡,就點擊【寫(UF)UID卡))
比較兩個卡的差異
再同上面動作,取得新卡的資料(Dump)
點擊【差異比較】
這樣就完成非加密卡的複製了
三 、利用小米手環複製家裡的門及學校的電梯磁扣
在前一篇文章己談過【小米手環】的廠商編碼的問題,由於小米手環把廠商編碼鎖住了,所以廠商信息無法複製進手環。這就導致了,所有帶有檢測廠商編碼的門禁,是無法使用的。如果你的門禁不檢測廠商信息,那是可以刷成功的,反正則無法刷成功。
我這次使用【Amazfit米動手錶青春版S】來測試
利用手機APP-Zepp把家裡門禁卡寫到手錶去
再儲存手錶的Dump文件
最後,兩者做比較,如下圖,很顯然手錶的廠商編碼不能被移除掉,所以無解!(在我家及學校電梯都無法使用)
原本想利用其他方法來解決【廠商代碼】的問題,如下文
安裝 Fiddler
都照著文章做,但不知是不是我華米手錶與小米手環不同,還有最後【寫入空白卡】不是很理解,導致沒成功
var UID = "3669329D";//引号内改为被复制卡ID
var isMusicRequest = 0;
if ((oSession.host == "api-mifit.huami.com")&&(oSession.fullUrl.Contains("nfc/accessCard/script/init")||oSession.fullUrl.Contains("nfc/accessCard/script/request")))
{
isMusicRequest = 1;
}
if (isMusicRequest == 1)
{
var requestStringOriginal = oSession.GetRequestBodyAsString();
var requestJSON = Fiddler.WebFormats.JSON.JsonDecode(requestStringOriginal)
requestJSON.JSONObject['fareCardType'] = "0";
requestJSON.JSONObject['fetch_adpu_mode'] = "SYNC";
requestJSON.JSONObject['sak'] = "08";
requestJSON.JSONObject['uid'] = UID;
requestJSON.JSONObject['aid'] = "";
requestJSON.JSONObject['atqa'] = "0400";
requestJSON.JSONObject['action_type'] = "copyFareCard";
requestJSON.JSONObject['blockContent'] = UID + "";//引号内填充上文中要求复制的除uid外的部分
var requestStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(requestJSON.JSONObject);
oSession.utilSetRequestBody(requestStringDestinal);
} 作者:Zombie_fly https://www.bilibili.com/read/cv8577443 出处:bilibili