python黑科技:還在爲沒有wifi而煩心嗎?這篇文章解決你的困擾

python做爲一門高級編程語言,它的定位是優雅、明確和簡單。閱讀Python編寫的代碼感受像在閱讀英語同樣,這讓使用者能夠專一於解決問題而不是去搞明白語言自己。Python雖然是基於C語言編寫,可是摒棄了C中複雜的指針,使其變得簡明易學。而且做爲開源軟件,Python容許對代碼進行閱讀,拷貝甚至改進。這些性能成就了Python的高效率,有「人生苦短,我用Python」之說,是一種十分精彩又強大的語言。python

在最近的公司項目開發中接觸到python語言及wifi相關的一些知識,正好將最近學到的和你們分享一下。linux

0x0001 開發環境:編程

windows 10+python2.7.15windows

0x0002 開發目標:微信

開發基於字典破解wifi熱點密碼的小工具app

在開發這個工具的時候筆者如今網上搜索到了一些項目,但都是linux下的,不能直接用於windows平臺,所以就決定結合找到的linux下的項目,修改爲windows下可運行的。python2.7

首先找到文章《一個很是簡單易懂的WIFI密碼爆破python腳本》可是文章中說使用了pywifi模塊,「這個模塊在win下有點雞肋,做者在調用WLANAPI時沒有作好WLAN_SECURITY_ATTRIBUTES的封裝,因此推薦在linux下跑,我測試所使用的是Kali 2.0 自帶python 2.7.6 ,可直接經過 pip install pywifi 安裝。」但筆者在測試的時候發現,在windows下仍是能夠運行的,由於要對這個模塊的源代碼進行一些修改,因此就沒有安裝模塊,而是直接拷貝模塊的源代碼到項目目錄下。編程語言

0x0003 模塊的修改:函數

在使用模塊自帶的測試用例時候,發現print輸出了不少無用的信息,所以在_wifiutil_win.py的335行去掉對「show_my_need_info」的調用。工具

0x0004 程序執行流程

功能需求比較清晰,所以咱們的步驟以下:

一、得到本機無線網卡信息

二、掃描周圍wifi熱點

三、使用字典嘗試鏈接wifi熱點

四、輸出掃描結果

按照上面的流程就能夠編寫代碼了。

0x0005 代碼實現

得到無線網信息

引用模塊後,主要使用interfaces函數獲取本機無線網卡信息,具體代碼封裝以下:

掃描周圍熱點

主要經過scan函數得到scan_results結果,具體代碼封裝以下,這裏sleep(2)是由於測試的時候本機的無線網卡返回信息須要一些時間,固然若是你的網卡性能好,能夠去掉這個sleep:

嘗試鏈接(破解密碼)

密碼破解這裏先要定義一個Profile,而後再將Profile做爲參數調用connect進行鏈接嘗試,使用status函數取鏈接結果的返回值,若是是const.IFACE_CONNECTED則鏈接成功,顯示結果,若是是其餘則爲失敗。

主要代碼如上,運行效果以下:

問題

這裏有一個問題,就是pywifi模塊的windows版本的代碼裏並無實現獲取wifi熱點的加密狀態信息,好比是使用WPA、WPA二、WPA2PSK仍是WPAPSK方式加密認證的,所以我就默認將全部的wifi熱點看做是開啓了加密認證的,並在破解的時候視爲「profile.akm.append(const.AKM_TYPE_WPA2PSK)」進行破解嘗試。

開始學注意幾點:

1.代碼規範,這自己就是一個很是好的習慣,若是開始不養好好的代碼規劃,之後會很痛苦

2.多動手,少看書,不少人學Python就一味的看書,這不是學數學物理,你看例題可能就會了,學習Python主要是學習編程思想。

3.勤練習,學完新的知識點,必定要記得如何去應用,否則學完就會忘,學咱們這行主要都是實際操做。

4.學習要有效率,若是本身都以爲效率很是低,那就停不停,找一下緣由,去問問過來人這是爲何

我有一個微信公衆號,常常會分享一些python技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「python語言學習」關注

相關文章
相關標籤/搜索