記 Mac 下 PN532 利用mfoc,mfcuk工具復(fù)制門禁卡

起因

小區(qū)門禁卡補辦一張要50太貴了,經(jīng)過一番研究,發(fā)現(xiàn) pn532 這個東東,于是 pdd 上 48 包郵剁了一套有外殼的 pn532 讀卡器,還附送了 4 個漂亮的卡通版 cuid 空白卡。當然店家還有手機端的軟件跟注冊碼附送,如果有安卓機,直接手機上就能完成,可是我手里沒得安卓機,只能在我的macbook上試驗了,所以就有了下面的過程,記錄一下。


nfc讀卡器

準備

PN532 讀卡器,typc 轉(zhuǎn) usb 接口線
門禁卡
空白的 cuid 卡
Macpro 13 寸電腦一臺:系統(tǒng)版本 Mac OS 11

安裝驅(qū)動

  1. 我購買的這個 pn532 采用的 usb 轉(zhuǎn)串口的調(diào)試芯片是沁恒的 ch340 芯片,所以去官網(wǎng)找到對應(yīng)的 macos 驅(qū)動http://www.wch.cn/download/CH341SER_MAC_ZIP.html,下載并安裝。
    安裝完成過后,在控制臺輸入
    ls /dev/tty*可以看到類似/dev/tty.wchusbserial1340的設(shè)備,則說明已經(jīng)被正確掛載了,如果沒有設(shè)備,安裝驅(qū)動包里相關(guān)教程進行設(shè)置。

  2. ch340模塊測試:如果手里有其他的 ch340 usb 轉(zhuǎn)串口模塊,只需要把模塊的 rxd 與 txd 短接,然后控制臺輸入screen /dev/tty.wchusbserial1340隨便按幾下鍵盤看看是不是在屏幕上有返回 ,理論上是按什么返回什么說明模塊驅(qū)動安裝成功

工具庫安裝

如果要讀取門禁卡信息,需要安裝設(shè)備相關(guān)的工具庫依賴,需要 libusb ,libnfc 這兩個庫,嫌編譯安裝麻煩,我直接使用 Homebrew 安裝了。

這兩個安裝完成后,將 pn532 與 mac 連接好,門禁卡放上,然后控制臺輸入nfc-list,這時候如果不出意外,應(yīng)該能讀取到門禁卡的數(shù)據(jù)了。然而我的顯示如下

nfc-list uses libnfc 1.8.0
0 device(s) found

解決方案:
控制臺輸入 LIBNFC_LOG_LEVEL=3 nfc-list 可以列出日志信息,大致如下

info    libnfc.config   Unable to open file: /usr/opt/local/etc/nfc/libnfc.conf
debug   libnfc.config   Unable to open directory: /usr/opt/local/etc/nfc/devices.d
debug   libnfc.general  log_level is set to 3
debug   libnfc.general  allow_autoscan is set to true
debug   libnfc.general  allow_intrusive_scan is set to false
debug   libnfc.general  0 device(s) defined by user
...

從日志中可以看到,相關(guān)的配置文件沒有找到,去對應(yīng)的位置添加配置文件和目錄即可
我們需要修改 libnfc 配置文件開啟自動掃描,否則將無法正確識別到 NFC 設(shè)備。libnfc.conf 配置信息如下,

allow_autoscan = true
allow_intrusive_scan = true

配置信息修改完成后,還需要添加 devices.d 目錄,同時還需要在該目錄下添加 pn532 設(shè)備的配置信息
新建目錄

sudo mkdir -p /usr/opt/local/etc/nfc/devices.d

然后在 devices.d 目錄下添加配置文件 mypn532.conf

name = "My_PN532"
connstring = pn532_uart:/dev/tty.wchusbserial1340
allow_intrusive_scan = true

添加完成后,再次運行nfc-list 就能正常讀取到我們的門禁卡信息了

nfc-list uses libnfc 1.8.0
NFC device: My_PN532 opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04
       UID (NFCID1): 4a  f1  5e  da
      SAK (SEL_RES): 08

可以看到我的門禁卡的 SAK 是 08,是可以被破解復(fù)制的,如果為 20 的話,可能下面的方案就不太適合了

讀取并復(fù)制卡信息

  1. 先使用 mfoc 工具進行破解。

mfoc(Mifare Classic Offline Cracker)是一款基于 nested authentication 驗證漏洞破解含有默認 key 的 M1 卡的開源軟件,mfoc 軟件自帶了一些常用的默認 key 來進行破解,用戶也可以通過參數(shù)添加自定義的 key。

安裝命令 brew install mfoc 安裝后執(zhí)行命令

sudo mfoc -O bak.mfd
ISO/IEC 14443A (106 kbps) target:
    ATQA (SENS_RES): 00  04
* UID size: single
* bit frame anticollision supported
       UID (NFCID1): 4a  f1  5e  da
      SAK (SEL_RES): 08
* Not compliant with ISO/IEC 14443-4
* Not compliant with ISO/IEC 18092

Fingerprinting based on MIFARE type Identification Procedure:
* MIFARE Classic 1K
* MIFARE Plus (4 Byte UID or 4 Byte RID) 2K, Security level 1
* SmartMX with MIFARE 1K emulation
Other possible matches based on ATQA & SAK values:

Try to authenticate to all sectors with default keys...
Symbols: '.' no key found, '/' A key found, '\' B key found, 'x' both keys found
[Key: ffffffffffff] -> [................]
[Key: a0a1a2a3a4a5] -> [................]
[Key: d3f7d3f7d3f7] -> [................]
[Key: 000000000000] -> [................]
[Key: b0b1b2b3b4b5] -> [................]
[Key: 4d3a99c351dd] -> [................]
[Key: 1a982c7e459a] -> [................]
[Key: aabbccddeeff] -> [................]
[Key: 714c5c886e97] -> [................]
[Key: 587ee5f9350f] -> [................]
[Key: a0478cc39091] -> [................]
[Key: 533cb6c723f6] -> [................]
[Key: 8fd0a4f256e9] -> [................]
...

如果最后運行沒有報錯,那么 mfoc 就已經(jīng)成功備份出門禁的數(shù)據(jù) bak.mfd 了,使用寫卡命令直接將備份文件寫入新卡即可。

如果 mfoc 報錯,說明你的門禁卡并沒有使用這些默認 key,就需要使用 mfcuk 進行嘗試破解了。

  1. 使用 mcuk 破解

mfcuk (MiFare Classic Universal toolKit) 是一款基于 dackside 攻擊原理破解全加密 M1 卡的開源軟件,mfcuk 通過算法的漏洞破解出第一個 key,如果某個扇區(qū)的 key 被破解出來,就可以再使用 mfoc 工具使用 nested authentication 攻擊破解其他扇區(qū)的密碼。
安裝命令 brew install mfcuk安裝后執(zhí)行命令

sudo mfcuk -C -R 0:A -s 250 -S 250 -v 3

破解過程很久,運氣好的據(jù)說半個小時就能破解出第一個 key 控制臺如下顯示

INFO: block 4 recovered KEY: 3c5d7f1e

得到第一個 key 之后,我就可以跟退出 mfcuk ,通過獲取到的 key,使用 mfoc 進行再次解密

sudo mfoc -k 3c5d7f1e -O bak.mfd

如果 mfcuk 破解的第一個 key 是正確的,mfoc 命令一般會在幾分鐘之內(nèi)完成整個 M1 卡所有扇區(qū)的破解,最終將成功生成導(dǎo)出備份文件。

寫入新卡

使用 libnfc 軟件包自帶的 nfc-mfclassic 命令進行寫卡

nfc-mfclassic 的相關(guān)參數(shù)如下

nfc-mfclassic --help
Usage: nfc-mfclassic f|r|R|w|W a|b u|U<01ab23cd> <dump.mfd> [<keys.mfd> [f]]
  f|r|R|w|W     - Perform format (f) or read from (r) or unlocked read from (R) or write to (w) or unlocked write to (W) card
                  *** format will reset all keys to FFFFFFFFFFFF and all data to 00 and all ACLs to default
                  *** unlocked read does not require authentication and will reveal A and B keys
                  *** note that unlocked write will attempt to overwrite block 0 including UID
                  *** unlocking only works with special Mifare 1K cards (Chinese clones)
  a|A|b|B       - Use A or B keys for action; Halt on errors (a|b) or tolerate errors (A|B)
  u|U           - Use any (u) uid or supply a uid specifically as U01ab23cd.
  <dump.mfd>    - MiFare Dump (MFD) used to write (card to MFD) or (MFD to card)
  <keys.mfd>    - MiFare Dump (MFD) that contain the keys (optional)
  f             - Force using the keyfile even if UID does not match (optional)
Examples:

  Read card to file, using key A:

    nfc-mfclassic r a u mycard.mfd

  Write file to blank card, using key A:

    nfc-mfclassic w a u mycard.mfd

  Write new data and/or keys to previously written card, using key A:

    nfc-mfclassic w a u newdata.mfd mycard.mfd

  Format/wipe card (note two passes required to ensure writes for all ACL cases):

    nfc-mfclassic f A u dummy.mfd keyfile.mfd f
    nfc-mfclassic f B u dummy.mfd keyfile.mfd f

  Read card to file, using key A and uid 0x01 0xab 0x23 0xcd:

    nfc-mfclassic r a U01ab23cd mycard.mfd

因為我購買的是 cuid 空白卡,所以我使用的寫卡命令為nfc-mfclassic w a u bak.mfd 然后就可以去試試新復(fù)制的卡了。

最后

可以看到使用的工具都是利用了m1卡的漏洞進行破解,所以一張門禁卡能不能復(fù)制就要看這個門禁卡有沒有漏洞,如果是最近一兩年才新加裝的門禁系統(tǒng),估計已經(jīng)沒有這些漏洞可以利用了。

參考文獻
http://www.itdecent.cn/p/7a0bf015e06c

https://zohead.com/archives/copy-mifare-classic/

http://www.itdecent.cn/p/fd6cee57b31d

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容