
인코딩. 디코딩. 식별. 모든 데이터를 위한 스마트 디코딩.
인코딩. 디코딩. 식별. 모든 데이터를 위한 스마트 디코딩.
사전 릴리스이며, 이미 사용 가능합니다. 워크벤치가 작동하고, 탐지 엔진이 계층화된 페이로드를 풀어내며, 분석 보고서도 완성되었습니다.
남은 작업: 접근성 감사와 국제화(i18n) 작업입니다. 디스어셈블러와 OCR 엔진은 의도적으로 범위에서 제외했습니다 — 이들은 연산이 아니라 그 자체로 별개의 프로젝트입니다.
이런 도구의 통상적인 모델은 사용자가 이미 자신의 데이터가 무엇인지 안다고 가정합니다. 연산을 고르고, 연결하고, 반복합니다. 형식을 한눈에 알아볼 때는 괜찮지만, 그렇지 않을 때는 쓸모가 없습니다 — 분석가가 새로운 무언가를 들여다볼 때는 대부분 그렇습니다.
DecodeBox는 반대쪽 끝에서 시작합니다. 붙여넣기만 하면 무엇을 들고 있는지 파악합니다. 모든 계층을 풀어내고, 모든 지표를 추출하고, 모든 보안 발견 사항을 설명하며, 각 주장에 대한 근거를 단언이 아니라 눈에 보이게 제시합니다.
모든 것은 브라우저에서 실행됩니다. 어떤 입력, 레시피, 파일도 사용자의 기기를 떠나지 않습니다 — 보낼 서버가 없기 때문입니다.
테스트 스위트에서 가져온 실제 페이로드: JSON 위에 gzip, 그 위에 Base64, 또 그 위에 Base64가 겹쳐 있고, 한 필드에는 PowerShell 로더가 들어 있습니다.
Findings 4 Indicators 7 Layers 8 257 ms
CRITICAL Cloud or service credential CWE-798
Input → Base64 → Base64 → gzip
AKIAIOSFODNN7EXAMPLE
CRITICAL PowerShell download-and-execute CWE-94
Input → Base64 → Base64 → gzip → JSON → Base64 → UTF-16LE
IEX (New-Object Net.WebClient).DownloadString
두 번째 발견은 여섯 계층 아래에 있으며, 마지막 홉은 하나의 JSON 필드 안에 있는 Base64 블롭에서 나왔습니다. 원본 블롭을 grep하는 어떤 것도 이를 보지 못하며, 단일 선형 체인을 풀어내는 어떤 것도 여기에 도달하지 못합니다.
Base64 → Base64 → MD5)에서, JWT 서명처럼 디코딩할 수 없는 나머지에서, 또는 한계에 도달했으며 그 아래에 더 있을 수 있다는 정직한 인정에서 끝납니다.선언된 어떤 것도 입력을 설명하지 못할 때, DecodeBox는 모든 단일 바이트 XOR 키와 모든 회전을 시도하고 각 결과를 가독성에 대해 점수화합니다 — 이는 일치가 아닌 탐색이었음을 분명히 밝히는 신뢰도 수준에서 이루어집니다.
DecodeBox는 설계상 신뢰할 수 없는, 의도적으로 악의적으로 변형된 입력을 처리합니다.
connect-src 'none'과 script-src 'self' 및 하나의 인라인 스크립트에 대한 해시를 포함한 콘텐츠 보안 정책을 제공합니다. 폰트는 가져오는 대신 번들로 포함되며, 출력물에 CDN 참조가 나타나면 빌드가 실패합니다.eval, new Function, 그리고 입력을 HTML로 렌더링하는 모든 경로는 관례가 아닌 린트 규칙에 의해 금지됩니다.style-src는 'unsafe-inline'을 허용하는데, 이는 React가 인라인 style 속성을 작성하기 때문입니다; 실제 위험이 존재하는 script-src는 엄격하게 유지됩니다. 취약점을 보고하려면 SECURITY.md를 참조하십시오 — 보안 보고를 위해 공개 이슈를 열지 마십시오.
DecodeBox/
├── .github/workflows/ # CI, CodeQL, SBOM, markdown quality, Pages deployment
├── public/ # Bundled fonts, favicon, CNAME
├── src/
│ ├── engine/ # The analysis engine — the only half that knows about data
│ │ ├── index.ts # THE SEAM — the only module the interface imports from
│ │ ├── operations/ # One self-contained module per transformation
│ │ ├── detection/ # Entropy, charset, magic bytes, structural validity
│ │ ├── analysis/ # Recursive exploration, indicators, security findings
│ │ ├── ctf/ # Flag search, cipher key recovery, ranked hints
│ │ ├── core/ # Recipe executor, byte handling, ciphers, codecs
│ │ └── worker/ # The engine off the main thread, past a size threshold
│ ├── components/ # The interface: workspace, report, CTF mode
│ ├── store/ # One zustand store
│ ├── hooks/ # Interaction logic shared across components
│ ├── lib/ # Share links, saved recipes, recipe text format
│ ├── i18n/ # Every user-facing string
│ └── styles/ # Design tokens and themes
├── SECURITY.md
└── LICENSE
인터페이스는 일곱 개의 함수를 노출하는 하나의 좁은 파사드를 통해 엔진에 도달합니다 —
listOperations, bake, detect, autoDecode, identify, analyse, hints. 두 부분 모두
독립적으로 개발, 테스트, 교체될 수 있습니다. 워크스페이스는 한때 엔진을 한 줄도 바꾸지 않고
처음부터 다시 구축된 적이 있습니다. 연산을 추가할 때 UI를 건드릴 필요가 없어야 합니다.
Node.js 22.12 이상이 필요합니다. CI는 22와 24에서 빌드하며, .nvmrc는 개발용으로 22를 고정합니다.
npm install
npm run dev # development server
npm run test # 1,109 tests
npm run build # static site in dist/
빌드 출력은 완전히 정적입니다 — 런타임도, 서버도, 환경 변수도 없습니다. 어떤 정적 호스팅 서비스든 이를 제공할 수 있습니다.
실행 중인 애플리케이션의 헤더에 Download DecodeBox 버튼이 있습니다. 이 버튼을 누르면
decodebox.html을 받을 수 있습니다: 인터페이스, 504개의 모든 연산, 폰트, 스타일이 모두 담긴
1.2 MB 크기의 단일 파일입니다. 더블클릭하면 실행됩니다. 서버도, npm도, 네트워크도, 설치할 것도
없으며, 이는 빌드 툴체인을 들여오는 것이 파일 하나를 들여오는 것보다 어려운 에어갭 머신에서
바로 그 핵심입니다.
npm run build는 사이트와 함께 이 파일을 생성하므로, 어떤 배포든 이를 제공합니다:
dist/index.html the site
dist/decodebox.html the same build, in one file
단일 파일이어야 하며 폴더가 아니어야 합니다. 브라우저는 file:// URL에서 ES 모듈 로드를 거부합니다. 오리진이 불투명(opaque)하기 때문에 요청이 CORS 검사를 통과하지 못하며, 이는 디스크에서 열린 일반적인 dist/ 폴더가 빈 화면으로 표시된다는 것을 의미합니다. 모든 것이 인라인화되면 실패할 요청이 남지 않습니다. 유일하게 포기하는 것은 Web Worker인데, 이는 정의상 두 번째 파일이 필요하므로, 독립 실행형 빌드는 매우 큰 입력에 대해 메인 스레드에 머무르며 그 외에는 동일합니다.
사이트가 라이브 상태이므로, 지금 가장 가치 있는 일은 사이트를 사용하고 깨뜨리려고 시도하는 것입니다. 기여를 환영하며, 특히 다음 영역에서 환영합니다:
OWASP 기여 가이드라인부터 시작하세요. 모든 참가자는 OWASP 행동 강령을 준수해야 합니다.
Apache License 2.0에 따라 라이선스가 부여됩니다. OWASP Foundation Incubator 프로젝트로, Tool로 분류됩니다.