社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

🤫 用 Python 破解 WiFi 密码

Crossin的编程教室 • 4 年前 • 330 次点击  

如今,WiFi 跟我们的生活息息相关,无处不在。没有 WiFi 的地方是没有灵魂的!



然而,比没有WiFi更让人绝望的,是有满格WiFi信号却没有密码……



今天我们就来尝试下,如何利用python来破解WiFi。



01.如何连接wifi


首先我们的电脑是如何连接wifi的呢?就拿我们的笔记本电脑来说,我们的笔记本电脑都有无线网卡,如下图所示:



当我们连接WiFi时,无线网卡会自动帮助我们扫描附近的WiFi信号,并且会返回WiFi信号的一些信息,包括了网络的名称(SSID),信号的强度,加密和认证的方式等。这些信息我们在进行操作的时候是看不到的。当我们想要连接指定WiFi的时候,我们都需要进行认证,认证的作用就是保护wifi的访问,注意这里的认证不是我们输入的密码,而是将我们输入的密码进行加密的方式。


也就是将我们输入的WiFi密码,进行加密传输的一种方式。大家常用的方式是WPA或者是WPA2PSK,主要是针对个人或家庭网络等对安全性要求不是很高的用户。如下图所示:



当我们输入密码后,会弹出提示告诉我们一些提示的信息,我们点击“是”之后,就可以开心的上网了。



02.利用pywifi模拟接入


Python有数目庞大的库,无数的现成的轮子,让你做很多很多应用都非常方便。对于连接WiFi这样的小case自然也不例外。


pywifi这个库就可以做到。它是第三方的库,需要提前用pip安装一下,接着我们就利用pywifi模块来模拟这一个过程。首先是判断电脑是否处于WiFi连接的状态,代码如下图所示:



代码不复杂:首先是创建一个pywifi的对象,然后将电脑无线网卡的信息赋值给ifaces。接着判断ifaces的状态(states)即可知道电脑是否连接无线网络。


上面我们提到无线网卡会返回无线信号的信息,接下来我们就来输出一下我们扫描到的附近的无线信号以及它们的信息。



如上图左侧所示,我们输出了无线信号的名称和其对应的加密方式。二代码中的data其实就是一个个的配置文件。这里的配置文件我们可以理解为一个存储了我们连接的无线信号信息的文件,里面包含了无线信号的名称,密码,认证方式等等信息。


03.破解wifi密码


接下来,我们就要利用pywifi来进行破解WiFi密码的操作。我们仿照手动输入密码的过程,并进行验证,如果密码错误的话,我们就不停的更换密码进行试验直到成功为止。部分的代码如下所示:



程序中,我们首先从console中读入我们想要破解额WiFi名称,然后从我们事先设置好的WiFi密码本中,不停的读入WiFi密码,然后配置profile的信息,包括WiFi的名称,认证方式和WiFi的密码。如果密码错误的话,就更换WiFi密码继续进行验证,直到验证正确为止。下图是实验的结果。



这种暴力破解需要有一个数据库样本,比如有数十万的破解密码的样本。将样本中的密码逐一尝试,这样通过足够多的样本和充足的时间,就可能找到正确的密码。


上述破解方法也被称为暴力破解法,非常的消耗时间。但对于一些简单密码和常见密码,还是很有可能成功的。


所以,敲黑板注意啦:如果你不想被别人蹭网,记得把密码设得复杂一些。不要用12345678这种纯数字,也不要用admin123这种大众密码。


PS:本文只是从技术的角度来阐述如何用python来玩WiFi,来学习pywifi这个库。坚决反对利用技术进行任何破坏性的操作和不当的行为,否则后果自负!


作者:小超

来源:菜鸟学Python





Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51197
 
330 次点击