TL;DR
- BSides Orlando 2026 배지는 1960년대 세계 박람회의 미래상을 주제로 삼고, CH32V003 RISC-V, AAA 배터리 전원, 터치 입력과 CTF 텍스트 어드벤처를 갖춘 전자 배지임.
- 배지는 TPS61021A 부스트 컨버터로 AAA 배터리 한 개의 전압을 높이며, SK6812MINI-E RGB LED 3개, 자체 점멸 LED 4개, 정전식 터치 패드 2개를 사용함.
- SAOv3 호스트는 I2C를 지원하고, GPIO1/GPIO2를 통해 115200 보드(baud) 직렬 콘솔에 연결되며, 콘솔에서 CTF 과제 역할을 겸하는 텍스트 어드벤처를 실행함.
- 펌웨어는 PlatformIO와
ch32fun기반이며,picorvd-for-badges프로브를 사용해 배지를 프로그래밍하고 자체 테스트를 실행할 수 있음. - 독립형 프로그래머 SAO는 RP2040 보드와 GND·3V3·GP4 연결로 구성되며, SWIO 연결에는 1KΩ 풀업 저항이 필요함.
배지 구성
- BSides Orlando 2026 전자 배지의 주제는 레트로퓨처리즘으로, 1960년대 세계 박람회가 그린 미래와 하늘을 나는 자동차를 모는 악어 Lil Chompy를 표현함.
- CH32V003 RISC-V 마이크로컨트롤러를 사용하며, AAA 배터리 한 개의 전원은
TPS61021A부스트 컨버터를 거침. - SK6812MINI-E RGB LED 3개는 하늘을 나는 자동차의 전조등과 지문 스캐너 표시등에 해당함.
- 자체 점멸 LED 4개는 타워 첨탑과 측지 구체를 나타냄.
- 정전식 터치 패드 2개는 지문과 Lil Chompy의 머리에 배치됨.
- SAO 커넥터는 I2C를 사용하는 SAOv3 호스트이며, GPIO1/GPIO2는 115200 보드 직렬 콘솔에 연결됨.
- 직렬 콘솔은 소규모 텍스트 어드벤처이자 CTF 과제인 “Lil Chompy and the World's Fair”를 실행함.
- 펌웨어 소스에는 CTF 풀이와 플래그가 포함됨.
저장소 구성
hardware/: KiCad 프로젝트(bsidesorl-v1), 심볼·풋프린트 라이브러리, 아트워크 소스hardware/EasyEDA_Gerber_bsidesorl-v1_2026-08-31.zip: JLCPCB에 주문한 Gerber 파일hardware/jlcpcb/: JLCPCB에 주문한 BOM과 CPLhardware/mk_easyeda.py: EasyEDA Pro에서 가져올 수 있는 보드 사본을 생성하는 스크립트firmware/: 배지 펌웨어. PlatformIO와ch32fun을 사용하며 자세한 내용은firmware/README.md에 있음.
펌웨어 빌드와 프로그래밍
- 공개 저장소가 아직 게시되지 않은
saov3-lib하위 모듈을 초기화한 뒤,firmware디렉터리에서pio run으로 펌웨어를 빌드함. - 빌드 결과물
.pio/build/bsorl26/firmware.bin을PICORVD드라이브에 복사해picorvd-for-badges프로브에 전달함. - 생산용 배지는 RP2040 프로브인
picorvd-for-badges독립형 프로그래머 빌드로 플래시됨. 프로브는PICORVD라는 USB 드라이브로 표시되며, 여기에firmware.bin을 복사하고CONFIG.TXT에uart_selftest = 0xB5를 설정하면 SWIO 핀을 통해 배지의 플래시 후 자체 테스트가 실행됨. - 공장 로그는 같은 드라이브에서
LOG.CSV로 복사할 수 있음.
프로그래머 SAO 제작
- 사진에서는 SAO 커넥터가 G14-H16에 연결되어 있으며, G와 H 사이의 뒷면 트레이스를 끊어 두 선이 연결되지 않도록 함.
- 사진에서 커넥터 상단은 아래쪽을 향하므로 3V3은 G16, GND는 H16에 위치함.
- Raspberry Pi Pico 또는 호환 보드가 필요함. BSides Orlando의 납땜 빌리지에서 사용한 생산용 프로그래머 SAO에는 Raspberry Pi Pico보다 작고 저렴한 WaveShare RP2040-Zero가 사용됨.
- 연결된 배지에서 프로브에 전원을 공급하는 독립형 프로그래머에는 GND, 3V3, Pico GP4에서 배지 RXD(또는 PD1/SWIO)로 이어지는 세 가닥만 필요함.
- SWIO 연결에는 3V3으로 연결되는 1KΩ 풀업 저항도 필요하며, 점퍼 와이어를 사용해 브레드보드에서 구성할 수 있음.
- 프로브용
picorvd-for-badges펌웨어를 빌드해야 함. 행사 프로그래머 SAO에서 사용한 정확한 버전은 다음 사전 빌드 파일임. - https://github.com/bsidesorlando/2026-badge/releases/download/v1.0.0/pico_rvd_factory.uf2
- WaveShare RP2040-Zero용 빌드는 저장소를 복제하고 CMake와 Ninja를 사용해
pico_rvd_factory대상을 생성하는 방식임. - 빌드 결과물은
build-zero/pico_rvd_factory.uf2임. 프로브를 BOOTSEL 모드로 전환하고, 노출되는 USB 대용량 저장 장치에 파일을 복사하면 프로브가 재부팅해picorvd펌웨어를 실행하고PICORVD드라이브를 다시 표시함. - 프로브가 준비되면
.pio/build/bsorl26/firmware.bin또는 다음 사전 빌드 펌웨어를PICORVD볼륨에 복사할 수 있음. 복사 후 프로브가 재부팅되면서 볼륨이 사라졌다가 다시 나타남. - https://github.com/bsidesorlando/2026-badge/releases/download/v1.0.0/firmware.bin
- 프로브의
CONFIG.TXT에uart_selftest = 0xB5를 추가하면 프로그래밍 후 BSORL 배지가 자체 테스트 모드에 진입함. 이 설정까지 마치면 프로브를 독립형 또는 테더링 모드로 사용할 수 있음.
독립형 모드
- BSides Orlando 납땜 빌리지에서 참석자 배지를 프로그래밍할 때 사용한 모드임.
- 프로브 보드는 대상 배지에서 전원을 공급받으며, 부팅 직후 연결된 대상을 프로그래밍함. 프로브에 전원을 공급하려면 배지 전원을 켜야 함.
테더링 모드
- 프로브를 USB로 호스트 PC에 연결해 사용하는 모드임.
pico_rvd_factory.uf2대신pico_rvd.uf2를 사용하면 연결된 배지가 자동으로 프로그래밍되지 않으며, UART 인터페이스로 프로브에 factory 명령을 직접 보내야 함.pico_rvd_factory.uf2빌드는 factory 모드로 자동 시작해 연결된 배지를 프로그래밍할 준비를 마침.- USB 전원이 공급되는 프로브를 전원이 켜진 배지에 연결하면 안 됨. 테더링 프로브를 연결하기 전에 배지의 전원 스위치를 OFF로 설정해야 함.
- 배지와 프로브의 전압이 정확히 3.3V로 일치하지 않을 수 있어 전류 누설이 발생할 수 있으며, 최악의 경우 AAA 배터리가 손상되어 누액이 발생할 수 있음.
크레딧
- PCB와 펌웨어는 Kevin Colley, 아트워크는 Shep가 제작함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요