본문으로 건너뛰기
피드

헥스 에디터는 바이트에 색을 입혀야 한다 — 신택스 하이라이팅이 코드에 필수이듯

general 약 6분
vote
0
댓글
북마크

단색 헥스덤프에서는 패턴이 보이지 않는다. 바이트 상위 니블마다 다른 색을 입히면 파일 포맷의 구조, 압축 데이터의 특성, 심지어 4비트 비트맵의 이미지 윤곽까지 육안으로 파악할 수 있다. 글쓴이는 18개 색상 그룹을 제안하며, 직접 Rust로 hexapoda라는 헥스 에디터도 만드는 중이다.

  • 1

    단색 헥스덤프는 인간의 시각 패턴 인식 능력을 낭비하는 UI다

  • 2

    Fossil Fighters 파일 포맷 분석 예시 4가지로 색상의 효과를 입증 — 인덱스 테이블, 허프만 트리와 비트스트림 경계, 4비트 컬러 비트맵 등

  • 3

    기존 hexyl의 5개 카테고리보다 상위 니블 기반 18개 그룹이 더 세밀한 패턴을 드러냄

  • 4

    압축된 데이터가 시각적으로 랜덤처럼 보이는 것은 압축 품질의 증거

  • 5

    hexyl, Hexerator, REHex, Hex Fiend 등 기존 도구 외에 글쓴이가 Rust+Ratatui로 hexapoda 제작 중

  • 헥스 에디터가 바이트를 단색으로만 보여주는 건 인간 뇌의 패턴 인식 능력을 낭비하는 짓임 — 코드에 신택스 하이라이팅이 필수듯 헥스덤프에도 색상이 필요함
    • 글쓴이(alice pellerin)는 바이트 하나하나에 색을 입히면 파일 구조가 눈에 뚜렷이 들어온다는 주장
    • 단색 헥스덤프에서 특정 바이트(예: 단 하나뿐인 C0)를 찾으라고 하면 눈알 빠짐. 색상 입히면 5초 컷

색이 있고 없고의 차이 — 네 가지 실제 예시

  • 예시 1 · KPS 파일 (Fossil Fighters 닌텐도 DS 게임 데이터)

    • 매직 바이트 KPS 뒤로 0~999(0x3E7) 범위의 리틀엔디안 32비트 정수가 연달아 있음
    • 색을 입히면 상위 두 바이트가 전부 00 00이라는 게 한눈에 보임 → 작은 정수들이라는 사실을 즉시 파악
    • 0x18 간격으로 숫자가 증가하는 패턴도 바로 감지됨
  • 예시 2 · DAL 파일 — 인덱스 테이블이 들어있는 포맷

    • 32비트 정수가 점점 커지는 시퀀스(파일 후반부 구조체를 가리키는 인덱스)
    • 거의 등간격으로 증가하는 값들이 레인보우 그라디언트로 시각화됨. 그림 보듯이 구조 파악 가능
  • 예시 3 · 허프만 압축 데이터 (NDS BIOS 호환)

    • 앞쪽 0x20 바이트는 허프만 트리 (대부분 00~0F, 일부 80대/C0대)
    • 뒤쪽 0x90 바이트는 압축된 비트스트림 (00~FF 전 범위에 고르게 분포)
    • 색상으로 보면 "트리 영역"과 "압축 데이터 영역"의 경계가 명확히 갈림
    • 압축 데이터가 유난히 "화려하고 카오스"한 이유 → 좋은 압축 알고리즘의 출력은 시각적으로 랜덤처럼 보인다는 사실을 체감
  • 예시 4 · 4비트 컬러 인덱스 비트맵 (Fossil Fighters에서 땅 파는 구멍 이미지)

    • 헥스 숫자 한 자리 = 픽셀 하나에 해당
    • 색을 입히면 헥스덤프 자체에서 이미지 윤곽이 보임. 오른쪽 아래 하이라이트까지 잡힘

중요

> 압축된 데이터가 색으로 보면 "거의 무작위"처럼 보이는 건 압축 품질의 시각적 증거임. 알고리즘이 패턴을 다 뽑아먹었다는 뜻

색상 그룹은 몇 개가 적당한가

  • 기존 도구들(hexyl 등)은 보통 5개 카테고리로 분류

    • NULL(0x00), ASCII 출력 가능, ASCII 공백, ASCII 제어문자, 비-ASCII(0x80~0xFF)
    • 스크롤 시 방향감각 유지엔 충분하지만, 세밀한 패턴은 안 보임
  • 글쓴이는 18개 그룹으로 확장 — 상위 니블(0X, 1X, 2X...)마다 하나씩 + 00/FF 전용 2개

    • ASCII 텍스트가 단일 시안색이 아니라 "초록+주황의 얼룩무늬"로 보임
    • UTF-8 비-ASCII는 단일 회색 대신 고유 패턴으로 식별 가능
    • 2의 보수 음수(BD FF FF FF), 머신 코드, 암호화 데이터, 컬러 팔레트, 변환 행렬까지 각자 시그니처가 생김

지금 쓸 수 있는 도구들

  • 헥스 뷰어

    • hexyl — 기본은 카테고리, 그라디언트 옵션 있음
    • xcd-rgb — 풀 레인보우 바이트 컬러링
    • hevi — 특정 파일 포맷의 섹션을 색으로 표시
    • xxd — 카테고리 색상 옵션 있음 (기본은 꺼짐)
  • 헥스 에디터

    • Hexerator — 풀 레인보우 + 기능 풍부
    • REHex — 여러 색상 옵션 (커스텀 포함), 기본 꺼짐
    • Hex Fiend — 카테고리 옵션 있음, 커스텀 색상도 손대면 가능
  • 글쓴이가 직접 만드는 중인 hexapoda — Rust + Ratatui 기반

    • Helix/Teehee 영향 받은 모달 에디팅, 멀티 커서, selection-first 조작
    • 아직 개인용이지만 관심 있으면 공개 가능성 있음

💡

> 헥스 에디터를 직접 개발하거나 기여하고 있다면 색상 그룹 늘리는 feature request는 비용 대비 효과가 압도적임. 최소한 00 바이트를 흐리게라도 처리하면 가독성이 확 올라감

리버스 엔지니어링, 게임 포맷 분석, 임베디드 펌웨어 디버깅 하는 사람이라면 즉시 체감할 만한 글이다. 바이트를 색으로 본다는 발상 자체가 '코드에 신택스 하이라이팅이 없던 시절'을 떠올리게 한다.

댓글

댓글

댓글을 불러오는 중...

general

삼성, 여권 비율 갤럭시 Z 폴드8과 AI 스마트 글래스를 런던서 공개

삼성이 런던 언팩에서 갤럭시 Z 폴드8, Z 플립8, Z 폴드8 울트라, 워치9, 워치 울트라2, 구글과 공동 개발한 스마트 글래스를 공개했음. 폴드8은 201g으로 역대 폴드 중 가장 가볍고, 스마트 글래스는 카메라 기반 AI 기능을 앞세워 메타 중심의 시장에 도전장을 낸 모양새임.

general

Late.sh, 터미널에서 들어가는 개발자용 클럽하우스

Late.sh는 SSH로 접속하는 터미널 기반 커뮤니티 공간이고, 선택형 CLI 바이너리를 설치하면 음성방, 라디오, 이미지 붙여넣기 같은 기능까지 붙는다. 개발자들이 누가 접속해 있는지, 뭘 만드는지, 일감에 열려 있는지도 TUI 안에서 프로필로 공유할 수 있게 만든 실험에 가깝다.

general

“직원은 AI로 대체한다면서 CEO는 왜 예외임?”을 찌르는 풍자 사이트

OverpAId는 실제 제품이 아니라, AI 자동화와 임원 보상 논리를 비꼬는 풍자 사이트다. 글은 기업들이 지원 업무, 공급망, 코드 작성은 AI가 대체할 수 있다고 말하면서 정작 추상적 의사결정과 발표를 맡는 경영진은 자동화 논의에서 빠지는 모순을 찌른다. 마지막에는 AI가 결정을 내렸을 때 책임 소재가 사라지는 문제도 같이 던진다.

general

코드를 2차원으로 쓰면 뭐가 달라질까

이 글은 프로그래밍 언어가 꼭 왼쪽에서 오른쪽으로만 흘러야 하냐는 질문에서 출발해, 2차원 공간을 쓰는 식 표현과 연산자 정의를 실험한다. 닭장 자동문 예시, 양자컴퓨팅의 보조 비트 초기화, 3비트 덧셈기까지 이어지면서 공간적 문법이 사고방식을 어떻게 바꿀 수 있는지 보여준다.

general

내가 안 짠 코드를 리뷰할 때 진짜 봐야 하는 것들

코드 리뷰는 단순히 diff에 코멘트 다는 일이 아니라, 변경의 의도와 시스템 맥락을 복원하는 별도 기술이라는 글이다. 특히 AI가 빠르게 PR을 쌓아 올리는 상황에서는 핵심 경로, 실패 케이스, 보안, 테스트 증거를 먼저 보고 리뷰 우선순위를 명확히 해야 한다고 말한다.