
El hogar de ingeniería de firmware del proyecto de placa electrónica Cryptohack.
Una cartera de criptomonedas hardware semisegura y amigable para hackers en la plataforma ESP32-C3 hip-badge con el elemento seguro ATECC608B integrado. Firma transacciones para BTC, ETH (+ 8 cadenas EVM), SOL y XMR con una pantalla de FIRMA en el dispositivo que el usuario debe aprobar antes de que cualquier clave privada toque el mensaje.
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ Graba primero el firmware de fábrica en una badge nueva. La cartera en tiempo de ejecución espera que el ATECC608B esté aprovisionado (claves de slot cargadas, zona de configuración configurada) y no desbloqueará su semilla envuelta en PIN sin eso. El orden es: compilar fábrica → grabar fábrica → ejecutar el driver de host (
factory_provision.py) → compilar runtime → grabar runtime. Omite el paso de fábrica y obtendrás un fallo de inicialización del SE y un arranque bloqueado en la pantalla de inicio. Consultadocs/TOOLS.md§ Factory provisioning para el recorrido del driver de host.
# 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
Recorrido completo (Linux / macOS / Windows): firmware/BUILDING.md.
Para aprovisionar un badge nuevo o reproducir la suite de pruebas: docs/TOOLS.md.
| Lee esto | Si quieres… |
|---|---|
firmware/BUILDING.md | Instalar ESP-IDF y flashear el dispositivo por primera vez |
docs/ARCHITECTURE.md | Entender cómo funciona la cartera — componentes, zonas de confianza, flujo de firma |
docs/TOOLS.md | Ejecutar el driver host de aprovisionamiento de fábrica o las pruebas de firma por moneda |
docs/VERIFY.md | Ejecutar la verificación completa antes / después de cambios sustanciales |
docs/PLAN.md | Leer la especificación de seguridad exhaustiva — ceremonia KEK, mapas de slots, flujos de recuperación |
docs/CODE_STYLE.md | Enviar un PR que cumpla con las convenciones del proyecto |
CONTRIBUTING.md | Abrir un PR (ramas, commits, expectativas de revisión) |
TODO.md | Encontrar algo en lo que trabajar o comprobar qué ya está implementado |
CLAUDE.md | Informar a un asistente de IA (Claude, Cursor, etc.) sobre el proyecto |
| Variante | eFuse | Uso | ¿Reflasheable? |
|---|---|---|---|
dev | virtual (flash) | iteración diaria | sí, siempre |
stage | real, desbloqueado | prueba de silicio de extremo a extremo | sí, hasta que lo bloquees |
prod | real, bloqueado | dispositivo enviado, Secure Boot V2 | no |
Mixta:
firmware/badge/components/trezor-crypto/ — MIT (incorporado de Trezor)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (extendiendo blinkenlights/ de hip-badge) — GPL-2.0-or-later