DevToys Web Pro iconDevToys Web ProBlog
Đánh giá chúng tôi:
Dùng thử tiện ích mở rộng trình duyệt:

Bộ giải mã / mã hóa Protobuf

Đã giải mã
Định dạng:

Protobuf được mã hóa Base64

  • Các trường đã giải mã (2)

  • Trường #Loại WireGiá trị
    1Varint(0)150
    2Length-delimited(2)testing
    Chi tiết kỹ thuật

    Cách hoạt động của bộ giải mã Protobuf

    Công cụ làm gì

    Bộ giải mã Protobuf phân tích dữ liệu nhị phân Protocol Buffer thô mà không cần tệp schema .proto, hiển thị số trường, kiểu và giá trị theo wire-format. Công cụ cũng hỗ trợ mã hóa JSON trở lại thành protobuf nhị phân khi bạn cung cấp một định nghĩa .proto. Điều này giúp có thể kiểm tra các payload protobuf “mờ” được bắt từ lưu lượng mạng hoặc lưu trong cơ sở dữ liệu mà không cần truy cập schema gốc.

    Các trường hợp sử dụng phổ biến cho lập trình viên

    Lập trình viên backend dùng giải mã protobuf không cần schema để reverse-engineer các API gRPC không có tài liệu, gỡ lỗi các thông điệp đã serialize trong các topic Kafka hoặc kiểm tra payload nhị phân trong các cột cơ sở dữ liệu. Nhà nghiên cứu bảo mật phân tích lưu lượng mạng được mã hóa protobuf trong quá trình kiểm thử xâm nhập. Chế độ mã hóa giúp lập trình viên xác minh rằng các định nghĩa .proto của họ tạo ra đầu ra nhị phân đúng như mong đợi trước khi triển khai thay đổi schema lên các dịch vụ production.

    Định dạng dữ liệu, kiểu hoặc biến thể

    Protocol Buffers dùng wire format gọn nhẹ với năm wire type: varint (int32, int64, bool, enum), fixed 64-bit (double, fixed64), length-delimited (string, bytes, embedded messages, packed repeated fields), fixed 32-bit (float, fixed32) và các kiểu start/end group đã bị loại bỏ. Khi không có schema, bộ giải mã không thể phân biệt giữa string và embedded message (cả hai đều là length-delimited), vì vậy nó thử cả hai cách diễn giải và hiển thị cách phân tích có khả năng đúng nhất.

    Các lỗi thường gặp và trường hợp biên

    Giải mã không có schema vốn dĩ mơ hồ — một varint có thể là int32 có dấu (zigzag), uint32 không dấu, hoặc boolean, và các trường length-delimited có thể là chuỗi, bytes, hoặc message lồng nhau. Tên trường bị mất trong mã hóa nhị phân và chỉ xuất hiện dưới dạng thẻ trường dạng số. Các trường lặp dạng packed trông giống hệt một trường bytes đơn lẻ nếu không có ngữ cảnh schema. Luôn đối chiếu đầu ra đã giải mã với bất kỳ tài liệu nào sẵn có để giải quyết các điểm mơ hồ.

    Khi nào nên dùng công cụ này thay vì viết mã

    Hãy dùng công cụ trên trình duyệt này để kiểm tra nhanh các payload protobuf đã thu thập khi bạn không có tệp .proto hoặc muốn xác minh mã hóa mà không cần thiết lập toolchain build. Với các hệ thống production, hãy dùng protoc với các tệp schema phù hợp, mã được sinh theo từng ngôn ngữ, và các dịch vụ gRPC reflection cung cấp đầy đủ an toàn kiểu, khả năng tương thích về sau, và tích hợp với hệ thống build của ứng dụng của bạn.