
Das Zuhause der Firmware-Entwicklung des Cryptohack-Elektronik-Badge-Projekts.
Eine halbsichere, hackerfreundliche Hardware-Krypto-Wallet auf der hip-badge ESP32-C3-Plattform mit dem integrierten ATECC608B Secure Element. Signiert Transaktionen für BTC, ETH (+ 8 EVM-Chains), SOL und XMR mit einem geräteinternen SIGN-Bildschirm, den der Benutzer genehmigen muss, bevor ein privater Schlüssel die Nachricht berührt.
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ Spiele zuerst die Werksfirmware auf ein frisches Badge. Die Runtime- Wallet erwartet, dass der ATECC608B bereitgestellt ist (Slot-Schlüssel geladen, Konfigurationszone konfiguriert) und entsperrt ohne dies seinen PIN-geschützten Seed nicht. Die Reihenfolge ist: Factory bauen → Factory flashen → Host- Treiber ausführen (
factory_provision.py) → Runtime bauen → Runtime flashen. Überspringe den Factory-Schritt und du erhältst einen SE-Init-Fehler und einen hängenden Boot beim Splash. Siehedocs/TOOLS.md§ Factory provisioning für die Anleitung zum Host-Treiber.
# Activate ESP-IDF in this shell (see firmware/BUILDING.md for install)
. ~/esp/esp-idf/export.sh # or export.ps1 on Windows
# 1. Factory provision (one-time per badge)
cd firmware/factory
idf.py -B build -p $PORT build flash monitor
# (in another shell) cd firmware/factory/tools && \
# uv run --with pyserial --with cbor2 factory_provision.py --port $PORT
# 2. Build + flash the runtime (do this AFTER factory)
cd ../badge
export SDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.dev"
idf.py -B build_dev -p $PORT build flash monitor
Vollständige Schritt-für-Schritt-Anleitung (Linux / macOS / Windows): firmware/BUILDING.md.
Um ein frisches Badge bereitzustellen oder die Testsuite zu reproduzieren: docs/TOOLS.md.
| Lesen Sie dies | Wenn Sie… |
|---|---|
firmware/BUILDING.md | ESP-IDF installieren und das Gerät zum ersten Mal flashen |
docs/ARCHITECTURE.md | Verstehen, wie die Wallet funktioniert — Komponenten, Vertrauenszonen, Signierablauf |
docs/TOOLS.md | Den Host-Treiber für die Werksbereitstellung oder die Signiertests pro Coin ausführen |
docs/VERIFY.md | Den Verifikationsdurchlauf vor / nach wesentlichen Änderungen ausführen |
docs/PLAN.md | Die vollständige Sicherheitsspezifikation lesen — KEK-Zeremonie, Slot-Zuordnungen, Wiederherstellungsabläufe |
docs/CODE_STYLE.md | Einen PR einreichen, der den Projektkonventionen entspricht |
CONTRIBUTING.md | Einen PR eröffnen (Branching, Commits, Review-Erwartungen) |
TODO.md | Etwas zum Arbeiten finden oder prüfen, was bereits ausgeliefert ist |
CLAUDE.md | Einen KI-Assistenten (Claude, Cursor usw.) über das Projekt informieren |
| Variante | eFuse | Verwendung | Neu flashbar? |
|---|---|---|---|
dev | virtuell (Flash) | tägliche Iteration | ja, immer |
stage | echt, entsperrt | End-to-End-Siliziumtest | ja, bis Sie sperren |
prod | echt, gesperrt | ausgeliefertes Gerät, Secure Boot V2 | nein |
Gemischt:
firmware/badge/components/trezor-crypto/ — MIT (von Trezor übernommen)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (Erweiterung von hip-badge blinkenlights/) — GPL-2.0-or-later