어떤 웹 도구가 필요할까
| 가진 것 | 생김새 | 도구 |
|---|---|---|
| JSON Web Token | eyJhbGci….eyJzdWIi….sig | JWT 디코더, JWT 인코더 |
| Authorization 헤더 | Basic dXNlcjpwYXNz | Basic Auth 디코더, Basic Auth 헤더 |
-와 _가 있고 =가 없는 Base64 | SGVsbG8_d29ybGQ | Base64URL 디코더, Base64URL 인코더 |
| 두 알파벳 사이의 변환 | Base64를 Base64URL로, Base64URL을 Base64로 | |
| data URI | data:image/png;base64,… | Data URI 파서, Data URI 생성기 |
| SAML 메시지 | SAMLResponse=PHNhbWxwOl… | SAML 디코더 |
| Kubernetes Secret | YAML의 data: 값 | Kubernetes Secret 디코더 |
| 이미지 풀 시크릿 | eyJhdXRocyI6… | .dockerconfigjson 디코더 |
| 압축된 Base64 | H4sI… 또는 eJ… | Gzip Base64 디코더, 만들기: gzip, zlib |
| 인코딩된 필드가 있는 JSON 문서 | "body": "eyJ…" | JSON 속 Base64 |
| 인코딩된 PowerShell 명령 | powershell -enc JABzAD0A… | PowerShell -EncodedCommand |
| 메일 원본 | Content-Transfer-Encoding: base64 | 이메일 디코더, Quoted-printable |
| URL 인코딩된 텍스트 | q=caf%C3%A9%20menu | URL 디코딩, URL 인코딩 |
| HTML 이스케이프된 텍스트 | <p>Café</p> | HTML 엔터티 |
겹겹이 싸인 계층
웹 페이로드는 여러 번 감싸여 있는 경우가 많고, 계층마다 맞는 도구가 따로 있습니다. 흔한 조합 몇 가지입니다.
- 풀 시크릿: Docker JSON을 감싼 Kubernetes Base64, 그 안에 Base64로 된
user:password. .dockerconfigjson 디코더가 세 겹을 모두 풉니다. - SAML Redirect: XML, raw deflate, Base64, URL 인코딩. SAML 디코더가 전체 과정을 거꾸로 되돌립니다.
- Helm 릴리스: JSON, gzip, Base64, 그리고 다시 Kubernetes Base64.
- 리디렉션 URL: 쿼리 파라미터 안에 URL 인코딩된 URL이 들어 있고, 때로는 두 번 인코딩되어 있습니다. URL 디코더의 반복 디코딩 옵션이 이를 처리합니다.
- Flask 세션 쿠키: JSON, 선택적으로 zlib 압축(앞의
.가 표시), Base64URL, 그다음 타임스탬프와 서명이 점으로 이어집니다.
디코딩한 결과가 여전히 인코딩된 것처럼 보이면 앞 글자를 위 표와 비교하고 맞는 도구로 계속하세요.
인코딩은 보호가 아닙니다
이 형식들 중 어느 것도 무언가를 숨기지 않습니다. JWT 페이로드, Basic Auth 헤더, Kubernetes Secret, SAML 어설션은 보는 사람 누구나 읽을 수 있습니다. 보안을 더하는 것은 서명이나 진짜 암호화뿐입니다. 바로 그래서 여기의 디코더가 쓸모 있고, 같은 이유로 이런 문자열은 로그, 스크린샷, 티켓에 남기지 않는 것이 좋습니다. 자세한 내용은 인코딩과 암호화의 차이에 있습니다.
인증서, SSH 키, 해시는 키와 인증서를 보세요. 일반 문자열과 문자 인코딩은 텍스트 도구에 있습니다.
자주 묻는 질문
가진 문자열이 어떤 인코딩인지 어떻게 알 수 있나요?
생김새로 알 수 있습니다. eyJ로 시작하고 점으로 구분된 세 부분이면 JWT, %와 hex 두 자리면 URL 인코딩, &는 HTML 이스케이프, H4sI는 gzip, Base64에 -나 _가 있으면 Base64URL입니다. 이 페이지의 표에 더 많은 패턴과 각각에 맞는 도구가 있습니다.
운영 환경의 토큰과 시크릿에 이 도구를 써도 안전한가요?
도구는 브라우저에서 실행되고, 페이지의 Content Security Policy가 Cloudflare 조회수 집계를 제외한 네트워크 요청을 막으므로 붙여넣은 데이터를 어디로도 보낼 수 없습니다. 그래도 실제 토큰은 조심해서 다루고, 다른 곳에 노출된 시크릿은 교체하세요.
URL 인코딩과 Base64URL은 무엇이 다른가요?
URL 인코딩은 개별 문자를 %XX로 이스케이프하고 나머지는 읽을 수 있게 둡니다. Base64URL은 임의의 바이트를 영문자, 숫자, -, _로 바꿉니다. 텍스트 값에는 URL 인코딩을, 바이너리 데이터와 토큰에는 Base64URL을 쓰세요.