Công cụ giải mã Protocol Buffers
Kiểm tra một thông điệp Protocol Buffers đã mã hóa mà không tải lên và không giả định rằng công cụ biết schema. Công cụ chạy trong trình duyệt này nhận đầu vào được chọn rõ ràng dưới dạng thập lục phân, Base64, Base64URL, UTF-8 thô hoặc tệp nhị phân. Công cụ đọc mọi Wire Type protobuf hợp lệ, giữ nguyên độ chính xác của số nguyên 64 bit, báo đúng offset bị lỗi và hiển thị mọi cách diễn giải hoàn chỉnh của các byte Length-delimited còn mơ hồ. Payload chỉ ở trong trình duyệt và công cụ không bao giờ liên hệ với những dịch vụ có tên xuất hiện trong dữ liệu.
Cách hoạt động
-
1
Chọn đúng kiểu mã hóa
Chọn hex, Base64, Base64URL, UTF-8 thô hoặc tệp nhị phân. Công cụ không tự động đoán định dạng đầu vào.
-
2
Kiểm tra các trường Wire
Giải mã tag, số trường và giá trị Wire, sau đó mở rộng mọi khả năng Nested hoặc Packed hợp lệ mà không tự gán kiểu schema.
-
3
Xuất báo cáo
Tải JSON không schema, CSV đã chống công thức hoặc báo cáo văn bản dễ đọc để phân tích thêm.
Công cụ giải mã Protobuf không schema có thể xác nhận điều gì?
Protocol Buffers lưu một chuỗi tag và giá trị trường, chứ không lưu các khai báo .proto ban đầu. Hướng dẫn mã hóa protobuf chính thức định nghĩa mỗi tag bằng cách dịch số trường ba bit rồi kết hợp với Wire Type, tương đương field_number × 8 + wire_type. Nhờ đó, công cụ có thể xác nhận số trường, Wire Type, ranh giới byte và các kiểu mã hóa có thể tồn tại về mặt cấu trúc. Công cụ không thể xác nhận một varint đã được khai báo là uint64, int64, sint64, bool hay enum, vì các khai báo này có thể dùng cùng một chuỗi byte.
Chế độ đầu vào luôn do bạn chọn rõ ràng. Hex chấp nhận khoảng trắng ASCII và tối đa một tiền tố 0x ở đầu. Base64 và Base64URL được kiểm tra riêng, bao gồm độ dài, phần đệm và các bit đệm không dùng; không được trộn bảng ký tự chuẩn với bảng URL-safe. Văn bản thô là chính xác các byte UTF-8 do TextEncoder của trình duyệt tạo ra, các escape có dấu gạch chéo ngược không được diễn giải. Chế độ tệp sử dụng đúng byte gốc của tệp.
Wire Type và cách diễn giải
| Wire Type | Giá trị được mã hóa | Nội dung báo cáo hiển thị |
|---|---|---|
| 0 | Varint | Giá trị nguyên không dấu chính xác, giá trị có dấu dạng bù hai và ZigZag; Boolean chỉ khi bằng 0 hoặc 1 |
| 1 | Tám byte little-endian | Số nguyên fixed64 và sfixed64 chính xác cùng một khả năng double |
| 2 | Độ dài rồi đến các byte | Hex và Base64, UTF-8 nghiêm ngặt khi hợp lệ, cùng mọi khả năng Nested hoặc Packed hoàn chỉnh |
| 3 / 4 | Tag bắt đầu và kết thúc group | Các trường con của group có cùng số trường; tag kết thúc là dấu phân cách chứ không phải record riêng |
| 5 | Bốn byte little-endian | Số nguyên fixed32 và sfixed32 chính xác cùng một khả năng float |
Kiểu number thông thường của JavaScript không thể biểu diễn chính xác mọi số nguyên 64 bit. Công cụ dùng BigInt xuyên suốt Wire Parser và chuyển số nguyên chính xác thành chuỗi thập phân để hiển thị và xuất. Các giá trị dấu phẩy động đặc biệt như NaN, vô cực và số không âm cũng được xuất thành chuỗi để JSON không âm thầm biến chúng thành giá trị khác.
Hiểu tính mơ hồ của Length-delimited
Wire Type 2 được dùng cho chuỗi, byte thô, thông điệp nhúng và các giá trị vô hướng lặp lại dạng Packed. Khi thiếu schema, cùng một chuỗi byte có thể hợp lệ trong nhiều vai trò cùng lúc. Ví dụ, 2a 03 01 02 03 là trường 5 chứa ba byte. Các byte đó hợp lệ dưới dạng Packed Varint [1, 2, 3], nhưng cũng chỉ có thể là byte thông thường. Công cụ hiển thị cả hai khả năng và không xếp hạng khả năng nào đáng tin hơn.
Khả năng Nested Message chỉ xuất hiện khi toàn bộ nội dung Length-delimited được phân tích trọn vẹn thành một thông điệp hợp lệ. Các khả năng Packed Varint, fixed32 và fixed64 cũng chỉ xuất hiện khi cách diễn giải đó dùng hết mọi byte. Khả năng UTF-8 nghiêm ngặt đòi hỏi toàn bộ chuỗi được giải mã mà không cần ký tự thay thế. Những phép kiểm tra này cho biết khả năng về cấu trúc, không phải kiểu trường đã khai báo.
Group được xử lý theo ngữ pháp Wire dù schema hiện đại thường ưu tiên thông điệp nhúng. Tag Start-group phải được đóng bằng tag End-group mang cùng số trường. Tag kết thúc ở cấp gốc, tag không khớp hoặc tag kết thúc bị thiếu sẽ dừng giải mã tại đúng offset byte. Các trường đã giải mã hoàn chỉnh trước lỗi vẫn được hiển thị; byte bị thiếu và giá trị chưa biết không bao giờ bị biến thành số không giả.
Giới hạn, framing và xử lý an toàn
Công cụ nhận một thông điệp không có frame với dung lượng tối đa 10 MiB. Công cụ không tách stream có tiền tố độ dài, frame gRPC, tệp Delimited Message hay lớp bọc truyền tải. Hãy gỡ framing trước, rồi giải mã một thông điệp. Parser cũng giới hạn tổng số record, độ sâu đệ quy, số hàng hiển thị và lượng xử lý dành cho các khả năng. Những kiểm soát này tuân theo tinh thần của hướng dẫn chính thức về tập dữ liệu lớn và giới hạn triển khai: protobuf hoạt động hiệu quả, nhưng một thẻ trình duyệt dùng để chẩn đoán vẫn cần giới hạn bộ nhớ và khối lượng công việc.
Số trường phải nằm trong khoảng từ 1 đến 536.870.911. Công cụ cảnh báo các số 19.000–19.999 vì hướng dẫn số trường chính thức dành riêng dải này cho phần triển khai. Wire Type 6 và 7 không hợp lệ.
Việc phân tích và xuất dữ liệu diễn ra cục bộ. Giao diện nhiều bước có thể giữ một payload đã giới hạn kích thước trong sessionStorage của thẻ này tối đa hai giờ; bắt đầu lại sẽ xóa dữ liệu đó. Không có gì được đặt trong URL hoặc gửi đến máy chủ của chúng tôi. Đầu ra JSON được ghi rõ là báo cáo giải mã theo định dạng riêng của công cụ này, không phải ProtoJSON. CSV bắt đầu bằng UTF-8 BOM và thêm tiền tố vào các ô giống công thức để mở an toàn hơn trong bảng tính. Báo cáo vẫn có thể chứa dữ liệu ứng dụng bí mật, vì vậy hãy kiểm tra trước khi chia sẻ.
Câu hỏi thường gặp
Không. Wire Format giữ số trường và kiểu mã hóa Wire, nhưng các kiểu vô hướng khai báo khác nhau có thể dùng cùng một chuỗi byte. Tên, chú thích và phần lớn ý đồ schema không có trong dữ liệu.
Không. Kiểm tra đầu vào, phân tích, lọc và xuất đều chạy trong trình duyệt của bạn. Payload không được gửi đến máy chủ của chúng tôi hay đặt trong URL.
Một giá trị Length-delimited có thể biểu diễn hợp lệ byte, văn bản UTF-8, thông điệp nhúng hoặc các giá trị Packed. Khi không có schema, hiển thị mọi khả năng hoàn chỉnh trung thực hơn việc đoán.
Tag, varint, giá trị có độ rộng cố định, độ dài đã khai báo hoặc ranh giới group tại đó chưa hoàn chỉnh hoặc không hợp lệ. Các trường hoàn chỉnh trước đó vẫn nằm trong báo cáo một phần.
Không thể dán trực tiếp. Công cụ đọc một thông điệp protobuf và không gỡ framing gRPC, độ dài varint hay lớp bọc truyền tải khác. Trước tiên hãy trích xuất payload của một thông điệp.
Công cụ liên quan
Bảng tham chiếu ASCII
Bảng ASCII đầy đủ từ 0 đến 127 với giá trị thập phân, thập lục phân, bát phân, nhị phân và ký hiệu tham chiếu ký tự số HTML, gồm NUL, LF và DEL.
Tham chiếu ký tự HTML
Danh sách có thể tìm kiếm các thực thể HTML, mã tên và mã số tương ứng của chúng, cùng chức năng sao chép chỉ với một cú nhấp cho các ký tự đặc biệt và biểu tượng.
Bảng tham khảo phím tắt
Tìm phím tắt mặc định theo tài liệu của VS Code, Chrome và Bash dùng GNU Readline trên macOS, Windows và Linux.
Chuyển đổi từ RGB sang CMYK
Chuyển màu RGB thành phần trăm mực CMYK bằng công thức tiêu chuẩn. Xem trước tức thì và các giá trị C/M/Y/K. Đây là phép xấp xỉ toán học, không phải chuyển đổi có quản lý màu.
Trộn màu
Pha hai màu HEX thành 2-20 mẫu màu cách đều. Xem từng màu trung gian dưới dạng mã HEX viết hoa, bao gồm cả hai màu đầu cuối.
Trình chuyển ASCII sang Hex
Biến văn bản ASCII thành giá trị byte thập lục phân. Đầu ra dùng hai chữ số hex cho mỗi ký tự, sẵn sàng cho memory dump, packet trace hoặc bảng firmware.
Công cụ này có phiên bản bằng các ngôn ngữ khác
- Protocol Buffers 디코더 [KO]
- Protocol Buffers-avkodare [SV]
- Protocol Buffers-decoder [NL]
- Dekoder Protocol Buffers [PL]
- Protocol-Buffers-Decoder [DE]
- ตัวถอดรหัส Protocol Buffers [TH]
- Decodificador de Protocol Buffers [ES]
- Dekoder Protocol Buffers [ID]
- أداة فك ترميز Protocol Buffers [AR]
- Décodeur Protocol Buffers [FR]
- Protocol Buffers デコーダー [JA]
- Decodificador de Protocol Buffers [PT]
- Protocol Buffers Decoder [EN]
- Decodificatore Protocol Buffers [IT]
- Декодер Protocol Buffers [RU]
- Protocol Buffers Kod Çözücü [TR]
- Protocol Buffers 解码器 [ZH]