mirror of
https://github.com/justcallmekoko/ESP32Marauder.git
synced 2026-08-02 00:47:56 -07:00
Add BT and Station wardriving
This commit is contained in:
@@ -471,6 +471,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
{
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
|
||||
@@ -493,6 +494,8 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_ALL) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS))
|
||||
{
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
|
||||
@@ -524,6 +527,7 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
{
|
||||
// Stop the current scan
|
||||
if ((wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_AP) ||
|
||||
@@ -546,6 +550,8 @@ void MenuFunctions::main(uint32_t currentTime)
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_RICK_ROLL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_ATTACK_BEACON_LIST) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_ALL) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(wifi_scan_obj.currentScanMode == BT_SCAN_SKIMMERS) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_EAPOL) ||
|
||||
(wifi_scan_obj.currentScanMode == WIFI_SCAN_ACTIVE_EAPOL) ||
|
||||
@@ -1166,11 +1172,11 @@ void MenuFunctions::RunSetup()
|
||||
wifi_scan_obj.StartScan(WIFI_PACKET_MONITOR, TFT_BLUE);
|
||||
});
|
||||
#endif
|
||||
this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() {
|
||||
/*this->addNodes(&wifiSnifferMenu, text_table1[47], TFT_RED, NULL, PWNAGOTCHI, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_PWN, TFT_RED);
|
||||
});
|
||||
});*/
|
||||
this->addNodes(&wifiSnifferMenu, text_table1[49], TFT_MAGENTA, NULL, BEACON_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
@@ -1201,7 +1207,16 @@ void MenuFunctions::RunSetup()
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&wifiSnifferMenu, "Station Wardrive", TFT_ORANGE, NULL, PROBE_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(WIFI_SCAN_STATION_WAR_DRIVE, TFT_ORANGE);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
|
||||
// Build WiFi attack menu
|
||||
wifiAttackMenu.parentMenu = &wifiMenu; // Main Menu is second menu parent
|
||||
@@ -1367,6 +1382,20 @@ void MenuFunctions::RunSetup()
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_ALL, TFT_GREEN);
|
||||
});
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
this->addNodes(&bluetoothSnifferMenu, "BT Wardrive", TFT_CYAN, NULL, BLUETOOTH_SNIFF, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE, TFT_GREEN);
|
||||
});
|
||||
this->addNodes(&bluetoothSnifferMenu, "BT Wardrive Continuous", TFT_RED, NULL, REBOOT, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
wifi_scan_obj.StartScan(BT_SCAN_WAR_DRIVE_CONT, TFT_GREEN);
|
||||
});
|
||||
}
|
||||
#endif
|
||||
this->addNodes(&bluetoothSnifferMenu, text_table1[35], TFT_MAGENTA, NULL, CC_SKIMMERS, [this]() {
|
||||
display_obj.clearScreen();
|
||||
this->drawStatusBar();
|
||||
|
||||
+266
-82
@@ -21,51 +21,109 @@ extern "C" int ieee80211_raw_frame_sanity_check(int32_t arg, int32_t arg2, int32
|
||||
class bluetoothScanAllCallback: public BLEAdvertisedDeviceCallbacks {
|
||||
|
||||
void onResult(BLEAdvertisedDevice *advertisedDevice) {
|
||||
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
int buf = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buf = 0;
|
||||
#endif
|
||||
//#ifdef HAS_SCREEN
|
||||
// int buf = display_obj.display_buffer->size();
|
||||
//#else
|
||||
int buf = 0;
|
||||
//#endif
|
||||
|
||||
String display_string = "";
|
||||
if (buf >= 0)
|
||||
{
|
||||
display_string.concat(text_table4[0]);
|
||||
display_string.concat(advertisedDevice->getRSSI());
|
||||
Serial.print(" RSSI: ");
|
||||
Serial.print(advertisedDevice->getRSSI());
|
||||
|
||||
display_string.concat(" ");
|
||||
Serial.print(" ");
|
||||
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
|
||||
if (wifi_scan_obj.currentScanMode == BT_SCAN_ALL) {
|
||||
if (buf >= 0)
|
||||
{
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
display_string.concat(text_table4[0]);
|
||||
display_string.concat(advertisedDevice->getRSSI());
|
||||
Serial.print(" RSSI: ");
|
||||
Serial.print(advertisedDevice->getRSSI());
|
||||
|
||||
display_string.concat(" ");
|
||||
Serial.print(" ");
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
|
||||
Serial.println();
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.println();
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if ((wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE) || (wifi_scan_obj.currentScanMode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save = false;
|
||||
if (buf >= 0)
|
||||
{
|
||||
Serial.print("Device: ");
|
||||
if(advertisedDevice->getName().length() != 0)
|
||||
{
|
||||
display_string.concat(advertisedDevice->getName().c_str());
|
||||
Serial.print(advertisedDevice->getName().c_str());
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
display_string.concat(advertisedDevice->getAddress().toString().c_str());
|
||||
Serial.print(advertisedDevice->getAddress().toString().c_str());
|
||||
}
|
||||
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else {
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
}
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
uint8_t temp_len = display_string.length();
|
||||
for (uint8_t i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.println();
|
||||
|
||||
while (display_obj.printing)
|
||||
delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
#endif
|
||||
|
||||
String wardrive_line = (String)advertisedDevice->getAddress().toString().c_str() + ",,[BLE]," + gps_obj.getDatetime() + ",0," + (String)advertisedDevice->getRSSI() + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",BLE\n";
|
||||
Serial.print(wardrive_line);
|
||||
|
||||
if (do_save)
|
||||
evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@@ -300,6 +358,8 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
StopScan(scan_mode);
|
||||
else if (scan_mode == WIFI_SCAN_PROBE)
|
||||
RunProbeScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_STATION_WAR_DRIVE)
|
||||
RunProbeScan(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_EVIL_PORTAL)
|
||||
RunEvilPortal(scan_mode, color);
|
||||
else if (scan_mode == WIFI_SCAN_EAPOL)
|
||||
@@ -352,6 +412,12 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
#endif
|
||||
}
|
||||
else if ((scan_mode == BT_SCAN_WAR_DRIVE) ||
|
||||
(scan_mode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef HAS_BT
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
#endif
|
||||
}
|
||||
else if (scan_mode == BT_SCAN_SKIMMERS) {
|
||||
#ifdef HAS_BT
|
||||
RunBluetoothScan(scan_mode, color);
|
||||
@@ -479,6 +545,7 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
if ((currentScanMode == WIFI_SCAN_PROBE) ||
|
||||
(currentScanMode == WIFI_SCAN_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_EVIL_PORTAL) ||
|
||||
(currentScanMode == WIFI_SCAN_RAW_CAPTURE) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION) ||
|
||||
@@ -507,6 +574,8 @@ void WiFiScan::StopScan(uint8_t scan_mode)
|
||||
|
||||
|
||||
else if ((currentScanMode == BT_SCAN_ALL) ||
|
||||
(currentScanMode == BT_SCAN_WAR_DRIVE) ||
|
||||
(currentScanMode == BT_SCAN_WAR_DRIVE_CONT) ||
|
||||
(currentScanMode == BT_SCAN_SKIMMERS))
|
||||
{
|
||||
#ifdef HAS_BT
|
||||
@@ -1587,7 +1656,17 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.open();
|
||||
#elif defined(HAS_SD)
|
||||
sd_obj.openCapture("probe");
|
||||
if (scan_mode == WIFI_SCAN_PROBE)
|
||||
sd_obj.openCapture("probe");
|
||||
else if (scan_mode == WIFI_SCAN_STATION_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
sd_obj.openLog("station_wardrive");
|
||||
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
|
||||
evil_portal_obj.addLog(header_line, header_line.length());
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
@@ -1638,8 +1717,10 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
display_obj.print_delay_2 = 20;
|
||||
#endif
|
||||
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
NimBLEDevice::setScanDuplicateCacheSize(200);
|
||||
if (scan_mode != BT_SCAN_WAR_DRIVE_CONT) {
|
||||
NimBLEDevice::setScanFilterMode(CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE);
|
||||
NimBLEDevice::setScanDuplicateCacheSize(200);
|
||||
}
|
||||
NimBLEDevice::init("");
|
||||
pBLEScan = NimBLEDevice::getScan(); //create new scan
|
||||
if (scan_mode == BT_SCAN_ALL)
|
||||
@@ -1660,6 +1741,45 @@ void WiFiScan::RunBluetoothScan(uint8_t scan_mode, uint16_t color)
|
||||
#endif
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), false);
|
||||
}
|
||||
else if ((scan_mode == BT_SCAN_WAR_DRIVE) || (scan_mode == BT_SCAN_WAR_DRIVE_CONT)) {
|
||||
#ifdef WRITE_PACKETS_SERIAL
|
||||
buffer_obj.open();
|
||||
#elif defined(HAS_SD)
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
if (scan_mode == BT_SCAN_WAR_DRIVE)
|
||||
sd_obj.openLog("bt_wardrive");
|
||||
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT)
|
||||
sd_obj.openLog("bt_wardrive_cont");
|
||||
String header_line = "WigleWifi-1.4,appRelease=" + (String)MARAUDER_VERSION + ",model=ESP32 Marauder,release=" + (String)MARAUDER_VERSION + ",device=ESP32 Marauder,display=SPI TFT,board=ESP32 Marauder,brand=JustCallMeKoko\nMAC,SSID,AuthMode,FirstSeen,Channel,RSSI,CurrentLatitude,CurrentLongitude,AltitudeMeters,AccuracyMeters,Type\n";
|
||||
evil_portal_obj.addLog(header_line, header_line.length());
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
return;
|
||||
#endif
|
||||
#ifdef HAS_SCREEN
|
||||
display_obj.TOP_FIXED_AREA_2 = 48;
|
||||
display_obj.tteBar = true;
|
||||
display_obj.initScrollValues(true);
|
||||
display_obj.tft.setTextWrap(false);
|
||||
display_obj.tft.setTextColor(TFT_BLACK, color);
|
||||
#ifdef HAS_ILI9341
|
||||
display_obj.tft.fillRect(0,16,240,16, color);
|
||||
if (scan_mode == BT_SCAN_WAR_DRIVE)
|
||||
display_obj.tft.drawCentreString("BT Wardrive",120,16,2);
|
||||
else if (scan_mode == BT_SCAN_WAR_DRIVE_CONT)
|
||||
display_obj.tft.drawCentreString("BT Wardrive Continuous",120,16,2);
|
||||
display_obj.touchToExit();
|
||||
#endif
|
||||
display_obj.tft.setTextColor(TFT_CYAN, TFT_BLACK);
|
||||
display_obj.setupScrollArea(display_obj.TOP_FIXED_AREA_2, BOT_FIXED_AREA);
|
||||
#endif
|
||||
if (scan_mode != BT_SCAN_WAR_DRIVE_CONT)
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), false);
|
||||
else
|
||||
pBLEScan->setAdvertisedDeviceCallbacks(new bluetoothScanAllCallback(), true);
|
||||
}
|
||||
else if (scan_mode == BT_SCAN_SKIMMERS)
|
||||
{
|
||||
#ifdef HAS_SCREEN
|
||||
@@ -2615,6 +2735,9 @@ void WiFiScan::deauthSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
|
||||
}
|
||||
|
||||
void WiFiScan::probeSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) {
|
||||
|
||||
extern WiFiScan wifi_scan_obj;
|
||||
|
||||
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
|
||||
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
|
||||
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
|
||||
@@ -2631,53 +2754,113 @@ void WiFiScan::probeSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type)
|
||||
|
||||
|
||||
// If we dont the buffer size is not 0, don't write or else we get CORRUPT_HEAP
|
||||
#ifdef HAS_SCREEN
|
||||
int buf = display_obj.display_buffer->size();
|
||||
#else
|
||||
int buf = 0;
|
||||
#endif
|
||||
//#ifdef HAS_SCREEN
|
||||
// int buf = display_obj.display_buffer->size();
|
||||
//#else
|
||||
int buf = 0;
|
||||
//#endif
|
||||
if ((snifferPacket->payload[0] == 0x40) && (buf == 0))
|
||||
{
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" Client: ");
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
Serial.print(" Requesting: ");
|
||||
display_string.concat(" -> ");
|
||||
for (int i = 0; i < snifferPacket->payload[25]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[26 + i]);
|
||||
display_string.concat((char)snifferPacket->payload[26 + i]);
|
||||
if (wifi_scan_obj.currentScanMode == WIFI_SCAN_PROBE) {
|
||||
delay(random(0, 10));
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
Serial.print(" Client: ");
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
Serial.print(" Requesting: ");
|
||||
display_string.concat(" -> ");
|
||||
for (int i = 0; i < snifferPacket->payload[25]; i++)
|
||||
{
|
||||
Serial.print((char)snifferPacket->payload[26 + i]);
|
||||
display_string.concat((char)snifferPacket->payload[26 + i]);
|
||||
}
|
||||
|
||||
// Print spaces because of the rotating lines of the hardware scroll.
|
||||
// The same characters print from previous lines so I just overwrite them
|
||||
// with spaces.
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 19 - snifferPacket->payload[25]; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
//while (display_obj.printing)
|
||||
// delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
|
||||
addPacket(snifferPacket, len);
|
||||
}
|
||||
else if (wifi_scan_obj.currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) {
|
||||
#ifdef HAS_GPS
|
||||
if (gps_obj.getGpsModuleStatus()) {
|
||||
bool do_save = false;
|
||||
|
||||
// Print spaces because of the rotating lines of the hardware scroll.
|
||||
// The same characters print from previous lines so I just overwrite them
|
||||
// with spaces.
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 19 - snifferPacket->payload[25]; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
//while (display_obj.printing)
|
||||
// delay(1);
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
// Check if we've already seen this AP
|
||||
char addr[] = "00:00:00:00:00:00";
|
||||
getMAC(addr, snifferPacket->payload, 10);
|
||||
if (wifi_scan_obj.seen_mac(reinterpret_cast<unsigned char*>(addr)))
|
||||
return;
|
||||
|
||||
addPacket(snifferPacket, len);
|
||||
Serial.print("RSSI: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.rssi);
|
||||
Serial.print(" Ch: ");
|
||||
Serial.print(snifferPacket->rx_ctrl.channel);
|
||||
|
||||
Serial.print(" BSSID: ");
|
||||
Serial.print(addr);
|
||||
display_string.concat(addr);
|
||||
|
||||
if (gps_obj.getFixStatus()) {
|
||||
do_save = true;
|
||||
display_string.concat(" | Lt: " + gps_obj.getLat());
|
||||
display_string.concat(" | Ln: " + gps_obj.getLon());
|
||||
}
|
||||
else
|
||||
display_string.concat(" | GPS: No Fix");
|
||||
|
||||
int temp_len = display_string.length();
|
||||
|
||||
#ifdef HAS_SCREEN
|
||||
for (int i = 0; i < 40 - temp_len; i++)
|
||||
{
|
||||
display_string.concat(" ");
|
||||
}
|
||||
|
||||
Serial.print(" ");
|
||||
|
||||
if (display_obj.display_buffer->size() == 0)
|
||||
{
|
||||
display_obj.loading = true;
|
||||
display_obj.display_buffer->add(display_string);
|
||||
display_obj.loading = false;
|
||||
}
|
||||
#endif
|
||||
|
||||
Serial.println();
|
||||
|
||||
//wifi_scan_obj.save_mac(reinterpret_cast<unsigned char*>(addr));
|
||||
|
||||
if (do_save) {
|
||||
String wardrive_line = (String)addr + "," + (String)addr + ",," + gps_obj.getDatetime() + "," + (String)snifferPacket->rx_ctrl.channel + "," + (String)snifferPacket->rx_ctrl.rssi + "," + gps_obj.getLat() + "," + gps_obj.getLon() + "," + gps_obj.getAlt() + "," + gps_obj.getAccuracy() + ",WIFI";
|
||||
Serial.println(wardrive_line);
|
||||
evil_portal_obj.addLog(wardrive_line, wardrive_line.length());
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3841,6 +4024,7 @@ void WiFiScan::main(uint32_t currentTime)
|
||||
(currentScanMode == WIFI_SCAN_TARGET_AP) ||
|
||||
(currentScanMode == WIFI_SCAN_PWN) ||
|
||||
(currentScanMode == WIFI_SCAN_DEAUTH) ||
|
||||
(currentScanMode == WIFI_SCAN_STATION_WAR_DRIVE) ||
|
||||
(currentScanMode == WIFI_SCAN_ALL))
|
||||
{
|
||||
if (currentTime - initTime >= this->channel_hop_delay * 1000)
|
||||
|
||||
@@ -78,6 +78,9 @@
|
||||
#define WIFI_SCAN_EVIL_PORTAL 30
|
||||
#define WIFI_SCAN_GPS_DATA 31
|
||||
#define WIFI_SCAN_WAR_DRIVE 32
|
||||
#define WIFI_SCAN_STATION_WAR_DRIVE 33
|
||||
#define BT_SCAN_WAR_DRIVE 34
|
||||
#define BT_SCAN_WAR_DRIVE_CONT 35
|
||||
|
||||
#define GRAPH_REFRESH 100
|
||||
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Reference in New Issue
Block a user