RFID之linux下利用PN532對M1卡(飯卡,


 

2014-12-20

這篇文章主要是講 linux下的對IC卡(M1卡)的無線hack技術。

設備:硬件方面,PC機一台,PN532開發板一套。

軟件方面:mfoc,mfcuk。

本文用不到mfcuk的,我還是給大家科普下吧。
原理這些我不講啦,講應用吧。
mfoc,知道卡的一個密碼,以超短時間破解其他所有密碼。
mfcuk,通過隨機數,暴力破解密碼(別認為是隨機數充當密碼),一般30分鍾內能破解,不能破解的話說明你運氣不夠,換個時間

忍不住還是說說M1卡吧。
M1卡,一般國內喜歡用1K卡,1K卡里面有16個扇區,每個扇區有4個塊,每個塊有16個字節。

第0塊,第1塊,第2塊都是數據區域。

第3塊是keyA,控制段,keyB的存儲區域,分別是6個字節,4個字節,6個字節。

 

特別的,第0個扇區的第0個塊是比較特殊的,里面是只讀的,不可改的,存儲的是廠家的一些信息。

(有些卡就是通過這個區域產生隨機密碼然后讓普通的M1空白卡不能復制,因為要復制只能復制除第0扇區第0塊的東西啊。除非有神一般的第0扇區,第0塊可寫的M1卡,樓主有一張哦。)

因為這個無線破解樓主已經在很長一段時間搞了,所以一些軟件的編譯截圖我沒有,在下面先把代碼貼出來吧。

1.因為樓主用的PC和PN532開發板要相連,而PN532用的是UART的串口.

所以我用了一個USB轉UART的板子,把兩個東西連起來了。

然后裝些必要的驅動。

安裝:libpcsclite-dev 和 libusb-dev

apt-get install libpcsclite-dev libusb-dev

安裝:libccid 和 pcscd

apt-get install libusb-0.1-4 libpcsclite1 libccid pcscd

到googlecode里面下載libnfc-1.6.0-rc1.tar.gz
然后一條條執行下面命令,搞個sh也可以。

 

下面這些指令不懂的話補補基礎吧。

tar xzvf libnfc-1.6.0-rc1.tar.gz

  1. cd libnfc-1.6.0-rc1/

  2. autoreconf -vis

  3. ./configure --with-drivers=pn532_uart --enable-serial-autoprobe

  4. make clean

  5. make

  6. make install

  7. ldconfig

  8.  

然后執行下 libnfc 里面的 nfc-list 試試看(要把卡放在設備上面哦。)

看上面,成功安裝好了。

下面裝mfoc-0.10.3.

先到googlecode下個源碼吧,然后執行如下命令。

tar xzvf mfoc-0.10.3.tar.gz

  1. cd mfoc-0.10.3

  2. ./configure

  3. make

看看成功沒,如下圖:

下面開始破解.執行命令

 

  1. ./mfoc -K -O test.file

  2.  

看見沒,上面一部分的密碼已經 FOUND了,因為卡里面有一些沒用到的區域用了默認密碼.
這個卡的一個默認密碼是 ffffffffffff

(所以大家也可用 ./mfoc -k ffffffffffff -O test.file 這個命令,感興趣的朋友可以google一下).

很多卡都有這個默認密碼.

下面在用探針探索中,很快就有結果了.

結果出來了

有了結果我們可以怎樣?

有兩種行徑.第一,復制卡;第二,修改卡.


復制卡是最簡單的。

因為一般的 M1卡都不檢索第0扇區第0塊的數據.所以復制可行.

 

如果你有一張10元的水卡,校園卡,工卡,或者門禁卡其他七七八八的卡(反正國內就那樣都基本是1K的M1卡).

你復制到另一張卡里面可以,你自己把數據導出來(有密碼不就可以導出了嗎...).

用完10塊,再把數據寫進卡里面就可以了...

當然這種是最沒有技術含量的...我們是要數據分析的.

所以我們來到了第二種方式:數據分析,修改數據.
如果你們玩過單擊游戲,用過修改器,作弊器,你們就會知道,我們分析數據大概的原理,就是看看哪里變了,刷刷卡,看看哪里變了.就大概可以了.

只能說大概,變的數據不一定是我們的有用數據啊,因為做卡的廠家哪會這么笨啊,肯定會加點冗余數據來校驗的啊.

當然一般這些校驗的數據都是通過有用的數據的加、與、或、非、異或形成的,CRC貌似比較少.

然后有些是固定冗余,不用理.

對於上面那個圖.我發現了數據段,那個有密碼的那個扇區的控制塊我就不說了。

那個控制塊的4個字節說明了整個扇區有keyA控制.

要理解更多東西,大家還是要懂M1的原理的啊.可以看下M1的文檔哈.

上面那個圖的紅色畫圈圈的區域是數據段
我們可以通過修改數據段改變卡的金額值.

樓主確實是成功了....從10幾塊數據變成了99塊.

當然,一切都是測試,不要干壞事哈.(樓主用的什么卡大家就不要猜了.)

下面是數據的導入:
命令是

nfc-mfclassic w a test.file test.file

注意,前面那個 test.file 是代表你的含有密鑰的文件,可以認為是 mfoc 導出來的文件.

后面那個test.file 是你要寫入的文件.

兩個文件是一樣的,不過代表的意義不同.


下面是導入成功的圖片.(get20是我修改后的導出來的文件,相當於text.file修改后的文件)

 

破解到這里結束吧.
下面給個安裝mfcuk的方法吧.

tar xzvf mfcuk

  1. cd mfcuk

  2. autoreconf -is

  3. ./configure

  4. make

ps:make前修改src/Makefile,將LIBNFC_LIBS的值復制到LIBS后面

忘了提醒大家,那個googlecode因為是開源的,所以很多 mfoc 和 mfcuk 代碼都不完全正確。

我記得最新版的mfoc和mfcuk(建立在libnfc 1.7 平台的)好像是在某個c文件里面漏了個&的,就是指針出錯了,導致編譯不成功.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM