Skip to main content

Brute-force and analysis tools for macOS Screen Time passcodes

Project description

screentime-brute

brute-force and analysis tools for macOS Screen Time passcodes. uses UI automation + clock manipulation to bypass lockout timers and try all 10,000 PINs in frequency order.

Structure

bruteforce/
  bruteforce.py           # core logic (PIN entry, lockout bypass, state management)
  bruteforce_tui.py       # rich TUI visualization wrapper
  bruteforce_ui.sh        # shell-based UI automation approach
  pin_frequency.csv       # PINs ordered by frequency (most common first)
tools/
  inspect_passcode.swift  # inspect Screen Time passcode storage
  decode_passcode.swift   # decode stored passcode data
  bruteforce_poc.swift    # swift proof-of-concept brute-force
docs/
  screentime-passcode-internals.md  # deep dive on Screen Time internals

Usage

Switch to root first — the brute-force needs clock manipulation privileges:

sudo su
uvx screentime-brute

Flags:

Flag Description
--demo Demo mode (no system changes)
--reset Clear state and start fresh

Or run from source:

sudo su
pip install .
screentime-brute

Requirements

  • macOS with Screen Time enabled
  • Accessibility permissions for Terminal
  • Python 3.10+
  • Root access (for clock manipulation)

How It Works

  1. Opens the Screen Time passcode dialog via AppleScript
  2. Enters PINs from a frequency-sorted list (most common first)
  3. When locked out, advances the system clock to skip the timer
  4. Resets the clock via NTP after bypass
  5. Tracks state in .bruteforce_state.json for resumable attacks

Swift Tools

# Decode stored passcode data
swiftc tools/decode_passcode.swift -o decode_passcode && ./decode_passcode

# Inspect passcode storage at runtime
swiftc tools/inspect_passcode.swift -o inspect_passcode && ./inspect_passcode

# XPC-based brute-force proof of concept
swiftc tools/bruteforce_poc.swift -o bruteforce_poc && ./bruteforce_poc

© 2026-present Kieran Klukas

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

screentime_brute-0.2.1.tar.gz (52.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

screentime_brute-0.2.1-py3-none-any.whl (42.8 kB view details)

Uploaded Python 3

File details

Details for the file screentime_brute-0.2.1.tar.gz.

File metadata

  • Download URL: screentime_brute-0.2.1.tar.gz
  • Upload date:
  • Size: 52.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for screentime_brute-0.2.1.tar.gz
Algorithm Hash digest
SHA256 f825e71f7ee94368abafd59420739d157a88ef72b2b3e3ed14951a2cb0888d3b
MD5 15c8a2f88dcab6ccf6a1eef428450cf9
BLAKE2b-256 c50405fc3ada4a44254ef09e203bd7781120a7f6dee3bfcc32a674fbd3f25db1

See more details on using hashes here.

File details

Details for the file screentime_brute-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: screentime_brute-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 42.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.8 {"installer":{"name":"uv","version":"0.10.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for screentime_brute-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4269d1f0392dc5f2c9b9d97950506776c735ba84b9c7bd3fcb82e38e832a901b
MD5 db40be8dd41472aae4a21e5f4b4dcd10
BLAKE2b-256 54656318953487ac81b44c5422123e567b6894b2d367f97dffaeffedb4222e65

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page