
Hardware Hacking CTF hcon2026hwctf - RISCV Hazard3 (@Wren6991) Explorando por @b1n4ri0 @antoniovazquezblanco & @therealdreg
Se gostas de CTFs de hardware, aqui está o primeiro desafio público do HC0N CTF 2026, com desafios de exploração RISC-V RP2350 (baixo nível).
Tentámos tornar o desafio não muito elitista ou difícil, para que as centenas de participantes da conferência tenham hipótese de resolver os desafios. Espero ter conseguido atingir esse objetivo.
Se quiseres executar o CTF em casa, arranja uma Raspberry Pi Pico 2, carrega este firmware e não lês as write-ups! -> ctf.uf2
Nota para quem usar uma placa (RP2350/RP2354...) diferente da do CTF:
A PCB do CTF tem um LED SMD no GPIO 25, deves ter um LED nesse GPIO

Quando terminares este CTF, se gostaste, aqui está outro semelhante com desafios diferentes: https://github.com/therealdreg/ctfhardwarehackingcon2026
AVISO: As write-ups seguintes contêm spoilers dos desafios. Se quiseres resolvê-los sozinho, recomendamos não as ler até teres completado o CTF.
Primeiro Vencedor: @mrexodia (Duncan Ogilvie) writeups/first_winner.md

Prémio: kit keylogger USB/PS2 Okhi + CWP (Certified WifiChallenge Professional) https://github.com/therealdreg/okhi
Segundo Vencedor: @M3RINOOOOO (Cristobal Merino Saez) writeups/second_winner.md

Prémio: Pimoroni PGA2350, PICO2 WH, Pimoroni PICO PLUS 2W, PICO2 H, CWP (Certified WifiChallenge Professional)
Terceiro Vencedor: @p4bl0vx (Pablo Moya Lopez) writeups/third_winner.md

Prémio: Pimoroni PGA2350, PICO2 WH, Pimoroni PICO PLUS 2W, CWP (Certified WifiChallenge Professional).
Aqui fornecemos alguma ajuda para facilitar o Hardware Hacking CTF no HCON 2026.

Um host Linux deve ser a tua primeira opção ;-), a depuração funciona melhor.
TeraTerm: Setup -> Terminal -> Transmit: CR+LF & [x] Local echo

Outros:
cutecom:``` sudo apt-get update sudo apt-get install cutecom
# AVISO
Um dos desafios requer depuração de hardware. Se você estiver fazendo o desafio em casa (sem um colega de equipe que tenha outra placa), então para resolver esse desafio você também precisará comprar esses dois itens. (Se não comprá-los, sem problemas — mas você não conseguirá resolver esse desafio específico.)
- https://www.tiendatec.es/raspberry-pi-pico/2025-raspberry-pi-debug-probe-5056561803265.html
- https://www.tiendatec.es/raspberry-pi-pico/1979-cable-depuracion-pico-jtag-jst-sh-1-0-a-dupont-hembra-15cm-8472496024846.html
# Sobre os scripts
As ferramentas incluídas neste repositório foram desenvolvidas por @b1n4ri0 para a comunidade e especificamente para o 2026 HCON Hardware Hacking Challenge.
# Explorando o processador RP2350 RISCV Hazard3 (@Wren6991) 3 estágios RV32IMACZb* com depuração
RISCV Hazard3 é um processador de 3 estágios RV32IMACZb* com suporte a depuração. Ele é usado no microcontrolador RP2350 encontrado na placa HCON2026HWCTF.
# Extraindo firmware do RISCV Hazard3 usando picotool
Extrair firmware de dispositivos RP2350 com `picotool` é um processo direto. Nesta seção, você aprenderá como fazê-lo de forma eficaz.
Nota: `picotool` interage com dispositivos RP2350 (e RP2040) apenas quando estão no modo BOOTSEL ou se o firmware em execução inclui suporte USB stdio do Pico SDK.
## Compilando picotool
Instale as ferramentas de compilação e bibliotecas necessárias através do seu gerenciador de pacotes favorito.```bash
sudo apt-get update
sudo apt install build-essential pkg-config libusb-1.0-0-dev cmake -y
Crie um diretório dedicado para manter suas ferramentas organizadas. Isso garante que os caminhos usados nas etapas posteriores estejam corretos.```bash cd $HOME mkdir rptools cd rptools
Clone os projetos `picotool` e `pico-sdk`, precisamos tanto da ferramenta em si quanto do SDK. Observe que `picotool` requer `pico-sdk` para compilar corretamente.```bash
git clone https://github.com/raspberrypi/picotool.git
git clone https://github.com/raspberrypi/pico-sdk.git
cd picotool
Crie o diretório de build e execute o CMake.
Importante: Devemos usar a flag -DPICO_SDK_PATH para informar ao CMake exatamente onde baixamos o SDK na etapa anterior, ou podemos definir a variável de ambiente PICO_SDK_PATH.```bash
mkdir build
cd build
cmake -DPICO_SDK_PATH=$HOME/rptools/pico-sdk ..
sudo make install
Por padrão, acessar dispositivos USB requer privilégios de root. Copie o arquivo de regras udev para permitir executar `picotool` sem usar `sudo`.```bash
sudo cp ../udev/60-picotool.rules /etc/udev/rules.d/
Recarregue as regras do udev (ou desconecte e reconecte seu dispositivo) e verifique a versão executando picotool version para garantir que tudo está funcionando:```bash
$ ./picotool version
picotool v2.2.0-a4 (Linux, GNU-15.2.0, Release)
## Usando binário pré-construído
Se preferir pular o processo de compilação, você pode baixar o binário pré-compilado do [repositório oficial](https://github.com/raspberrypi/pico-sdk-tools/releases).```bash
gunzip picotool-2.2.0-a4-x86_64-lin.tar.gz
tar -xf picotool-2.2.0-a4-x86_64-lin.tar
cd picotool
Executar picotool version deve funcionar conforme o esperado:```bash
$ ./picotool version
picotool v2.2.0-a4 (Linux, GNU-11.4.0, Release)
## Ativar o modo BOOTSEL no RP2350
Para realizar operações como extrair firmware, o `picotool` exige que o dispositivo esteja no modo BOOTSEL. No entanto, o `picotool` também pode interagir com o dispositivo se o firmware atualmente em execução incluir suporte USB stdio do Pico SDK.
Abaixo, mencionarei várias maneiras de ativar este modo. Escolha a que parecer mais adequada para o seu caso ou simplesmente a que funcionar para você.
Se a sua placa **não estiver no modo BOOTSEL**, mas contiver o suporte USB stdio**,** você verá uma saída como esta ao tentar executar comandos do `picotool`:```bash
$ ./picotool info
No accessible RP-series devices in BOOTSEL mode were found.
but:
RP2350 device at bus 1, address 23 appears to have a USB serial connection, so consider -f (or -F) to force reboot in order to run the command.
Este é o método de hardware padrão usado:
BOOTSEL ou BOOT botão.BOOTSEL.Alternativa (se você não quiser desconectar a placa):**
BOOTSEL.RESET ou RST.BOOTSEL.