본문으로 건너뛰기
피드

유니클로 티셔츠 뒤에 찍힌 난독화 Bash 스크립트를 까봤더니

general 약 8분
vote
0
댓글
북마크

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

  • 1

    티셔츠 뒷면의 알파벳 블록은 실제로 실행 가능한 Bash 스크립트였음

  • 2

    Base64로 인코딩된 문자열을 `base64 --decode`로 풀고 `eval`로 실행하는 구조였음

  • 3

    디코딩 결과는 `PEACE FOR ALL` 문구를 터미널에 애니메이션으로 출력하는 이스터에그였음

  • 4

    스크립트는 `tput`, `bc`, 256색 ANSI escape code를 써서 사인파 형태의 움직임과 색상 그라데이션을 구현했음

  • 5

    Akamai는 이 디자인을 초기 인터넷, Linux, 오픈소스 문화에 대한 콜백으로 설명했음

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

  • 글쓴이가 유니클로 매장에서 본 Akamai 협업 티셔츠 뒷면에는 그냥 장식용 코드처럼 보이는 알파벳 블록이 인쇄돼 있었음

    • 자세히 보니 첫 줄이 shebang처럼 시작했고, 구조도 Bash 스크립트에 가까웠음
    • 더 들여다보니 Base64로 인코딩된 문자열을 base64 --decode로 풀고 eval에 넘기는 형태였음
    • 개발자 입장에선 바로 “이거 바이러스 배포할 때 보던 패턴인데?” 싶은 조합이라 웃기면서도 찝찝한 포인트가 있음
  • 다행히 이 코드는 악성 코드가 아니라 티셔츠 안에 숨겨둔 이스터에그였음

    • 유니클로와 Akamai가 Peace for All 캠페인용으로 만든 디자인이고, 앞면에는 중괄호 안에 하트가 들어간 심플한 그래픽이 있음
    • 뒷면의 난독화된 코드 블록은 캠페인 메시지를 터미널 애니메이션으로 출력하는 장난에 가까움

ℹ️참고

> 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도 있음
    • 이런 디테일이 없으면 실행 후 터미널 커서가 사라진 채로 남을 수 있어서, 의외로 기본기는 챙긴 코드임
  • 움직임은 사인파 계산으로 만듦

    • 루프 카운터 tfreq=0.2를 곱해서 각도를 만들고, bc -l로 사인값을 계산함
    • x좌표는 터미널 중앙을 기준으로 좌우 4분의 1 폭만큼 흔들리게 잡음
    • 결과적으로 PEACE FOR ALL 글자가 화면을 아래로 내려가면서 물결치는 느낌으로 출력됨
  • 색상도 그냥 랜덤이 아니라 256색 팔레트에서 시안과 오렌지 사이를 오가게 구현함

    • 시작 색상은 12번, 끝 색상은 208번으로 잡음
    • ANSI escape code \033[38;5;...m를 써서 문자별 색을 바꿈
    • 굿즈에 넣은 장난치고는 터미널 연출까지 꽤 신경 쓴 편임

중요

> 최종 결과물은 해킹 코드가 아니라 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 문자열을 디코딩해서 바로 실행하면 안 되고, 최소한 디코딩 결과를 먼저 파일이나 화면으로 확인해야 해요. 이 티셔츠는 귀여운 이스터에그였지만, 같은 구조가 실제 공격 코드에도 그대로 쓰일 수 있거든요.

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

댓글

댓글

댓글을 불러오는 중...

general

한국 디지털산업 매출 1378조 원, AI·클라우드가 성장세 끌었다

2024년 한국 디지털산업 매출이 1378조 원으로 전년보다 9.3% 증가했다. 클라우드 컴퓨팅과 인공지능 도입이 빠르게 늘었고, 플랫폼 활용 업체들은 복수 플랫폼 입점 비용 부담을 주요 어려움으로 꼽았다.

general

5070 취업박람회에도 AI 이력서·AI 면접이 들어왔다

경기도 5070 일자리박람회에 3911명의 중장년 구직자가 몰렸고, AI 이력서 사진·자기소개서 점검·AI 면접 같은 서비스가 현장에서 주목받았다. 반도체 협력업체와 물류 기업의 중장년 채용도 관심을 끌면서, AI 활용 능력이 재취업 경쟁력으로 들어오는 분위기가 뚜렷해졌다.

general

마이크로소프트 구조조정, id 소프트웨어의 id테크 팀까지 덮쳤다는 보도

마이크로소프트의 대규모 엑스박스 구조조정 여파로 id 소프트웨어의 id테크 엔진 개발자 상당수가 해고됐다는 보도가 나왔다. id테크는 1인칭 슈터 장르와 여러 게임 엔진 계보에 큰 영향을 준 기술이라, 단순 인력 감축 이상의 상징성이 있다. 다만 기사 본문은 트윗과 링크드인 게시물을 근거로 전하며, 구체적인 해고 인원과 향후 엔진 로드맵은 확인되지 않았다.

general

메가존클라우드, 파스칼과 손잡고 국내 양자컴퓨팅 도입 확대 나선다

메가존클라우드가 중성원자 양자컴퓨팅 기업 파스칼과 전략적 업무협약을 맺었다. 파스칼의 QPU와 소프트웨어 개발 도구를 메가존클라우드의 WAVE 환경에 통합하고, 금융·물류·바이오·제조 분야 활용 사례와 온프레미스 양자컴퓨터 구축까지 함께 추진한다.

general

집에서 내 유전체를 시퀀싱해본 개발자의 엔드투엔드 기록

저자는 옥스퍼드 나노포어 미니언 장비로 자신의 유전체를 5번 시퀀싱하며, 볼 안쪽 세포 채취부터 라이브러리 준비, 시퀀싱, 정렬, 변이 호출, 주석 달기까지 전체 과정을 정리했다. 비용과 난이도는 아직 일반인에게 높지만, 유전체 데이터를 질의 가능한 데이터로 바꾸는 흐름은 점점 개인화된 생체 데이터 분석으로 이어질 수 있다는 관점이 담겨 있다.