---
title: "Drawbot 해킹: 귀여운 어린이 그림 로봇을 분해하고 커스텀 이미지 그리게 만들기"
published: 2026-01-16T22:13:18.000Z
canonical: https://jeff.news/article/911
---
# Drawbot 해킹: 귀여운 어린이 그림 로봇을 분해하고 커스텀 이미지 그리게 만들기

어린이용 드로잉 로봇을 리버스 엔지니어링한 해킹기. 8비트 바코드 에뮬레이션, SPI 플래시 덤프, 좌표 기반 이미지 포맷 파싱을 거쳐 커스텀 이미지를 그리게 하는 데 성공.

## 타겟 선정과 분해

- 카드의 바코드를 읽어서 미리 정의된 그림을 그리는 어린이용 드로잉 로봇을 해킹한 이야기임. 각 카드에는 8비트 바코드가 있어서 최대 256개의 이미지가 가능한 구조
- 분해해보니 입력 멀티플렉싱 방식을 사용하고 있었음. VCC1 페이즈에서 센서 1-5를 읽고, VCC2 페이즈에서 센서 6-8을 읽어서 같은 입력 핀을 재사용하는 구조. Saleae 로직 분석기로 확인함

## 바코드 에뮬레이션과 퍼징

- Raspberry Pi의 GPIO 핀으로 바코드 에뮬레이터를 만들어서 모든 바코드 값을 퍼징함. 카드 덱에 없는 숨겨진 이미지들을 발견했는데, "Take a bath!" 같은 의외의 그림이 있었음
- 바코드 방향이 카드 뒷면에서 반전되어 있어서 처음에 데이터가 안 맞았다는 삽질 에피소드도 있음

## 이미지 덤프와 파싱

- SPI 플래시 칩을 덤프해서 254개의 드로잉 이미지를 추출함. 처음에 flashrom이 비표준 칩 크기를 잘못 읽어서 35개만 나왔는데, 16MB로 강제 지정하니 전체 데이터가 나옴
- 이미지 데이터는 좌표 기반 포맷이었고, Python으로 raw data를 SVG로 변환하는 파서와 SVG를 raw data로 역변환하는 제너레이터를 작성함

## 커스텀 이미지 플래싱

- ChatGPT한테 좌표 포맷 디코딩을 도움받았는데, "pen up"(펜 들기) 액션을 제대로 처리 못해서 모든 이동에 선이 그어지는 문제가 있었음. 본인 이미지가 연속 선이라 일단 넘어감
- 최종적으로 커스텀 SVG를 기존 이미지 슬롯에 맞춰 변환하고 플래시에 써서 로봇이 직접 그리게 하는 데 성공함. 플래시 칩을 브레이크아웃 보드에 달아서 프로그래머와 로봇 사이를 왔다갔다 할 수 있게 세팅함
- 향후 과제로는 이미지 변환부터 플래시 쓰기, 드로잉 트리거까지 원스텝으로 자동화하는 것, 오디오 포맷 디코딩, 로봇 본체 리디자인 등을 언급함

## 핵심 포인트

- 8비트 바코드 입력 멀티플렉싱 방식을 로직 분석기로 파악
- Raspberry Pi GPIO로 바코드 에뮬레이터 제작, 숨겨진 이미지 발견
- SPI 플래시에서 254개 이미지 덤프 후 Python으로 raw↔SVG 변환 파이프라인 구축

## 인사이트

toy_hardware_hacking
