
Cryptohack इलेक्ट्रॉनिक बैज परियोजना का फर्मवेयर इंजीनियरिंग घर।
hip-badge ESP32-C3 प्लेटफ़ॉर्म पर ऑनबोर्ड ATECC608B सिक्योर एलिमेंट के साथ एक अर्ध-सुरक्षित, हैकर-अनुकूल हार्डवेयर क्रिप्टो वॉलेट। BTC, ETH (+ 8 EVM चेन), SOL, और XMR के लिए लेनदेन पर हस्ताक्षर करता है, जिसमें डिवाइस पर एक SIGN स्क्रीन होती है जिसे उपयोगकर्ता को मंज़ूरी देनी होती है इससे पहले कि कोई भी निजी कुंजी संदेश को छुए।
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ एक नए बैज पर सबसे पहले फ़ैक्टरी फ़र्मवेयर फ़्लैश करें। रनटाइम वॉलेट अपेक्षा करता है कि ATECC608B प्रोविज़न किया गया हो (स्लॉट कुंजियाँ लोड हों, कॉन्फ़िग-ज़ोन कॉन्फ़िगर हो) और उसके बिना अपना PIN-रैप्ड सीड अनलॉक नहीं करेगा। क्रम है: फ़ैक्टरी बिल्ड करें → फ़ैक्टरी फ़्लैश करें → होस्ट ड्राइवर (
factory_provision.py) चलाएँ → रनटाइम बिल्ड करें → रनटाइम फ़्लैश करें। फ़ैक्टरी चरण छोड़ेंगे तो आपको SE-init विफलता मिलेगी और स्प्लैश पर बूट रुक जाएगा। होस्ट ड्राइवर वॉकथ्रू के लिएdocs/TOOLS.md§ फ़ैक्टरी प्रोविज़निंग देखें।
# 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
पूर्ण walk-through (Linux / macOS / Windows): firmware/BUILDING.md।
एक नया badge provision करने या test suite को reproduce करने के लिए: docs/TOOLS.md।
| इसे पढ़ें | यदि आप चाहते हैं कि… |
|---|---|
firmware/BUILDING.md | ESP-IDF इंस्टॉल करें और पहली बार डिवाइस को flash करें |
docs/ARCHITECTURE.md | समझें कि wallet कैसे काम करता है — components, trust zones, signing flow |
docs/TOOLS.md | factory provisioning host driver या per-coin sign tests चलाएँ |
docs/VERIFY.md | बड़े बदलावों से पहले / बाद verification sweep चलाएँ |
docs/PLAN.md | विस्तृत security spec पढ़ें — KEK ceremony, slot maps, recovery flows |
docs/CODE_STYLE.md | प्रोजेक्ट conventions के अनुरूप PR सबमिट करें |
CONTRIBUTING.md | PR खोलें (branching, commits, review expectations) |
TODO.md | काम करने के लिए कुछ खोजें या देखें कि क्या पहले से shipped है |
CLAUDE.md | प्रोजेक्ट पर AI assistant (Claude, Cursor, आदि) को brief करें |
| Flavor | eFuse | उपयोग | Reflashable? |
|---|---|---|---|
dev | virtual (flash) | दैनिक iteration | हाँ, हमेशा |
stage | real, unlocked | end-to-end silicon test | हाँ, जब तक आप lock नहीं करते |
prod | real, locked | shipped device, Secure Boot V2 | नहीं |
मिश्रित:
firmware/badge/components/trezor-crypto/ — MIT (Trezor से vendored)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (hip-badge blinkenlights/ का विस्तार) — GPL-2.0-or-later