02 IC卡介紹

比较简单的一个判断方法就是,如果卡(水滴)表面有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文件

    • 最後,兩者做比較,如下圖,很顯然手錶的廠商編碼不能被移除掉,所以無解!(在我家及學校電梯都無法使用)

  • 原本想利用其他方法來解決【廠商代碼】的問題,如下文

    • https://www.bilibili.com/read/cv8577443

    • 安裝 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