Skip to main content

Automate Windows Hello PIN entry via USB HID keyboard (Raspberry Pi Pico)

Project description

pywinhello

Automate Windows Hello PIN entry via USB HID keyboard (Raspberry Pi Pico).

Windows Hello's Credential Dialog is protected by UIPI — no software input method (SendInput, pyautogui, pywinauto) can type into it. pywinhello uses a Raspberry Pi Pico as a USB HID keyboard to bypass this restriction and enter PINs automatically.

Features

  • Process-aware: identifies which app triggered Windows Hello, enters the correct PIN
  • Two-pass detection: handles both PIN mode and fingerprint mode automatically
  • Progressive API: from raw HID keyboard to full daemon monitor
  • Zero polling: uses WinEvent hooks for instant dialog detection

Install

pip install pywinhello

Quick Start

from pywinhello import enter_pin

# One-shot: enter PIN when dialog appears
event = enter_pin("1234")
print(event.dialog_dismissed)  # True if PIN was accepted

# Daemon: monitor all apps
from pywinhello import HelloMonitor
from pywinhello.models import AppConfig, MonitorConfig

config = MonitorConfig(apps=[
    AppConfig(exe="MarketSpeed2.exe", pin="1234"),
])
monitor = HelloMonitor(config)
monitor.serve()

Hardware Setup

Requires a Raspberry Pi Pico (W/2/2W) running CircuitPython with adafruit_hid. See firmware/pico_hid/ for the firmware files.

License

MIT

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

pywinhello-0.1.0.tar.gz (76.8 kB view details)

Uploaded Source

Built Distribution

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

pywinhello-0.1.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for pywinhello-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3564e28d18a4c477cce3824748d6f6c1d5d3dd5ae03d52a0d50246b5cb42f009
MD5 28ce448f3a5592e758d39217269de62a
BLAKE2b-256 119f407b45dc006ea2116be98e93cd1bbc5bd6426f2ec7971446ea33911333d9

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for pywinhello-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 de0facbc2e2d1eee39c228fd279ec35f1800c54f8106dbb5565505697129698f
MD5 c93895431d0562033d44c53e394e1fdf
BLAKE2b-256 6f5d34f1b2afb05fd6aec22f2666d097da1a67d66b4271121c36bd985929feb1

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