{"adoption": {"forks": 156, "observed_at": "2026-08-28T04:05:51.086648+00:00", "stars": 1897}, "canonical_url": "https://ross.abutalabs.com/products/applejuice", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Apple BLE proximity pairing message spoofing", "domain": ["security", "hardware", "developer-tools"], "enriched": true, "function": ["security", "networking", "cli"], "health_score": 20, "homepage": null, "language": "Python", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["ECTO-1A/AppleJuice"], "name": "ECTO-1A/AppleJuice", "platform": ["python", "cli"], "pushed_at": "2024-06-17T19:37:23+00:00", "repo": "ECTO-1A/AppleJuice", "stars": 1897, "tags": ["bluetooth", "ble-spam", "apple", "spoofing", "flipper-zero", "esp32", "security-research", "proof-of-concept", "linux", "macos"], "topics": [], "urls": [], "use_cases": ["send fake Apple pairing popups to nearby iPhones", "test BLE proximity pairing message spoofing", "reproduce the DEF CON 31 AppleTV popup attack", "run BLE spam from an ESP32 or Flipper Zero", "research Apple Continuity protocol messages", "spam AirDrop/AppleTV pairing prompts for security demos"], "what_it_is": "AppleJuice is a Python proof-of-concept tool that spoofs Apple BLE proximity pairing messages to trigger pairing popups on nearby Apple devices. It supports running on Linux/macOS, rooted Android, ESP32, and has been ported to Flipper Zero firmware.", "when_to_avoid": ["you need a production or supported tool - this is an experimental PoC", "you want to use it maliciously; it's for educational purposes only", "you need guaranteed compatibility with all Apple devices or BLE adapters"], "when_to_choose": ["you want to experiment with Apple BLE pairing popup spoofing in Python", "you need a portable BLE spam PoC across ESP32, Android, or desktop", "you're researching the Apple Continuity BLE protocol"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/applejuice", "repo": "ECTO-1A/AppleJuice", "role": "main", "score": 28}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:51.086648+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:12:47.795110+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "af2d7952efa119eb1139f0b45ae6968c380306ceb0948db58c82aa9af63d80f1", "fetched_at": "2026-08-28T04:05:51.086648+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ECTO-1A/AppleJuice"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 78, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1105, "days_push": 807, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 28, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}