Protobuf 디코더 (.proto 없이)
protobuf 페이로드는 그 자체로는 아무것도 알려주지 않습니다. 와이어에는 필드 이름이 없고 번호와 와이어 타입만 실리기 때문에, gRPC 호출이나 API 캡처에서 나온 바이너리 본문은 그것을 만든 .proto 파일이 없으면 읽을 수 없습니다. 그리고 남의 서비스를 디버깅할 때는 대개 그 파일이 없습니다. 이 디코더는 와이어 포맷을 직접 읽습니다. 각 필드가 번호, 와이어 타입, 값과 함께 나오고, 중첩 메시지는 그 자리에서 펼쳐지며, 인코딩이 모호한 경우에는 대신 골라주지 않고 모호하다고 알려줍니다. 이 모호함은 실제로 존재합니다. varint는 부호 없는 정수일 수도, 지그재그로 인코딩된 부호 있는 정수일 수도, 불리언일 수도 있고, 길이 지정 필드는 문자열일 수도, 중첩 메시지일 수도, packed 반복 숫자일 수도, 그냥 바이트일 수도 있습니다. 도구는 가장 그럴듯한 해석을 보여주고 나머지를 옆에 나열합니다. 중첩 메시지 판정은 의미에 대한 추측이 아닙니다. 모든 키가 유효한 필드 번호이고 모든 길이가 정확히 끝에 맞아떨어질 때만 메시지로 제시합니다. 모든 처리는 브라우저에서 이뤄지고 페이로드는 업로드되지 않습니다.
base64나 hex로 된 protobuf 페이로드를 붙여넣으면 디코딩됩니다.
사용법
- 페이로드를 base64 또는 hex로 붙여넣으세요. 형식은 자동 감지되고 직접 지정할 수도 있습니다.
- 트리를 읽으세요. 각 줄은 필드 번호, 와이어 타입, 값입니다.
- 회색 글씨로 표시된 다른 해석 가능성도 확인하세요.
- 중첩 메시지는 상위 필드 아래에 들여쓰기되어 표시됩니다.
- 캡처한 본문 파일을 끌어다 놓으면 바로 디코딩됩니다.
자주 묻는 질문
- 필드 이름이 왜 안 나오나요?
- 전송되지 않기 때문입니다. protobuf는 와이어에 필드 번호와 와이어 타입만 싣고, 이름은 양쪽의 .proto 파일에 있습니다. 그래서 인코딩이 작아지는 것이고, 스키마 없는 디코더가 메시지의 구조는 보여줘도 필드 이름은 알려줄 수 없는 이유이기도 합니다.
- 중첩 메시지인지 어떻게 판단하나요?
- 해당 바이트를 메시지로 파싱해 보고, 완전히 일관될 때만 받아들입니다. 모든 키가 유효한 필드 번호와 와이어 타입이고, 모든 길이가 버퍼 끝에 정확히 맞아야 합니다. 짧은 문자열이 우연히 이 검사를 통과하기도 해서, 바이트가 유효한 텍스트이기도 하면 모호하다고 표시합니다.
- 숫자의 다른 해석이란 무엇인가요?
- 와이어 상의 varint는 int32/int64/uint일 수도, 지그재그 sint일 수도, bool일 수도 있습니다. fixed64는 double일 수도, fixed64나 sfixed64일 수도 있습니다. 페이로드 안에는 이를 구분할 정보가 없어서, 가장 흔한 해석을 먼저 보여주고 나머지를 옆에 표시합니다.
- gRPC 본문도 디코딩되나요?
- gRPC 프레임은 각 메시지 앞에 압축 플래그 1바이트와 길이 4바이트를 붙입니다. 그 5바이트를 떼어내면 나머지는 여기서 디코딩됩니다. 압축된 프레임은 먼저 압축을 풀어야 합니다.
- group은 어떻게 되나요?
- group은 proto2의 폐기된 와이어 타입 3, 4이며 요즘은 거의 볼 수 없습니다. 발견하면 중첩을 추측하지 않고 표시만 남깁니다.
- 페이로드가 업로드되나요?
- 아니요. 바이트는 브라우저에서 디코딩되며 서버로 전송되는 것은 없습니다.
관련 도구
JSON to Protobuf 스키마 변환기 (proto3)
JSON 객체를 타입 지정 필드와 중첩 메시지를 갖춘 proto3 .proto 스키마로 브라우저에서 변환합니다.
JWT 디코더
JWT의 헤더·클레임·만료를 즉시 확인하세요.
MessagePack 디코더
base64나 hex로 된 MessagePack 바이트를 붙여넣으면 타입, 중첩 맵, 바이너리, 타임스탬프까지 브라우저에서 해석합니다.
Base64 인코더 / 디코더
텍스트를 Base64로 인코딩하거나 다시 텍스트로 디코딩하세요.
Data URI 파서 및 디코더
data: URI를 디코드해 MIME 타입, 인코딩, 크기, 디코드된 내용을 브라우저에서 확인합니다.
Base64 ↔ 16진수 변환기
Base64 문자열을 16진수 바이트로, 16진수를 다시 Base64로 변환합니다. URL-safe 지원, 브라우저에서 동작합니다.