那些年我用ESP8266玩过些什么
1393816853130416 发表于 福建 IoT安全 815浏览 · 2024-05-27 00:34

那些年我用ESP8266玩过些什么

一次整理,翻出了我在很久很久之前买的一块ESP8266开发板,那个时候买来是用做Wi-Fi攻击工具使用的,虽说kali上面有工具可以直接实现,但当时的我还年轻,任何事情都想折腾,我望着它良久,人生还是需要折腾。

一、两个开发DEMO

1、安装esp8266开发板

http://arduino.esp8266.com/stable/package_esp8266com_index.json

2、安装Blinker.h库

(一)ESP8266 点灯科技 小爱同学 开关灯

1、选择开发板

2、烧录程序

//小爱同学开启关闭信号灯
#define BLINKER_PRINT Serial
#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT
#include <Blinker.h>

int LIGHT = D4;
char auth[] = "********";  //替代为你在点灯获取的密匙
char ssid[] = "TP-LINK-1223"; //2.4Gwifi名称,可以是手机热点,不要有中文
char pswd[] = "12345678";//WiFi密码

// 新建组件对象
BlinkerButton Button1("bin");//你的按钮名称
BlinkerNumber Number1("num-abc");

int counter = 0;

void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", 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) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LIGHT, !digitalRead(LIGHT));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
    counter++;
    Number1.print(counter);
}

void setup() {
    // 初始化串口
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif

    // 初始化有LED的IO
    pinMode(LIGHT, OUTPUT);
    digitalWrite(LIGHT, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
    BlinkerMIOT.attachPowerState(miotPowerState);
}

void loop() {
    Blinker.run();
}

(二)ESP8266 点灯科技 小爱同学 舵机开关灯

1、选择开发板

2、烧录程序

#define BLINKER_WIFI
#define BLINKER_MIOT_OUTLET
#include <Servo.h>

#define PIN_SERVO D0 //舵机信号线

Servo myservo;

#include <Blinker.h>

char auth[] = "********";//点灯秘钥
char ssid[] = "TP-LINK-1223";//无线网名称
char pswd[] = "12345678";//无线网密码

bool oState = false;

void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", 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)
{
    BLINKER_LOG("MIOT Query codes: ", queryCode);

    switch (queryCode)
    {
        case BLINKER_CMD_QUERY_ALL_NUMBER :
            BLINKER_LOG("MIOT Query All");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        case BLINKER_CMD_QUERY_POWERSTATE_NUMBER :
            BLINKER_LOG("MIOT Query Power State");
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
        default :
            BlinkerMIOT.powerState(oState ? "on" : "off");
            BlinkerMIOT.print();
            break;
    }
}

void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);

    Blinker.vibrate();

    uint32_t BlinkerTime = millis();

    Blinker.print("millis", BlinkerTime);
}

void setup()
{
    Serial.begin(115200);
    BLINKER_DEBUG.stream(Serial);

    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 制造一个Wi-Fi钓鱼工具

项目地址:https://github.com/bilibilifmk/ESP_Fishing

操作流程

第一次使用

  • 刷入固件或自行编译 由于需要魔改SDK 提供了魔改SDK 也提供了编译版 可直接刷入 请在发布页下载最新固件

  • 第一次启动 请连接 ESP_Fishing 的WiFi 无密码

  • 使用浏览器访问 6.6.6.6 进入操作后台

  • 设置一个自己喜欢的SSID和密码 保存后自动重启

进行钓鱼操作

  • 连接 自己设定的wifi

  • 进入后台

  • 点击“点击进入自动化WiFi钓鱼配置”

  • 扫描网络

  • 选择攻击WiFi

  • 指示灯熄灭进入自动化流程

  • 当被攻击者输入 密码

  • 程序自动验证密码是否正确 不正确继续攻击 正确会保存 指示灯亮起

  • 连接回WiFi 进入后台 可在记录中看到wifi和密码

原理

  • 对AP进行帧广播,让客户端误以为密码失效从而断开连接 对5GWiFi 无效

  • 帧结构:

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
  • 8266 开出个被攻击的一样的无密码WIFI很容易就连入这个假WiFi

  • 使用portal 认证协议 当被攻击者连接上会自动弹出钓鱼页 

(二)使用 ESP8266 制造一个Wi-Fi攻击工具

扫描WiFi设备,阻止选定的连接,创建数十个网络并混淆WiFi扫描仪。

固件下载:https://deauther.com/docs/download/

二进制固件写入:https://esp.huhn.me

方式一:二进制固件写入

进入网站:https://esp.huhn.me

  1. 单击“连接”

  2. 插入 ESP 并选择端口

  3. 添加你的.bin并设置地址

  4. 点击Program进行烧写

方式二:Arduino IDE源代码写入

  1. 解压您下载的 ESP8266 Deauther zip

  2. 进入 esp8266_deauther 文件夹并使用Arduino IDE打开 esp8266_deauther.ino

  3. 在 Arduino IDE 中,转到 File Preferences 并将此 URL 添加到 Additional Boards Manager URLshttps://raw.githubusercontent.com/SpacehuhnTech/arduino/main/package_spacehuhn_index.json

  4. 现在转到 Tools Board Boards Manager ,搜索 deauther ,然后安装 Deauther ESP8266 Boards

  5. Tools Board 处选择您的主板,并确保它位于 Deauther ESP8266 Boards (而不是 ESP8266 Modules )!

  6. 插入 Deauther 并选择其 COM 端口 Tools Port

  7. 可选:要重置/覆盖以前的设置,请选择 Tools Erase Flash All Flash Contents

  8. 按上传

拓展资料

https://deauther.com

0 条评论
某人
表情
可输入 255