Compare commits

...

2 Commits

Author SHA1 Message Date
Just Call Me Koko
774d5f0707 Merge pull request #1050 from justcallmekoko/develop
Update Sour Apple
2026-01-13 08:13:54 -05:00
Just Call Me Koko
bab011e618 Refactor sour apple 2026-01-13 07:37:59 -05:00
3 changed files with 107 additions and 40 deletions

View File

@@ -72,31 +72,71 @@ extern "C" {
#endif
break;
}
case Apple: {
AdvData_Raw = new uint8_t[17];
case Apple: { // Actions
if (random(10) > 0) {
AdvData_Raw = new uint8_t[11];
AdvData_Raw[i++] = 17 - 1; // Packet Length
AdvData_Raw[i++] = 0xFF; // Packet Type (Manufacturer Specific)
AdvData_Raw[i++] = 0x4C; // Packet Company ID (Apple, Inc.)
AdvData_Raw[i++] = 0x00; // ...
AdvData_Raw[i++] = 0x0F; // Type
AdvData_Raw[i++] = 0x05; // Length
AdvData_Raw[i++] = 0xC1; // Action Flags
const uint8_t types[] = { 0x27, 0x09, 0x02, 0x1e, 0x2b, 0x2d, 0x2f, 0x01, 0x06, 0x20, 0xc0 };
AdvData_Raw[i++] = types[rand() % sizeof(types)]; // Action Type
esp_fill_random(&AdvData_Raw[i], 3); // Authentication Tag
i += 3;
AdvData_Raw[i++] = 0x00; // ???
AdvData_Raw[i++] = 0x00; // ???
AdvData_Raw[i++] = 0x10; // Type ???
esp_fill_random(&AdvData_Raw[i], 3);
AdvData_Raw[i++] = 0x0A; // Packet Length
AdvData_Raw[i++] = 0xFF; // Packet Type (Manufacturer Specific)
AdvData_Raw[i++] = 0x4C; // Packet Company ID (Apple, Inc.)
AdvData_Raw[i++] = 0x00; // ...
AdvData_Raw[i++] = 0x0F; // Type
AdvData_Raw[i++] = 0x05; // Length
AdvData_Raw[i++] = 0xC0; // Action Flags
#ifndef HAS_DUAL_BAND
AdvData.addData(std::string((char *)AdvData_Raw, 17));
#else
AdvData.addData(AdvData_Raw, 17);
#endif
break;
const uint8_t types[] = { 0x27, 0x09, 0x02, 0x1e, 0x2b, 0x2f, 0x01, 0x06, 0x20};
AdvData_Raw[i++] = types[rand() % sizeof(types)]; // Action Type
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
//i += 3;
//AdvData_Raw[i++] = 0x00; // ???
//AdvData_Raw[i++] = 0x00; // ???
//AdvData_Raw[i++] = 0x10; // Type ???
//esp_fill_random(&AdvData_Raw[i], 3);
#ifndef HAS_DUAL_BAND
AdvData.addData(std::string((char *)AdvData_Raw, 11));
#else
AdvData.addData(AdvData_Raw, 11);
#endif
break;
}
else { // Devices
AdvData_Raw = new uint8_t[21];
AdvData_Raw[i++] = 0x14;
AdvData_Raw[i++] = 0xFF;
AdvData_Raw[i++] = 0x4C;
AdvData_Raw[i++] = 0x00;
AdvData_Raw[i++] = 0x07;
AdvData_Raw[i++] = 0x0F;
AdvData_Raw[i++] = 0x00;
const uint16_t types[] = {0x0220, 0x0F20, 0x1320, 0x1420, 0x0E20, 0x0A20, 0x0055, 0x0C20, 0x1120, 0x0520, 0x1020, 0x0920, 0x1720, 0x1220, 0x1620};
uint16_t type = types[rand() % (sizeof(types) / sizeof(types[0]))];
AdvData_Raw[i++] = (uint8_t)((type >> 0x08) & 0xFF);
AdvData_Raw[i++] = (uint8_t)((type >> 0x00) & 0xFF);
AdvData_Raw[i++] = 0xAC;
AdvData_Raw[i++] = 0x90;
AdvData_Raw[i++] = 0x85;
AdvData_Raw[i++] = 0x75;
AdvData_Raw[i++] = 0x94;
AdvData_Raw[i++] = 0x65;
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = (uint8_t)random(256);
AdvData_Raw[i++] = 0x00;
#ifndef HAS_DUAL_BAND
AdvData.addData(std::string((char *)AdvData_Raw, 21));
#else
AdvData.addData(AdvData_Raw, 21);
#endif
break;
}
}
case Samsung: {
@@ -4602,25 +4642,44 @@ void WiFiScan::RunPwnScan(uint8_t scan_mode, uint16_t color)
}
void WiFiScan::executeSourApple() {
uint32_t now_time = millis();
#ifdef HAS_BT
NimBLEDevice::init("");
NimBLEServer *pServer = NimBLEDevice::createServer();
if ((now_time - this->last_sour_apple_update > 1000) || (this->last_sour_apple_update == 0) || (!this->ble_initialized)) {
uint8_t macAddr[6];
generateRandomMac(macAddr);
this->setBaseMacAddress(macAddr);
pAdvertising = pServer->getAdvertising();
NimBLEDevice::init("");
NimBLEServer *pServer = NimBLEDevice::createServer();
pAdvertising = pServer->getAdvertising();
delay(40);
NimBLEAdvertisementData advertisementData = this->GetUniversalAdvertisementData(Apple);
pAdvertising->setAdvertisementData(advertisementData);
this->ble_initialized = true;
}
delay(40);
//NimBLEAdvertisementData advertisementData = getOAdvertisementData();
NimBLEAdvertisementData advertisementData = this->GetUniversalAdvertisementData(Apple);
pAdvertising->setAdvertisementData(advertisementData);
pAdvertising->start();
delay(20);
delay(60);
pAdvertising->stop();
#ifndef HAS_DUAL_BAND
if ((now_time - this->last_sour_apple_update > 1000) || (this->last_sour_apple_update == 0)) {
this->last_sour_apple_update = now_time;
NimBLEDevice::deinit();
this->ble_initialized = false;
}
#endif
#endif
}
void WiFiScan::setBaseMacAddress(uint8_t macAddr[6]) {
// Use ESP-IDF function to set the base MAC address
#ifndef HAS_DUAL_BAND
//#ifndef HAS_DUAL_BAND
esp_err_t err = esp_base_mac_addr_set(macAddr);
// Check for success or handle errors
@@ -4631,7 +4690,7 @@ void WiFiScan::setBaseMacAddress(uint8_t macAddr[6]) {
} else {
Serial.printf("Error: Failed to set MAC address. Code: %d\n", err);
}
#endif
//#endif
}
void WiFiScan::executeSpoofAirtag() {
@@ -4662,7 +4721,9 @@ void WiFiScan::executeSpoofAirtag() {
delay(10);
pAdvertising->stop();
NimBLEDevice::deinit();
#ifndef HAS_DUAL_BAND
NimBLEDevice::deinit();
#endif
break;
}
@@ -4692,7 +4753,9 @@ void WiFiScan::executeSwiftpairSpam(EBLEPayloadType type) {
delay(10);
pAdvertising->stop();
NimBLEDevice::deinit();
#ifndef HAS_DUAL_BAND
NimBLEDevice::deinit();
#endif
#endif
}
@@ -5228,10 +5291,10 @@ void WiFiScan::RunProbeScan(uint8_t scan_mode, uint16_t color)
void WiFiScan::RunSourApple(uint8_t scan_mode, uint16_t color) {
#ifdef HAS_BT
/*NimBLEDevice::init("");
NimBLEDevice::init("");
NimBLEServer *pServer = NimBLEDevice::createServer();
pAdvertising = pServer->getAdvertising();*/
pAdvertising = pServer->getAdvertising();
#ifdef HAS_SCREEN
display_obj.TOP_FIXED_AREA_2 = 48;

View File

@@ -34,6 +34,7 @@
#endif
#ifdef HAS_DUAL_BAND
#include "esp_system.h"
#include "esp_mac.h"
#endif
#if defined(HAS_BT) && !defined(HAS_DUAL_BAND)
#include "esp_bt.h"
@@ -216,9 +217,9 @@ extern Settings settings_obj;
esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq);
#ifdef HAS_DUAL_BAND
esp_err_t esp_base_mac_addr_set(uint8_t *Mac);
#endif
//#ifdef HAS_DUAL_BAND
// esp_err_t esp_base_mac_addr_set(uint8_t *Mac);
//#endif
#define EMPTY_ENTRY 0
#define VALID_ENTRY 1
@@ -308,6 +309,7 @@ class WiFiScan
uint32_t initTime = 0;
uint32_t last_ui_update = 0;
uint32_t last_sour_apple_update = 0;
bool run_setup = true;
void initWiFi(uint8_t scan_mode);
uint8_t bluetoothScanTime = 5;

View File

@@ -154,6 +154,8 @@ void backlightOff() {
void setup()
{
randomSeed(esp_random());
#ifndef DEVELOPER
esp_log_level_set("*", ESP_LOG_NONE);
#endif