ตัวถอดรหัส / ตัวเข้ารหัส Protobuf
protobuf ที่เข้ารหัส Base64
ฟิลด์ที่ถอดรหัสแล้ว (2)
| ฟิลด์ # | ประเภท Wire | ค่า |
|---|---|---|
| 1 | Varint(0) | 150 |
| 2 | Length-delimited(2) | testing |
รายละเอียดทางเทคนิค
ตัวถอดรหัส Protobuf ทำงานอย่างไร
เครื่องมือนี้ทำอะไร
ตัวถอดรหัส Protobuf แยกวิเคราะห์ข้อมูลไบนารีดิบของ Protocol Buffer โดยไม่ต้องใช้ไฟล์สคีมา .proto และแสดงหมายเลขฟิลด์ ประเภท และค่าตาม wire format นอกจากนี้ยังรองรับการเข้ารหัส JSON กลับเป็นไบนารี protobuf เมื่อคุณให้คำจำกัดความ .proto ทำให้สามารถตรวจสอบเพย์โหลด protobuf ที่ไม่โปร่งใสซึ่งถูกจับจากทราฟฟิกเครือข่ายหรือเก็บในฐานข้อมูลได้ โดยไม่ต้องเข้าถึงสคีมาต้นฉบับ
กรณีการใช้งานทั่วไปของนักพัฒนา
นักพัฒนาแบ็กเอนด์ใช้การถอดรหัส protobuf แบบไม่มีสคีมาเพื่อรีเวิร์สเอนจิเนียร์ gRPC API ที่ไม่มีเอกสาร ดีบักข้อความที่ถูกซีเรียลไลซ์ใน Kafka topics หรือดูเพย์โหลดไบนารีในคอลัมน์ฐานข้อมูล นักวิจัยด้านความปลอดภัยวิเคราะห์ทราฟฟิกเครือข่ายที่เข้ารหัสด้วย protobuf ระหว่างการทดสอบเจาะระบบ โหมดเข้ารหัสช่วยให้นักพัฒนายืนยันได้ว่าคำจำกัดความ .proto ของตนสร้างเอาต์พุตไบนารีตามที่คาดไว้ก่อนนำการเปลี่ยนแปลงสคีมาไปใช้กับบริการโปรดักชัน
รูปแบบข้อมูล ชนิด หรือรูปแบบย่อย
Protocol Buffers ใช้ wire format แบบกะทัดรัดที่มี wire type ห้าประเภท: varint (int32, int64, bool, enum), fixed 64-bit (double, fixed64), แบบกำหนดความยาว (string, bytes, embedded messages, packed repeated fields), fixed 32-bit (float, fixed32) และประเภท group แบบ start/end ที่เลิกใช้แล้ว หากไม่มีสคีมา ตัวถอดรหัสไม่สามารถแยกได้ว่าเป็นสตริงหรือ embedded message (ทั้งคู่เป็นแบบกำหนดความยาว) ดังนั้นจึงลองตีความทั้งสองแบบและแสดงผลการพาร์สที่น่าจะเป็นไปได้มากที่สุด
ข้อผิดพลาดที่พบบ่อยและกรณีขอบ
การถอดรหัสแบบไม่มีสคีมา (schema-less) มีความกำกวมโดยธรรมชาติ — varint อาจเป็น int32 แบบ signed (zigzag), uint32 แบบ unsigned หรือ boolean และฟิลด์แบบ length-delimited อาจเป็นสตริง, ไบต์ หรือข้อความที่ซ้อนอยู่ (nested messages) ชื่อฟิลด์จะหายไปในการเข้ารหัสแบบไบนารีและจะแสดงเป็นเพียงแท็กฟิลด์ตัวเลขเท่านั้น ฟิลด์ซ้ำแบบ packed จะดูเหมือนกับฟิลด์ไบต์เดี่ยวหนึ่งฟิลด์โดยไม่มีบริบทของสคีมา ควรอ้างอิงผลลัพธ์ที่ถอดรหัสแล้วกับเอกสารที่มีอยู่เสมอเพื่อคลี่คลายความกำกวม
เมื่อใดควรใช้เครื่องมือนี้แทนการเขียนโค้ด
ใช้เครื่องมือบนเบราว์เซอร์นี้เพื่อการตรวจดูอย่างรวดเร็วของเพย์โหลด protobuf ที่จับมาได้ เมื่อคุณไม่มีไฟล์ .proto หรืออยากตรวจสอบการเข้ารหัสโดยไม่ต้องตั้งค่า toolchain สำหรับการบิลด์ สำหรับระบบที่ใช้งานจริง ให้ใช้ protoc พร้อมไฟล์สคีมาที่ถูกต้อง โค้ดที่สร้างขึ้นตามภาษา และบริการ gRPC reflection ที่ให้ความปลอดภัยด้านชนิดข้อมูล (type safety) อย่างครบถ้วน ความเข้ากันได้แบบไปข้างหน้า (forward compatibility) และการผสานรวมกับระบบบิลด์ของแอปพลิเคชันของคุณ