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.1.0.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.1.0-py3-none-any.whl (42.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: screentime_brute-0.1.0.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.1.0.tar.gz
Algorithm Hash digest
SHA256 042397ca961fda8dc57c33b763566c605535d5691caf5a43a50fc61108eb599f
MD5 7020f511c93f8c5fcabd470155c981b3
BLAKE2b-256 0d2671e1693a016dc1748cfd13a779f99838033d896f7486be2a1ada2a7681c9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: screentime_brute-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 42.4 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e982d998d9dcaf106fba1ac7d850587e9187366855b54037520340dc90c39044
MD5 3705722b57393aeba0b39d16714c1eb8
BLAKE2b-256 4a437229ef7bb7146b29c5bace83e0590da379b8efab6e13fe4adbf2d3ec987b

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