
A casa da engenharia de firmware do projeto de crachá eletrônico Cryptohack.
Uma carteira de criptomoedas em hardware semi-segura e amigável para hackers na plataforma ESP32-C3 hip-badge com o elemento seguro ATECC608B integrado. Assina transações para BTC, ETH (+ 8 redes EVM), SOL e XMR com uma tela de ASSINATURA no dispositivo que o usuário precisa aprovar antes que qualquer chave privada toque a mensagem.
firmware/badge/ runtime wallet
firmware/factory/ one-shot provisioning firmware + host driver
ref/ gitignored — clone upstream schematics here
⚠ Grave o firmware de fábrica PRIMEIRO em um badge novo. A carteira de runtime espera que o ATECC608B esteja provisionado (chaves de slot carregadas, zona de configuração configurada) e não desbloqueará sua seed protegida por PIN sem isso. A ordem é: compilar o de fábrica → gravar o de fábrica → executar o driver de host (
factory_provision.py) → compilar o de runtime → gravar o de runtime. Pule a etapa de fábrica e você terá uma falha de inicialização do SE e um boot travado na tela de splash. Consultedocs/TOOLS.md§ Provisionamento de fábrica para o passo a passo do 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
Passo a passo completo (Linux / macOS / Windows): firmware/BUILDING.md.
Para provisionar um badge novo ou reproduzir a suíte de testes: docs/TOOLS.md.
| Leia isto | Se você quer… |
|---|---|
firmware/BUILDING.md | Instalar o ESP-IDF e gravar o dispositivo pela primeira vez |
docs/ARCHITECTURE.md | Entender como a carteira funciona — componentes, zonas de confiança, fluxo de assinatura |
docs/TOOLS.md | Executar o driver host de provisionamento de fábrica ou os testes de assinatura por moeda |
docs/VERIFY.md | Executar a varredura de verificação antes / depois de mudanças substanciais |
docs/PLAN.md | Ler a especificação de segurança exaustiva — cerimônia de KEK, mapas de slots, fluxos de recuperação |
docs/CODE_STYLE.md | Enviar um PR que siga as convenções do projeto |
CONTRIBUTING.md | Abrir um PR (branching, commits, expectativas de revisão) |
TODO.md | Encontrar algo para trabalhar ou verificar o que já foi entregue |
CLAUDE.md | Briefar um assistente de IA (Claude, Cursor, etc.) sobre o projeto |
| Variante | eFuse | Uso | Regravável? |
|---|---|---|---|
dev | virtual (flash) | iteração diária | sim, sempre |
stage | real, desbloqueado | teste de silício ponta a ponta | sim, até você bloquear |
prod | real, bloqueado | dispositivo entregue, Secure Boot V2 | não |
Mista:
firmware/badge/components/trezor-crypto/ — MIT (incorporado do Trezor)firmware/badge/components/tinycbor/ — MIT (Intel)firmware/badge/components/qrcodegen/ — MIT (Project Nayuki)firmware/badge/main/ (estendendo blinkenlights/ do hip-badge) — GPL-2.0-or-later