HTML이나 SVG 첨부 파일에서 숨겨진 페이로드, atob/eval 체인, 외부 전송 양식을 찾습니다.
다중 계층 디코더
도구 자체는 영어로 되어 있지만, 이 페이지에서는 귀하의 언어로 설명해 드립니다.
다중 계층 디코더을(를) 사용하세요
기능
인코딩되거나 난독화된 텍스트를 붙여 넣으면 디코더가 각 단계를 보여 주면서 읽을 수 있는 텍스트나 알려진 파일 형식이 남을 때까지 계층을 하나씩 벗깁니다. 모든 처리는 브라우저에서 이루어집니다.
이 서비스는 전적으로 브라우저에서 실행되며, 사용자가 입력한 내용은 전혀 업로드되지 않습니다.
다중 계층 디코더 사용 방법
- 인코딩된 텍스트 붙여 넣기. 스크립트에서 나온 Base64 덩어리, 긴 16진수 문자열, 퍼센트 인코딩된 텍스트 또는 String.fromCharCode 목록을 Encoded text에 붙여 넣습니다.
- 디코딩. Decode layers 또는 Ctrl+Enter를 누릅니다. 인식된 계층을 최대 12개까지 차례로 벗깁니다.
- 계층 순서 읽기. 맨 위 줄에 계층이 순서대로 나열됩니다. 각 단계에는 방법, 전후 크기, 미리 보기가 표시됩니다.
- 결과 활용. 디코딩된 텍스트를 복사하거나 Indicators in the result를 읽거나, Send to로 HTML Attachment Analyzer, Link Unwrapper, IOC Converter, URL Defanger에 넘깁니다.
- 직접 단계 진행. 계층을 놓쳤다면 Decode as에서 방법을 골라 적용합니다. Undo last layer는 한 단계 되돌립니다.
예시
gzip을 Base64로 인코딩한 뒤 URL 인코딩한 문자열
H4sIAAAAAAACA7MpTi7KLCixK8%2FMS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA3 layers: URL percent-encoding → Base64 → gzip
No further encoding recognised.
1
URL percent-encoding
1 escape · 130 → 128 bytes
H4sIAAAAAAACA7MpTi7KLCixK8/MS8kv18vJT04syczP08soSk1TsFVQyigpKSi20tdPrUjMLchJ1UvOz9UvSy3KTKu0L04tLgYqtTVPM05UsrbRh5oEACvqcc1SAAAA
2
Base64
decodes to gzip · 128 → 96 bytes
00000000 1f 8b 08 00 00 00 00 00 02 03 b3 29 4e 2e ca 2c |...........)N..,|
00000010 28 b1 2b cf cc 4b c9 2f d7 cb c9 4f 4e 2c c9 cc |(.+..K./...ON,..|
00000020 cf d3 cb 28 4a 4d 53 b0 55 50 ca 28 29 29 28 b6 |...(JMS.UP.())(.|
… 48 more bytes
3
gzip
96 → 82 bytes
<script>window.location.href = "hxxps://example[.]com/verify?session=7f3a";</script>
Result
Text, 82 bytes.
<script>window.location.href = "hxxps://example[.]com/verify?session=7f3a";</script>
Indicators in the result (1)
URL
hxxps://example[.]com/verify?session=7f3a
Copy indicators (raw)세 계층입니다. URL 퍼센트 인코딩(%2F), gzip 데이터로 디코딩되는 Base64, 그리고 gzip 자체이며, 마지막에는 브라우저를 https://example.com/verify로 보내는 스크립트가 남습니다.
검증 대상
| 신호 | 그 의미는 무엇인가 |
|---|---|
| 계층 순서 | 인코딩이 순서대로 나열됩니다. 예: Hex → Base64. 짧은 URL이나 명령을 여러 계층이 감싸고 있다면 대개 누군가 그것을 숨기려 했다는 뜻입니다. |
| 단계별 크기 | 각 계층의 입력과 출력 바이트 수입니다. gzip이나 deflate 계층에서 크기가 크게 늘어나는 것은 일반적인 압축 해제입니다. |
| UTF-16LE 텍스트 | 문자당 2바이트로, PowerShell -EncodedCommand에서 전형적입니다. 디코딩된 명령이 무언가를 다운로드하거나 실행한다면 위험 신호입니다. |
| 바이너리 결과 | 최종 결과가 텍스트가 아니면 처음 512바이트의 16진수 덤프와 감지된 형식이 표시됩니다. 16진수나 Base64로 복사하되 절대 실행하지 마세요. |
| Indicators in the result | 디코딩된 텍스트에서 찾은 URL, 이메일 주소, IPv4 주소가 디팽되어 표시되며, 원본 그대로 복사하는 버튼이 있습니다. |
| 중지 메시지 | 더 이상 인식되는 인코딩이 없거나, 12개 계층 한도에 이르렀거나, 다음 단계가 이전 결과를 반복하는 경우입니다. 한도에 이르렀다면 계층이 더 있을 수 있습니다. |
| 디팽 옵션 | 기본으로 켜져 있어 결과 속 URL과 이메일 주소가 디팽되어 표시됩니다. Copy는 항상 원본 텍스트를 복사합니다. |
| 계속 벗기기 옵션 | Decode as로 직접 한 단계를 진행한 뒤에도, 선택을 해제하지 않는 한 디코딩이 자동으로 계속됩니다. |
| Decode as 목록 | 자동 처리가 건너뛴 단계를 위한 Base64, URL-safe Base64, 16진수, URL 퍼센트 인코딩, HTML 엔티티, 이스케이프, 문자 코드, quoted-printable, gzip, zlib, raw deflate, UTF-16LE입니다. |
| 복사 버튼 | Copy는 디코딩된 텍스트를 원본 그대로 복사합니다. 바이너리 결과에는 대신 Copy as hex와 Copy as Base64가 제공됩니다. |
더 많은 예시
RFC 4648 테스트 벡터
Zm9vYmFy1개 계층: Base64, 8 → 6바이트. 결과는 RFC 4648에 공개된 값인 텍스트 foobar입니다.
URL을 감싼 Base64를 다시 감싼 16진수
6148523063484d364c793973623264706269356c654746746347786c4c6d356c644339795a584e6c64413d3d2개 계층: Hex → Base64(88 → 44 → 31바이트). 결과는 https://login.example.net/reset이며, 디팽되어 표시되고 Indicators in the result에 나열됩니다.
PowerShell 인코딩 명령
UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgACcAaAB0AHQAcABzADoALwAvAGUAeABhAG0AcABsAGUALgBvAHIAZwAvAHUAcABkAGEAdABlACcA2개 계층: Base64 → UTF-16LE 텍스트이며, PowerShell -EncodedCommand에서 전형적이라는 안내가 붙습니다. 결과는 Start-Process 'https://example.org/update'이고, URL이 지표로 나열됩니다.
자주 묻는 질문
어떤 인코딩을 인식하나요?
Base64(표준 및 URL-safe, 패딩 선택), 일반·0x·\x·공백 구분·콜론 구분 형태의 16진수, URL 퍼센트 인코딩, HTML 엔티티, \x·\u·\u{…}·%u 이스케이프, String.fromCharCode 목록, quoted-printable, gzip, zlib, raw deflate, 그리고 PowerShell -EncodedCommand 같은 UTF-16LE 텍스트입니다. atob('…')나 base64_decode('…') 같은 호출과 data: URI도 풀어냅니다.
디코딩이 멈추거나 텍스트가 그대로 남는 이유는 무엇인가요?
출력이 읽을 수 있는 텍스트, 알려진 파일 형식, 또는 깔끔하게 압축이 풀리는 스트림일 때만 계층으로 인정하므로, 우연히 유효한 Base64인 일반 단어는 건드리지 않습니다. 그래서 짧거나 특이한 인코딩은 놓칠 수 있습니다. Decode as로 방법을 직접 적용하고 Undo로 되돌리세요. 12개 계층 후에는 멈춥니다.
디코딩된 내용이 실행되거나 어딘가로 전송되나요?
아니요. 디코딩은 일반 JavaScript와 브라우저의 DecompressionStream을 사용하며, 결과는 텍스트나 16진수 덤프로 표시될 뿐 실행, 렌더링, 업로드되지 않습니다.
이런 문자열은 어디에서 나오나요?
피싱 페이지와 첨부 파일은 URL과 코드를 Base64나 16진수로 숨기고, ClickFix 페이지는 인코딩된 PowerShell 명령을 클립보드에 복사하며, 이메일은 quoted-printable로 도착합니다. 실행하지 말고 이곳에 붙여 넣으세요.
한 번에 한 계층씩 디코딩할 수 있나요?
네. After a manual step, keep peeling automatically의 선택을 해제한 뒤, 단계마다 Decode as에서 방법을 고르고 Apply to the current result를 누르세요.
얼마나 많은 텍스트를 붙여 넣을 수 있나요?
최대 5MB입니다. 200,000자를 넘는 결과는 화면에서 줄여서 표시되지만, Copy는 전체 텍스트를 복사합니다.
quoted-printable과 퍼센트 인코딩은 무엇인가요?
둘 다 바이트 하나를 기호와 16진수 두 자리로 씁니다. quoted-printable은 이메일 본문에서 쓰이며 =3D가 =를 뜻합니다. 퍼센트 인코딩은 URL에서 쓰이며 %2F가 /를 뜻합니다.