DevToys Web Pro iconDevToys Web Pro블로그
평가하기:
브라우저 확장 프로그램을 사용해 보세요:

Protobuf 디코더 / 인코더

디코딩됨
형식:

Base64로 인코딩된 protobuf

  • 디코딩된 필드(2)

  • 필드 #와이어 타입
    1Varint(0)150
    2Length-delimited(2)testing
    기술적 세부 정보

    Protobuf 디코더가 작동하는 방식

    도구가 하는 일

    Protobuf 디코더는 .proto 스키마 파일 없이도 원시 Protocol Buffer 바이너리 데이터를 파싱하여 와이어 포맷의 필드 번호, 타입, 값을 표시합니다. 또한 .proto 정의를 제공하면 JSON을 다시 protobuf 바이너리로 인코딩하는 것도 지원합니다. 이를 통해 원래 스키마에 접근할 수 없는 상태에서도 네트워크 트래픽에서 캡처되었거나 데이터베이스에 저장된 불투명한 protobuf 페이로드를 검사할 수 있습니다.

    개발자들이 흔히 사용하는 사례

    백엔드 개발자는 스키마 없는 protobuf 디코딩을 사용해 문서화되지 않은 gRPC API를 리버스 엔지니어링하거나, Kafka 토픽의 직렬화된 메시지를 디버깅하거나, 데이터베이스 컬럼의 바이너리 페이로드를 검사합니다. 보안 연구자는 침투 테스트 중 protobuf로 인코딩된 네트워크 트래픽을 분석합니다. 인코딩 모드는 개발자가 .proto 정의가 예상한 바이너리 출력을 생성하는지 확인한 뒤, 프로덕션 서비스에 스키마 변경을 배포하는 데 도움이 됩니다.

    데이터 형식, 타입 또는 변형

    Protocol Buffers는 다섯 가지 와이어 타입을 가진 컴팩트한 와이어 포맷을 사용합니다: varint(int32, int64, bool, enum), 64비트 고정(double, fixed64), 길이 구분(string, bytes, 임베디드 메시지, 패킹된 반복 필드), 32비트 고정(float, fixed32), 그리고 사용 중단된 start/end group 타입. 스키마가 없으면 디코더는 문자열과 임베디드 메시지(둘 다 길이 구분)를 구분할 수 없으므로, 두 해석을 모두 시도하고 가장 가능성이 높은 파싱 결과를 표시합니다.

    흔한 함정과 엣지 케이스

    스키마 없이 디코딩하면 본질적으로 모호합니다. 예를 들어 varint는 부호 있는 int32(지그재그), 부호 없는 uint32, 또는 불리언일 수 있고, 길이 제한(length-delimited) 필드는 문자열, 바이트, 또는 중첩 메시지일 수 있습니다. 필드 이름은 바이너리 인코딩에서 사라지고 숫자 필드 태그로만 나타납니다. 패킹된 반복 필드는 스키마 맥락이 없으면 단일 bytes 필드와 동일하게 보입니다. 모호함을 해소하려면 디코딩된 출력 결과를 가능한 모든 문서와 항상 교차 확인하세요.

    코드 대신 이 도구를 사용해야 하는 경우

    .proto 파일이 없거나 빌드 툴체인을 설정하지 않고 인코딩을 검증하고 싶을 때, 캡처한 protobuf 페이로드를 빠르게 점검하는 용도로 이 브라우저 도구를 사용하세요. 프로덕션 시스템에서는 적절한 스키마 파일, 언어별로 생성된 코드, 그리고 완전한 타입 안전성, 전방 호환성, 애플리케이션 빌드 시스템과의 통합을 제공하는 gRPC 리플렉션 서비스를 갖춘 protoc를 사용하세요.