那些年我用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

操作流程

  1. 刷入固件

    • 下载最新固件从项目发布页
    • 使用烧录工具(如esptool)刷入ESP8266
  2. 初始设置

    • 首次启动后,连接"ESP_Fishing" WiFi(无密码)
    • 浏览器访问6.6.6.6进入后台
    • 设置钓鱼WiFi的SSID和密码
    • 保存后设备自动重启
  3. 钓鱼操作

    • 连接自己设定的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攻击(解除认证攻击)

烧录方法

方法一: 使用预编译固件

  1. 下载.deauther固件
  2. 使用烧录工具(如NodeMCU Flasher)
  3. 选择正确端口和烧录地址
  4. 点击"Program"开始烧写

方法二: 从源代码编译

  1. 下载ESP8266 Deauther源代码
  2. 在Arduino IDE中打开esp8266_deauther.ino
  3. 添加开发板管理器URL:
    https://raw.githubusercontent.com/SpacehuhnTech/arduino/main/package_spacehuhn_index.json
    
  4. 安装"Deauther ESP8266 Boards"
  5. 选择正确的开发板(在Deauther ESP8266 Boards分类下)
  6. 选择正确的COM端口
  7. 可选: 擦除全部Flash内容
  8. 上传程序

使用说明

  1. 设备启动后会创建一个AP(如"pwned")
  2. 连接该AP并访问指定IP(如192.168.4.1)
  3. 通过Web界面选择目标并实施攻击

三、安全与法律注意事项

  1. 法律风险

    • 未经授权对网络实施攻击是违法行为
    • 仅限在自有网络或获得明确授权的环境中测试
  2. 道德准则

    • 这些技术应用于安全研究和防御目的
    • 不得用于侵犯他人隐私或破坏网络
  3. 防御措施

    • 使用WPA3加密协议
    • 启用802.11w(管理帧保护)
    • 监控网络异常活动
    • 对重要设备使用有线连接
  4. ESP8266安全开发建议

    • 修改默认AP名称和密码
    • 禁用不必要的服务
    • 定期更新固件
    • 实现适当的认证机制

本指南提供了ESP8266在物联网开发和WiFi安全研究方面的全面技术细节,请确保在合法合规的前提下使用这些技术。

ESP8266开发与WiFi安全应用全面指南 一、ESP8266开发基础 1. 开发环境配置 安装ESP8266开发板支持 在Arduino IDE中添加ESP8266开发板支持: 打开Arduino IDE → 文件 → 首选项 在"附加开发板管理器网址"中添加: 然后通过工具 → 开发板 → 开发板管理器安装ESP8266支持包 安装Blinker库 Blinker库用于物联网设备与手机App的交互 可通过Arduino IDE的库管理器搜索安装"Blinker" 2. 基础开发示例 示例1:通过小爱同学控制LED灯 硬件连接 将LED连接到ESP8266的D4引脚 注意LED的极性,长脚为正极 代码实现 示例2:通过小爱同学控制舵机 硬件连接 舵机信号线连接至D0引脚 注意舵机的电源要求,可能需要外部供电 代码实现 二、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无效 帧结构示例 : 2. WiFi攻击工具实现 功能特性 扫描周围WiFi设备 阻止选定设备的连接 创建大量虚假网络混淆扫描结果 实施Deauth攻击(解除认证攻击) 烧录方法 方法一: 使用预编译固件 下载.deauther固件 使用烧录工具(如NodeMCU Flasher) 选择正确端口和烧录地址 点击"Program"开始烧写 方法二: 从源代码编译 下载ESP8266 Deauther源代码 在Arduino IDE中打开esp8266_ deauther.ino 添加开发板管理器URL: 安装"Deauther ESP8266 Boards" 选择正确的开发板(在Deauther ESP8266 Boards分类下) 选择正确的COM端口 可选: 擦除全部Flash内容 上传程序 使用说明 设备启动后会创建一个AP(如"pwned") 连接该AP并访问指定IP(如192.168.4.1) 通过Web界面选择目标并实施攻击 三、安全与法律注意事项 法律风险 未经授权对网络实施攻击是违法行为 仅限在自有网络或获得明确授权的环境中测试 道德准则 这些技术应用于安全研究和防御目的 不得用于侵犯他人隐私或破坏网络 防御措施 使用WPA3加密协议 启用802.11w(管理帧保护) 监控网络异常活动 对重要设备使用有线连接 ESP8266安全开发建议 修改默认AP名称和密码 禁用不必要的服务 定期更新固件 实现适当的认证机制 本指南提供了ESP8266在物联网开发和WiFi安全研究方面的全面技术细节,请确保在合法合规的前提下使用这些技术。