上一篇文章中
談到了如何破解WPA加密的無(wú)線網(wǎng)絡(luò)。在文章的最后,我們發(fā)現(xiàn),由于只能使用暴力破解的手段,而常規(guī)的CPU每秒鐘只能驗(yàn)證1000個(gè)左右的密碼。因此,
僅僅借助于CPU的計(jì)算能力的話,面對(duì)稍稍復(fù)雜一些的密碼,我們基本就無(wú)能為力了。但是在當(dāng)代,CPU已經(jīng)不是單一的計(jì)算工具了,我們還可以利用顯卡
(GPU)來(lái)進(jìn)行計(jì)算。事實(shí)上,通過(guò)這篇文章,你會(huì)發(fā)現(xiàn)同樣等級(jí)(價(jià)格)的GPU實(shí)際上比CPU的破解密碼的能力(準(zhǔn)確地說(shuō),是并行進(jìn)行hash計(jì)算的能
力)要強(qiáng)上10倍甚至更多。這也就意味著,有了GPU的幫助,我們破解密碼的時(shí)間至少可以縮短10倍!除了GPU,我們還可以利用最近興起的云計(jì)算,借助
于云端的強(qiáng)大的計(jì)算能力來(lái)幫助我們破解WPA密碼。
GPU加速WPA破解
目前,Nvidia的9000+以上的型號(hào)和ATI
4000+以上的型號(hào)都支持利用GPU進(jìn)行運(yùn)算。Nvidia取名為CUDA技術(shù),使用自家的一種類似于C的語(yǔ)言。ATI取名為Stream技術(shù),使用
OpenCL標(biāo)準(zhǔn)。不過(guò),我們并不用自己編程啦,只需要借助于現(xiàn)有的工具即可。本文中,我以ATI顯卡為例進(jìn)行說(shuō)明。Nvidia的顯卡其實(shí)大同小異,結(jié)
合本文再到網(wǎng)上搜索一番,應(yīng)該也不難摸索出相應(yīng)的方法。本文假定的環(huán)境是Ubuntu 11.04。
首先,我們安裝好ATI的顯卡驅(qū)動(dòng)。這一步其實(shí)很簡(jiǎn)單,不再贅述。
然后,我們到這個(gè)網(wǎng)址下載AMD-APP-SDK。注意區(qū)分32位版和64位版,不要下載錯(cuò)。下載后,在home目錄新建一個(gè)ATI目錄,將下載到的文件復(fù)制到里面。輸入以下命令解壓文件:
2 | tar -xf AMD-APP-SDK-v2.5-RC2-lnx64.tgz |
然后,運(yùn)行以下命令安裝必要的工具軟件并安裝AMD-APP-SDK,這相當(dāng)于是AMD的GPU運(yùn)算的SDK。注意,下面的命令會(huì)自動(dòng)重啟計(jì)算機(jī),所以請(qǐng)事先做好保存工作。
1 | sudo ./default-install_lnx.pl |
然后,我們需要安裝一些輔助的軟件:
1 | sudo apt-get install libboost-all-dev cmake subversion libpcap-dev |
然后,我們下載cal++運(yùn)算庫(kù)。
雖然AMD推薦使用OpenCL,而且cal++目前好像已經(jīng)沒(méi)什么人在維護(hù),但相比OpenCL,現(xiàn)在cal++還是能讓ATI的GPU發(fā)揮出更好的性
能,因此我們?nèi)匀贿x用它。我們把下載的文件放在home目錄下的ATI文件夾中,并解壓。找到CMakeLists.txt中如下的一行:
1 | FIND_PATH( LIB_ATICAL_INCLUDE NAMES cal .h calcl.h PATHS "$ENV{ATISTREAMSDKROOT}/include" ) |
并修改為:
1 | FIND_PATH( LIB_ATICAL_INCLUDE NAMES cal .h calcl.h PATHS "$ENV{ATISTREAMSDKROOT}/include/CAL" ) |
還有以下兩行:
1 | FIND_LIBRARY( LIB_ATICALCL aticalcl PATHS "$ENV{ATISTREAMSDKROOT}/lib" ) |
2 | FIND_LIBRARY( LIB_ATICALRT aticalrt PATHS "$ENV{ATISTREAMSDKROOT}/lib" ) |
依據(jù)自己的機(jī)器為32位或64位作對(duì)應(yīng)修改。我的為64位機(jī)器,所以修改為(如果是32位,就把下面的x86_64換成x86即可):
1 | FIND_LIBRARY( LIB_ATICALCL aticalcl PATHS "$ENV{ATISTREAMSDKROOT}/lib/x86_64" ) |
2 | FIND_LIBRARY( LIB_ATICALRT aticalrt PATHS "$ENV{ATISTREAMSDKROOT}/lib/x86_64" ) |
再執(zhí)行一下以下命令
1 | export ATISTREAMSDKROOT=$AMDAPPSDKROOT |
最后執(zhí)行如下命令進(jìn)行編譯和安裝cal++:
1 | cd ~/ATI/calpp-0.90 && cmake . && sudo make install |
接下來(lái),我們下載支持GPU破解WPA的通用破解工具pyrit的源代碼:
再編譯和安裝pyrit:
1 | cd ~/ATI/pyrit/pyrit- read -only/pyrit && sudo python setup.py build install |
為了讓pyrit支持利用AMD的顯卡進(jìn)行運(yùn)算,我們還必須編譯pyrit的cal++支持模塊。找到pyrit-read-only/cpyrit_calpp下面的setup.py文件。將:
1 | CALPP_INC_DIR = os.environ[ 'ATISTREAMSDKROOT' ] |
更改為:
1 | CALPP_INC_DIR = os.environ[ 'AMDAPPSDKROOT' ] |
將:
1 | CALPP_INC_DIRS.append(os.path. join (CALPP_INC_DIR, 'include' )) |
更改為:
1 | CALPP_INC_DIRS.append(os.path. join (CALPP_INC_DIR, 'include/CAL' )) |
然后編譯及安裝該模塊:
1 | cd ~/ATI/pyrit/pyrit- read -only/cpyrit_calpp && python setup.py build && sudo python setup.py install |
至此我們即完成了破解工具的安裝過(guò)程。在命令行中敲入命令“pyrit list_cores”,看我們已經(jīng)能同時(shí)利用CPU和GPU進(jìn)行計(jì)算了:
1 | Pyrit 0.4.1-dev (svn r308) (C) 2008-2011 Lukas Lueg http://pyrit. |
2 | This code is distributed under the GNU General Public License v3+ |
4 | The following cores seem available... |
再執(zhí)行命令“pyrit benchmark”,結(jié)果如下:
1 | Running benchmark (13571.7 PMKs/s)... |
3 | Computed 13571.71 PMKs/s total. |
看見了吧,我的GPU(ATI HD5650)的計(jì)算速度整整比CPU(Core i5
450M)快了10倍!現(xiàn)在我每秒鐘可以驗(yàn)證接近15000個(gè)密碼了,比上篇文章中單純用CPU快了10倍!下面是pyrit官網(wǎng)上給出的一張圖片,能更
好的反映CPU和GPU計(jì)算速度的差異。

最后,我們就可以利用pyrit進(jìn)行WPA密碼的破解了。命令如下:
1 | pyrit -r psk.cap -i dict.txt -b 00:1C:F0:AE:D4:9D attack_passthrough |
其中psk.cap為存儲(chǔ)者“four way
handshake”的文件,dict.txt是字典文件,-b后面是目標(biāo)BS的mac地址。需要說(shuō)明的是,進(jìn)行破解時(shí),你的系統(tǒng)會(huì)全速運(yùn)轉(zhuǎn),不僅是
CPU,GPU也在全速工作。因此,散熱量極大,系統(tǒng)響應(yīng)及其緩慢,最好不要再干其他的事情了,專心破解吧。
云計(jì)算加速WPA破解
雖然GPU加速可以幫我們提高運(yùn)算速度,但很多情況下速度可能還是不夠快。比如說(shuō),就算我們有一個(gè)比較好的顯卡和CPU,每秒可以驗(yàn)算四萬(wàn)組密碼。
考慮8位的純數(shù)字密碼(生日)就有近一億種,破解也需要2500秒,超過(guò)40分鐘。而且這段時(shí)間你的機(jī)器還是在全速運(yùn)轉(zhuǎn),負(fù)載和損耗都很大。如果再考慮復(fù)
雜密碼,似乎GPU也無(wú)能為力了。
但是,我們還有另一種選擇,就是利用云計(jì)算。事實(shí)上,已經(jīng)有人做了這件事情了。這位名叫Thomas Roth的德國(guó)研究者使用亞馬遜的云計(jì)算平臺(tái)中
的GPU計(jì)算節(jié)點(diǎn),每秒鐘可以驗(yàn)算超過(guò)40萬(wàn)個(gè)密碼,而每個(gè)這樣的計(jì)算節(jié)點(diǎn)每小時(shí)只收費(fèi)2.1美元!更爽的是,我們還可以用多個(gè)節(jié)點(diǎn)組成集群,再次的成倍
提高計(jì)算速度。這位仁兄過(guò)段時(shí)間估計(jì)就會(huì)放出其所使用的工具了,想了解更多細(xì)節(jié)的可以去看看他在Black Hat會(huì)議上的演講的PPT。
|