2014-12-20linux
這篇文章主要是講 linux下的對IC卡(M1卡)的無線hack技術。
設備:硬件方面,PC機一臺,PN532開發板一套。測試
軟件方面:mfoc,mfcuk。
本文用不到mfcuk的,我仍是給你們科普下吧。
原理這些我不講啦,講應用吧。
mfoc,知道卡的一個密碼,以超短期破解其餘全部密碼。
mfcuk,經過隨機數,暴力破解密碼(別認爲是隨機數充當密碼),通常30分鐘內能破解,不能破解的話說明你運氣不夠,換個時間
忍不住仍是說說M1卡吧。
M1卡,通常國內喜歡用1K卡,1K卡里面有16個扇區,每一個扇區有4個塊,每一個塊有16個字節。google
第0塊,第1塊,第2塊都是數據區域。url
第3塊是keyA,控制段,keyB的存儲區域,分別是6個字節,4個字節,6個字節。3d
特別的,第0個扇區的第0個塊是比較特殊的,裏面是隻讀的,不可改的,存儲的是廠家的一些信息。指針
(有些卡就是經過這個區域產生隨機密碼而後讓普通的M1空白卡不能複製,由於要複製只能複製除第0扇區第0塊的東西啊。除非有神通常的第0扇區,第0塊可寫的M1卡,樓主有一張哦。)
由於這個無線破解樓主已經在很長一段時間搞了,因此一些軟件的編譯截圖我沒有,在下面先把代碼貼出來吧。
1.由於樓主用的PC和PN532開發板要相連,而PN532用的是UART的串口.code
因此我用了一個USB轉UART的板子,把兩個東西連起來了。blog
而後裝些必要的驅動。
安裝: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
cd libnfc-1.6.0-rc1/
autoreconf -vis
./configure --with-drivers=pn532_uart --enable-serial-autoprobe
make clean
make
make install
ldconfig
而後執行下 libnfc 裏面的 nfc-list 試試看(要把卡放在設備上面哦。)
看上面,成功安裝好了。
下面裝mfoc-0.10.3.
先到googlecode下個源碼吧,而後執行以下命令。
tar xzvf mfoc-0.10.3.tar.gz
cd mfoc-0.10.3
./configure
make
看當作功沒,以下圖:
下面開始破解.執行命令
./mfoc -K -O test.file
看見沒,上面一部分的密碼已經 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
cd mfcuk
autoreconf -is
./configure
make
ps:make前修改src/Makefile,將LIBNFC_LIBS的值複製到LIBS後面
忘了提醒你們,那個googlecode由於是開源的,因此不少 mfoc 和 mfcuk 代碼都不徹底正確。
我記得最新版的mfoc和mfcuk(創建在libnfc 1.7 平臺的)好像是在某個c文件裏面漏了個&的,就是指針出錯了,致使編譯不成功.