乐鑫技术交流
直播中

孙奕

7年用户 870经验值
私信 关注
[问答]

DSIKE ESP8266取消身份验证攻击检测器ESP12N编译脚本,如何更改?

我正在尝试为此处看到的 DSIKE ESP8266 取消身份验证攻击检测器 ESP12N 编译脚本:
脚本deauth 检测器,当检测到攻击时,它会在蜂鸣器上播放“加勒比海盗”主题曲。我想改为播放星球大战中的“帝国进行曲”歌曲,但我  基本上我需要帮助将这两个脚本粉碎在一起。
这是原始的 deauth 检测器 .ino:
// 此软件已根据 MIT 许可证获得许可。
// 有关详细信息,请参阅许可证文件。
// 有关更多详细信息,请访问 github.com/spacehuhn/DeauthDetector
// 包括必要的库
#include  // 对于 WiFi 嗅探器
#include  // 对于 Neopixel/WS2812 LED
/ / include ESP8266 Non-OS SDK functions
extern \"C\" {
#include \"user_interface.h\"
}
// ===== SETTINGS ===== //
#define LED 4 /* LED pin */
#define LED_NUM 1 /* LED 数量 */
#define BUZZER 5 /* 蜂鸣器引脚 */
#define SPEED 1.5 /* 歌曲速度,数字越大歌曲越慢 */
#define SERIAL_BAUD 115200 /* 串口通信波特率 */
#define CH_TIME 140 /* 每通道扫描时间(毫秒) */
#define PKT_RATE 5分钟。在它被识别为攻击之前的数据包 */
#define PKT_TIME 1 /* Min. 在它被识别为攻击之前的间隔 (CH_TIME*CH_RANGE) */
// 要扫描的频道 (US=1-11, EU=1-13, JAP=1-14)
const short channels[] { 1,2, 3,4,5,6,7,8,9,10,11,12,13/*,14*/ };
// ===== 运行时变量 ===== //
Adafruit_NeoPixel 像素 { LED_NUM, LED, NEO_GRB + NEO_KHZ800 }; // Neopixel LED
bool song_playing { false }; // 如果正在播放歌曲
int note_index { 0 }; // 当前正在播放的音符索引
int note_time { 0 }; // 一个音符播放的时间量(毫秒)
int ch_index { 0 }; // 通道数组的当前索引
int packet_rate { 0 }; // Deauth 数据包计数器(每次更新都会重置)
int attack_counter { 0 }; // 攻击计数器
unsigned long update_time { 0 }; // 最后更新时间
unsigned long ch_time { 0 }; // 最后一个频道跳转时间
unsigned long song_time { 0 }; // 最后一首歌更新
// ===== Notes ===== //
// 借用 <3 来自这里: https: //github.com/xitangg/-Pirates-of- ... Theme-Song #define NOTE_C4 262 #define NOTE_D4 294


#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587 #define
NOTE_E5 659 #define NOTE_F5 698
#define NOTE_G5 784 #define
NOTE_A5 880 #定义NOTE_B5 988 int 注释[] {    NOTE_E4,NOTE_G4,NOTE_A4,NOTE_A4,0,   NOTE_A4,NOTE_B4,NOTE_C5,NOTE_C5,0,NOTE_C5,NOTE_D5,NOTE_B4,NOTE_B4,0,NOTE_A4,NOTE_G4,NOTE_A4,0    ,   NOTE_E4,   NOTE_G4,NOTE_A4,NOTE_A4,0 ,    NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,    NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,    NOTE_A4, NOTE_G4, NOTE_A4, 0,











   注_E4、注_G4、注_A4、注_A4、0、注
   _A4、注_C5、注_D5、注_D5、0、注_D5、注_E5、注_F5、注_F5、0、注_E5、注_D5、注_E5、注
   _A4、0、注_A4、注_B4、注_C5
   、注
   _C5、0、
   注_D5、注_E5、注_A4、0、注
   _A4、注_C5、注_B4、注_B4、0、注_C5、注_A4、注_B4、0、注_A4、注_A4、注_A4、注_B4、注_C5、注_C5、0、注_C5、注_D5    、注_B4
   、注
   _B4、0    、   注_A4、注_G4、注_A4、0、注_E4、注_G4、注   _A4、注_A4、0、注_A4、注_B4、注_C5、注_C5、0、注_C5、注_D5、注_B4、注_B4、0、注_A4、注_G4    、   注   _A4、0、







   注_E4、注_G4、注_A4、注_A4、0、注
   _A4、注_C5、注_D5、注_D5、0、注_D5、注_E5、注_F5、注_F5、0、注_E5、注_D5、注_E5、注
   _A4、0、注_A4、注_B4、注_C5
   、注
   _C5、0、
   注_D5、注_E5、注_A4、0、注_A4、注
   _C5、注_B4、注_B4、0、注_C5、注_A4、注_B4、0、注_E5、0、0、注_F5、0、0、注_E5、注_E5、0、注   _G5、0
   、   注_E5、注_D5、0、0、注_D5、0、0、注   _C5、0、0、注_B4、注_C5、0、注_B4、0、注_A4、注_E5、0、0、注   _F5、0、0、注_E5、注_E5、0、注   _G5    、 0, NOTE_E5, NOTE_D5, 0, 0,    NOTE_D5, 0, 0, NOTE_C5, 0, 0,    NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4








};
int duration[] {
  125, 125, 250, 125, 125, 125,
  125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125,
  375
  , 125, 125
  , 125, 250, 125 , 125,
  125, 125, 250, 125, 125, 125, 125
  , 250, 125, 125, 125, 125,
  375, 125, 125, 125, 250, 125, 125
  , 125, 125,
  250, 125, 125 ,
  125, 125, 250, 125, 125,
  125, 125, 125, 250, 125, 125, 125, 250, 125, 125, 250, 125, 250, 125, 125, 125, 250
  ,
  125
  , 125,
  125
  ,125、375、375、250、125、125、125、250、125、125、125、125、125、250、125、125、125、125、125、375、125、125、125、125、125、125、250、250、250、125、125、125、125、125、125、125、125、125
  _
  _
  _
  _
  125, 125, 250, 125, 125, 125
  , 125, 250, 125, 125, 125, 125,
  375, 125, 125, 125, 250, 125, 125, 125, 125
  ,
  250, 125, 125, 1 25
  , 125, 250, 125, 125, 125
  , 125, 125, 250, 125, 125, 125,
  250, 125, 125, 250, 125, 250, 125, 125, 125, 250, 125
  ,
  125, 125, 1
  25, 375, 375,
  250, 125, 375, 250, 125, 375, 125
  , 125, 125, 125, 125, 125, 125, 125, 375, 250, 125, 375, 250, 125, 375, 125, 1
  25
  , 125, 125, 125, 500,
  250, 125, 375, 250, 125, 375, 125, 125, 125, 125, 125, 125, 125, 125, 375, 250, 125
  , 375,
  250, 125, 3 75,
  125, 125, 125, 125, 125, 500
};
// ===== 嗅探器函数 ===== //
void sniffer(uint8_t *buf, uint16_t len) {
  如果 (!buf || len < 28) 返回; // 丢弃没有 MAC 头字节的
  数据包 pkt_type = buf[12]; // 帧控制字段的后半部分
  //byte* addr_a = &buf[16]; // 第一个 MAC 地址
  //byte* addr_b = &buf[22]; // 第二个 MAC 地址
  // 如果捕获的数据包是取消身份验证或解除关联的帧
  if (pkt_type == 0xA0 || pkt_type == 0xC0) {
    ++packet_rate;
  }
}
// ===== 攻击检测函数 ===== //
void attack_started() {
  song_playing = true;
  note_index = 0;
  note_time = duration[note_index] * SPEED;
  for(int i=0; i= (sizeof(channels)*CH_TIME)) {
    update_time = current_time; // 更新时间变量
    // 当检测到的 deauth 数据包超过最小允许数量时
    if (packet_rate >= PKT_RATE) {
      ++attack_counter; // 增加攻击计数器
    } else {
      if(attack_counter >= PKT_TIME) attack_stopped();
      攻击计数器= 0;// 重置攻击计数器
    }
    // 当攻击超过最小允许时间时
    if (attack_counter == PKT_TIME) {
      attack_started();
    }
    Serial.print(\"数据包/s:\");
    Serial.println(packet_rate);
    packet_rate = 0; // 重置数据包速率
  }
  // 频道跳频
  if (sizeof(channels) > 1 && current_time - ch_time >= CH_TIME) {
    ch_time = 当前时间;// 更新时间变量
    // 获取下一个通道
    ch_index = (ch_index+1) % (sizeof(channels)/sizeof(channels[0]));
    短 ch = 通道 [ch_index];
    // 设置频道
    //Serial.print(\"Set channel to \");
    //序列号.println(ch);
    wifi_set_channel(ch);
  }
  if(song_playing && current_time - song_time >= note_time) {
    song_time = current_time;
    note_index = (note_index+1) % (sizeof(notes)/sizeof(notes[0]));
    note_time = duration[note_index] * SPEED;
    音调(蜂鸣器,音符[note_index],note_time);
  }
}
这是星球大战歌曲 .ino:
// ===== Notes ===== //
const int c = 261;
const int d = 294;
const int e = 329;
const int f = 349;
常数 int g = 391;
const int gS = 415;
const int a = 440;
const int aS = 455;
常量 b = 466;
const int cH = 523;
常量 int cSH = 554;
const int dH = 587;
const int dSH = 622;
const int eH = 659;
常量 fH = 698;
常量 fSH = 740;
const int gH = 784;
常数 int gSH = 830;
const int aH = 880;
const int buzzerPin = 5;
const int ledPin1 = 12;
const int ledPin2 = 13;
整数计数器= 0;
void setup()
{
  //设置引脚模式
  pinMode(buzzerPin, OUTPUT);
  引脚模式(ledPin1,输出);
  引脚模式(ledPin2,输出);
}
void loop()
{
  //播放第一节
  firstSection();
  //播放第二节
  secondSection();
  //变体 1
  哔哔声 (f, 250);  
  哔哔声(gS,500);  
  嘟嘟声(f,350);  
  嘟嘟声(一,125);
  哔哔声(cH,500);
  嘟嘟声(a,375);  
  哔哔声(cH,125);
  嘟嘟声(eH,650);
  延迟(500);
  //重复第二节
  secondSection();
  //变体 2
  哔哔声 (f, 250);  
  哔哔声(gS,500);  
  嘟嘟声(女,375);  
  哔哔声(cH,125);
  嘟嘟声(一,500);  
  嘟嘟声(女,375);  
  哔哔声(cH,125);
  嘟嘟声(一,650);  
  延迟(650);
}
void beep(int note, int duration)
{
  //在buzzerPin上播放音调 tone
  (buzzerPin, note, duration);
  //buzzerPin 上的停止音
  noTone(buzzerPin);
  延迟(50);
  //递增计数器
  counter++;
}
void firstSection()
{
  哔哔声 (a, 500);
  嘟嘟声(一,500);   
  嘟嘟声(一,500);
  嘟嘟声(f,350);
  哔哔声(cH,150);  
  嘟嘟声(一,500);
  嘟嘟声(f,350);
  哔哔声(cH,150);
  嘟嘟声(一,650);
  延迟(500);
  嘟嘟声(eH,500);
  嘟嘟声(eH,500);
  嘟嘟声(eH,500);  
  嘟嘟声(fH,350);
  哔哔声(cH,150);
  哔哔声(gS,500);
  嘟嘟声(f,350);
  哔哔声(cH,150);
  嘟嘟声(一,650);
  延迟(500);
}
void secondSection()
{
  哔哔声 (aH, 500);
  嘟嘟声(一,300);
  嘟嘟声(一,150);
  嘟嘟声(aH,500);
  嘟嘟声(gSH,325);
  哔哔声(gH,175);
  嘟嘟声(fSH,125);
  嘟嘟声(fH,125);   
  嘟嘟声(fSH,250);
  延迟(325);
  嘟嘟声(aS,250);
  嘟嘟声(dSH,500);
  嘟嘟声(dH,325);  
  嘟嘟声(cSH,175);  
  哔哔声(cH,125);  
  嘟嘟声(b,125);  
  哔哔声(cH,250);  
  延迟(350);
}

更多回帖

发帖
×
20
完善资料,
赚取积分