那些年我用ESP8266玩过些什么
字数 1489 2025-08-22 12:23:13
ESP8266开发与WiFi安全应用全面指南
一、ESP8266开发基础
1. 开发环境配置
安装ESP8266开发板支持
- 在Arduino IDE中添加ESP8266开发板支持:
- 打开Arduino IDE → 文件 → 首选项
- 在"附加开发板管理器网址"中添加:
http://arduino.esp8266.com/stable/package_esp8266com_index.json - 然后通过工具 → 开发板 → 开发板管理器安装ESP8266支持包
安装Blinker库
- Blinker库用于物联网设备与手机App的交互
- 可通过Arduino IDE的库管理器搜索安装"Blinker"
2. 基础开发示例
示例1:通过小爱同学控制LED灯
硬件连接
- 将LED连接到ESP8266的D4引脚
- 注意LED的极性,长脚为正极
代码实现
// 小爱同学开启关闭信号灯
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>
int LIGHT = D4;
char auth[] = "your_auth_key"; // 点灯科技获取的密匙
char ssid[] = "your_wifi_ssid"; // 2.4GHz WiFi名称
char pswd[] = "your_wifi_password"; // WiFi密码
// 组件对象
BlinkerButton Button1("btn-light");
BlinkerNumber Number1("num-abc");
int counter = 0;
// 小爱电源状态回调
void miotPowerState(const String &state) {
if (state == BLINKER_CMD_ON) {
digitalWrite(LIGHT, LOW);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
} else if (state == BLINKER_CMD_OFF) {
digitalWrite(LIGHT, HIGH);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
}
}
// 按钮回调
void button1_callback(const String &state) {
digitalWrite(LIGHT, !digitalRead(LIGHT));
}
// 数据读取回调
void dataRead(const String &data) {
counter++;
Number1.print(counter);
}
void setup() {
Serial.begin(115200);
pinMode(LIGHT, OUTPUT);
digitalWrite(LIGHT, HIGH);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
Button1.attach(button1_callback);
BlinkerMIOT.attachPowerState(miotPowerState);
}
void loop() {
Blinker.run();
}
示例2:通过小爱同学控制舵机
硬件连接
- 舵机信号线连接至D0引脚
- 注意舵机的电源要求,可能需要外部供电
代码实现
#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Servo.h>
#define PIN_SERVO D0 // 舵机信号线
Servo myservo;
#include <Blinker.h>
char auth[] = "your_auth_key";
char ssid[] = "your_wifi_ssid";
char pswd[] = "your_wifi_password";
bool oState = false;
// 小爱电源状态回调
void miotPowerState(const String &state) {
myservo.attach(PIN_SERVO);
if (state == BLINKER_CMD_ON) {
myservo.write(29); // 舵机正转度数
delay(1000);
BlinkerMIOT.powerState("on");
BlinkerMIOT.print();
oState = true;
} else if (state == BLINKER_CMD_OFF) {
myservo.write(-29); // 舵机反转度数
delay(1000);
BlinkerMIOT.powerState("off");
BlinkerMIOT.print();
oState = false;
}
}
// 查询回调
void miotQuery(int32_t queryCode) {
switch (queryCode) {
case BLINKER_CMD_QUERY_ALL_NUMBER:
case BLINKER_CMD_QUERY_POWERSTATE_NUMBER:
default:
BlinkerMIOT.powerState(oState ? "on" : "off");
BlinkerMIOT.print();
break;
}
}
void dataRead(const String &data) {
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
BlinkerMIOT.attachPowerState(miotPowerState);
BlinkerMIOT.attachQuery(miotQuery);
}
void loop() {
Blinker.run();
}
二、ESP8266 WiFi安全应用
1. WiFi钓鱼工具实现
项目地址: https://github.com/bilibilifmk/ESP_Fishing
操作流程
-
刷入固件
- 下载最新固件从项目发布页
- 使用烧录工具(如esptool)刷入ESP8266
-
初始设置
- 首次启动后,连接"ESP_Fishing" WiFi(无密码)
- 浏览器访问6.6.6.6进入后台
- 设置钓鱼WiFi的SSID和密码
- 保存后设备自动重启
-
钓鱼操作
- 连接自己设定的WiFi
- 进入后台点击"点击进入自动化WiFi钓鱼配置"
- 扫描网络并选择攻击目标WiFi
- 指示灯熄灭表示进入自动化流程
- 当受害者输入密码时,程序会自动验证密码正确性
- 不正确: 继续攻击
- 正确: 保存密码,指示灯亮起
- 可在后台记录中查看获取的WiFi密码
技术原理
- 发送特定帧(0xC0)使客户端误认为密码失效而断开连接
- 创建与目标相同的无密码WiFi诱导连接
- 使用portal认证协议自动弹出钓鱼页面
- 注意: 对5GHz WiFi无效
帧结构示例:
0xC0, 0x00,0x00, 0x00,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*SSID */
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /*SSSID */
0x00, 0x00,0x01, 0x00
2. WiFi攻击工具实现
功能特性
- 扫描周围WiFi设备
- 阻止选定设备的连接
- 创建大量虚假网络混淆扫描结果
- 实施Deauth攻击(解除认证攻击)
烧录方法
方法一: 使用预编译固件
- 下载.deauther固件
- 使用烧录工具(如NodeMCU Flasher)
- 选择正确端口和烧录地址
- 点击"Program"开始烧写
方法二: 从源代码编译
- 下载ESP8266 Deauther源代码
- 在Arduino IDE中打开esp8266_deauther.ino
- 添加开发板管理器URL:
https://raw.githubusercontent.com/SpacehuhnTech/arduino/main/package_spacehuhn_index.json - 安装"Deauther ESP8266 Boards"
- 选择正确的开发板(在Deauther ESP8266 Boards分类下)
- 选择正确的COM端口
- 可选: 擦除全部Flash内容
- 上传程序
使用说明
- 设备启动后会创建一个AP(如"pwned")
- 连接该AP并访问指定IP(如192.168.4.1)
- 通过Web界面选择目标并实施攻击
三、安全与法律注意事项
-
法律风险
- 未经授权对网络实施攻击是违法行为
- 仅限在自有网络或获得明确授权的环境中测试
-
道德准则
- 这些技术应用于安全研究和防御目的
- 不得用于侵犯他人隐私或破坏网络
-
防御措施
- 使用WPA3加密协议
- 启用802.11w(管理帧保护)
- 监控网络异常活动
- 对重要设备使用有线连接
-
ESP8266安全开发建议
- 修改默认AP名称和密码
- 禁用不必要的服务
- 定期更新固件
- 实现适当的认证机制
本指南提供了ESP8266在物联网开发和WiFi安全研究方面的全面技术细节,请确保在合法合规的前提下使用这些技术。