---
title: "유니클로 티셔츠 뒤에 찍힌 난독화 Bash 스크립트를 까봤더니"
published: 2026-07-08T08:46:06.000Z
canonical: https://jeff.news/article/4792
---
# 유니클로 티셔츠 뒤에 찍힌 난독화 Bash 스크립트를 까봤더니

유니클로와 Akamai가 만든 티셔츠 뒷면에 실제 Bash 스크립트가 인쇄돼 있었고, 글쓴이는 이를 OCR로 옮겨 Base64 디코딩까지 해봤다. 결과물은 악성 코드가 아니라 `PEACE FOR ALL` 문구를 터미널에서 물결처럼 출력하는 이스터에그였다. 단순 굿즈처럼 보이지만, `eval`, Base64, Linux 문화, 폰트 디테일까지 개발자 감성을 제대로 건드리는 이야기다.

## 티셔츠 뒤에 진짜 Bash가 박혀 있었음

- 글쓴이가 유니클로 매장에서 본 Akamai 협업 티셔츠 뒷면에는 그냥 장식용 코드처럼 보이는 알파벳 블록이 인쇄돼 있었음
  - 자세히 보니 첫 줄이 `shebang`처럼 시작했고, 구조도 Bash 스크립트에 가까웠음
  - 더 들여다보니 Base64로 인코딩된 문자열을 `base64 --decode`로 풀고 `eval`에 넘기는 형태였음
  - 개발자 입장에선 바로 “이거 바이러스 배포할 때 보던 패턴인데?” 싶은 조합이라 웃기면서도 찝찝한 포인트가 있음

- 다행히 이 코드는 악성 코드가 아니라 티셔츠 안에 숨겨둔 이스터에그였음
  - 유니클로와 Akamai가 `Peace for All` 캠페인용으로 만든 디자인이고, 앞면에는 중괄호 안에 하트가 들어간 심플한 그래픽이 있음
  - 뒷면의 난독화된 코드 블록은 캠페인 메시지를 터미널 애니메이션으로 출력하는 장난에 가까움

> [!NOTE]
> Base64 자체는 암호화가 아니라 인코딩임. 문제는 그걸 `eval`로 바로 실행하는 구조라서, 개발자 눈에는 선의의 이스터에그라도 일단 경고등이 켜짐.

## OCR로 한 글자씩 복원한 과정이 진짜 고생길

- Base64 문자열은 한 글자라도 틀리면 디코딩이 깨질 수 있어서, 티셔츠 사진에서 코드를 옮기는 작업이 꽤 빡셌음
  - Base64에는 오류 정정 기능이 없어서 OCR 결과를 거의 완벽하게 맞춰야 했음
  - 다행히 문자열 끝의 패딩, 따옴표, 중괄호 구조는 맞아 보여서 전체가 잘린 코드는 아닌 것으로 보였음

- 글쓴이는 여러 OCR 결과를 비교해서 최종 문자열을 복원했음
  - 안드로이드의 Circle to Search 내장 OCR을 먼저 사용함
  - Tesseract도 옵션을 바꿔가며 돌려봄
  - Claude에도 이미지를 넣고 결과를 받아본 뒤, 세 결과의 차이를 비교해서 오타 후보를 좁힘
  - Claude가 위치별 차이 표까지 뽑아줘서 사람이 눈으로 검수하기 쉬워졌다고 함

- 같은 유니클로 x Akamai 라인업의 다른 티셔츠는 코드가 잘린 상태였다고 함
  - 예를 들어 Go 코드처럼 보이는 디자인은 import가 끊겨 있고, 마지막도 `return`이 아니라 `retu`에서 끝남
  - 즉 이번 Bash 티셔츠는 운 좋게도 실제로 끝까지 복원 가능한 케이스였던 셈

## 디코딩해보니 꽤 정성 들어간 터미널 애니메이션

- Base64를 풀면 주석까지 잘 달린 Bash 스크립트가 나옴
  - 첫 주석은 “Congratulations! You found the easter egg!”라고 축하 메시지를 띄움
  - 일본어로도 숨겨진 서프라이즈를 찾았다는 메시지가 들어 있음
  - 출력할 텍스트는 `♥PEACE♥FOR♥ALL♥` 패턴을 반복하는 문자열임

- 스크립트는 터미널 크기를 읽고, 커서를 숨긴 뒤, 무한 루프로 문자를 하나씩 찍음
  - `tput cols`, `tput lines`로 현재 터미널의 열과 줄 수를 가져옴
  - `tput civis`로 커서를 숨기고, `CTRL+C`가 들어오면 `tput cnorm`으로 커서를 다시 보이게 만드는 trap도 있음
  - 이런 디테일이 없으면 실행 후 터미널 커서가 사라진 채로 남을 수 있어서, 의외로 기본기는 챙긴 코드임

- 움직임은 사인파 계산으로 만듦
  - 루프 카운터 `t`에 `freq=0.2`를 곱해서 각도를 만들고, `bc -l`로 사인값을 계산함
  - x좌표는 터미널 중앙을 기준으로 좌우 4분의 1 폭만큼 흔들리게 잡음
  - 결과적으로 `PEACE FOR ALL` 글자가 화면을 아래로 내려가면서 물결치는 느낌으로 출력됨

- 색상도 그냥 랜덤이 아니라 256색 팔레트에서 시안과 오렌지 사이를 오가게 구현함
  - 시작 색상은 12번, 끝 색상은 208번으로 잡음
  - ANSI escape code `\033[38;5;...m`를 써서 문자별 색을 바꿈
  - 굿즈에 넣은 장난치고는 터미널 연출까지 꽤 신경 쓴 편임

> [!IMPORTANT]
> 최종 결과물은 해킹 코드가 아니라 `PEACE FOR ALL`을 터미널에 사인파 애니메이션으로 뿌리는 Bash 이스터에그임. 다만 “Base64를 풀어서 eval로 실행”이라는 구조는 실제 환경에선 절대 가볍게 넘기면 안 되는 패턴임.

## 폰트와 마케팅 문구까지 개발자 취향 저격

- 글쓴이는 티셔츠에 쓰인 폰트가 Microsoft의 Consolas에 가깝다고 봄
  - 얕게 사선 처리된 0, serif가 없는 1, `B`, `D`, `y`, `g`, 숫자 2의 둥근 곡선 같은 특징을 근거로 들었음
  - Consolas는 Windows 쪽 이미지가 강한 폰트라, Bash 코드와 같이 쓰인 게 묘하게 아이러니하다고 짚음

- Akamai의 공식 설명은 꽤 마케팅스럽지만, 기술 문화 레퍼런스는 분명함
  - Akamai는 25년 넘게 인터넷 인프라에 관여해온 회사를 자처함
  - 티셔츠의 밝은 베이지색은 초기 인터넷 컴퓨터의 플라스틱 케이스, 이른바 `beige box`를 떠올리게 하는 색이라고 설명함
  - 앞면의 하트는 인터넷이 세상에 좋은 방식으로 쓰였다는 의미라고 함
  - 뒷면의 실제 코드는 Linux와 오픈소스 문화를 가리키는 장치라고 소개함

- “Linux, the open-source language of the internet”라는 표현은 기술적으로는 좀 이상하지만, 굿즈 문구로는 의도는 알겠는 느낌임
  - Linux는 언어가 아니라 운영체제 커널이고, Bash도 별개의 셸임
  - 그래도 Akamai가 말하려던 건 인터넷 인프라와 오픈소스 생태계가 공유하는 공통 언어 같은 감각에 가까워 보임

---

## 기술 맥락

- 이 코드에서 제일 눈에 띄는 선택은 Base64로 스크립트를 숨긴 뒤 `eval`로 실행하는 방식이에요. 왜냐면 이 조합은 짧은 한 줄 안에 긴 스크립트를 넣기 좋지만, 동시에 악성 코드가 페이로드를 숨길 때도 자주 쓰는 패턴이거든요.

- OCR 복원이 까다로웠던 이유는 Base64가 오류 정정용 포맷이 아니기 때문이에요. 한 글자만 틀려도 디코딩 결과가 깨질 수 있고, 특히 티셔츠처럼 인쇄물에서 문자를 추출할 때는 `0`, `O`, `l`, `1` 같은 글자가 쉽게 섞여요.

- 터미널 애니메이션은 생각보다 고전적인 유닉스 도구 조합으로 만들어져요. `tput`은 터미널 크기와 커서 위치를 다루고, `bc -l`은 Bash 자체가 못 하는 부동소수점 사인 계산을 대신해줘요. Bash만으로 억지로 다 하려 하지 않고 작은 도구를 엮은 셈이에요.

- 보안 관점에서 배울 점도 있어요. 출처를 모르는 Base64 문자열을 디코딩해서 바로 실행하면 안 되고, 최소한 디코딩 결과를 먼저 파일이나 화면으로 확인해야 해요. 이 티셔츠는 귀여운 이스터에그였지만, 같은 구조가 실제 공격 코드에도 그대로 쓰일 수 있거든요.

## 핵심 포인트

- 티셔츠 뒷면의 알파벳 블록은 실제로 실행 가능한 Bash 스크립트였음
- Base64로 인코딩된 문자열을 `base64 --decode`로 풀고 `eval`로 실행하는 구조였음
- 디코딩 결과는 `PEACE FOR ALL` 문구를 터미널에 애니메이션으로 출력하는 이스터에그였음
- 스크립트는 `tput`, `bc`, 256색 ANSI escape code를 써서 사인파 형태의 움직임과 색상 그라데이션을 구현했음
- Akamai는 이 디자인을 초기 인터넷, Linux, 오픈소스 문화에 대한 콜백으로 설명했음

## 인사이트

이건 보안 사고 뉴스라기보다 ‘개발자만 알아보는 굿즈’를 끝까지 파헤친 기록에 가깝다. 그래도 Base64+`eval` 조합을 보고 바로 경계심이 켜지는 감각, 그리고 그걸 굳이 OCR로 복원해 실행해보는 집요함이 HN 감성 그 자체다.
