Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/mildsunrise/protobuf-inspector
الهندسة العكسيةالأدوات والمكوناتتحليل الملفات الثنائية
GitHubmildsunrise/protobuf-inspector

protobuf-inspector

🕵️ أداة لهندسة عكسية لبروتوكول بافرز (Protocol Buffers) ذات تعريف غير معروف

عرض المستودع
1.1k105منذ 5 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

protobuf-inspector

برنامج بسيط يمكنه تحليل بيانات ثنائية مشفرة بـ Google Protobuf (الإصدار 2 أو 3) دون الحاجة إلى معرفة تعريفها المصاحب. سيطبع تمثيلًا جميلًا وملونًا لمحتوياتها. مثال:

Main screenshot

كما ترى، من الواضح أن أسماء الحقول ضائعة، إلى جانب بعض التفاصيل عالية المستوى مثل:

  • ما إذا كان varint يستخدم zig-zag encoding أم لا (سيفترض عدم استخدام zig-zag افتراضيًا)
  • ما إذا كانت قيمة 32-bit/64-bit هي عدد صحيح أو عائم (كلاهما معروض افتراضيًا)
  • الإشارة (اكتشاف تلقائي افتراضيًا)

لكن protobuf-inspector قادر على تخمين بنية الرسالة بشكل صحيح معظم الوقت. عندما يجد بيانات ثنائية مضمنة في حقل، سيحاول أولاً تحليلها كرسالة. إذا فشل ذلك، سيعرض البيانات كنص أو hexdump. قد يرتكب أخطاء، خاصة مع القطع الصغيرة.

يعرض الحقول بالترتيب الذي تم ترميزها به في السلك، لذلك يمكن أن يكون مفيدًا لمن يرغب في التعرف على wire format أو مطوري المحللات، بالإضافة إلى الهندسة العكسية.

الاستخدام

يمكنك التثبيت باستخدام pip:

root@kitploit:~
pip install protobuf-inspector

يؤدي هذا إلى تثبيت الأمر protobuf_inspector. قم بتشغيله، مع إدخال blob protobuf على stdin:

root@kitploit:~
protobuf_inspector < my-protobuf-blob

بعد قراءة التحليل الأول (الأعمى) للـ blob، عادةً ما تبدأ في تعريف بعض الحقول حتى يتمكن protobuf-inspector من تحليل blobs الخاصة بك بشكل أفضل، حتى تصل إلى نقطة حيث لديك تعريف protobuf كامل ولم يعد على المحلل تخمين أي شيء.

اقرأ عن تعريف الحقول هنا.

أخطاء التحليل

إذا تم العثور على خطأ في التحليل، سيتوقف التحليل داخل ذلك الحقل، لكنه سيستمر دون تأثر خارج التسلسل الهرمي. سيتم طباعة تتبع المكدس حيث تذهب محتويات الحقل، إلى جانب hexdump يوضح أين توقف التحليل في تلك القطعة، إن أمكن.

إذا قمت بتحديد uint32 وتم العثور على varint أكبر، ستحصل على شيء مثل:

Error on invalid varint

إذا قمت بتحديد أن بعض الحقول تحتوي على رسالة مضمنة، ولكن تم العثور على بيانات غير صالحة هناك، ستحصل على:

Error on invalid message

يرجى ملاحظة أن main.py سيخرج بحالة غير صفرية إذا حدث خطأ تحليل واحد أو أكثر.

حيل

هناك بعض الحيل التي يمكنك استخدامها لتوفير الوقت عند التعامل مع blob:

  1. إذا كنت متأكدًا أن varint ليس يستخدم تشفير zig-zag، لكنك لا تزال غير متأكد من الإشارة، اتركه كـ varint. إذا كان يستخدم تشفير zig-zag، استخدم sint64 إلا إذا كنت متأكدًا أنه 32-bit وليس 64-bit.

  2. إذا تم التعرف على قطعة بشكل خاطئ كـ packed chunk أو رسالة مضمنة، أو رأيت شيئًا غريبًا مع الرسالة المحللة وتريد رؤية البايتات الخام، حدد نوعًا من bytes. بالمقابل، إذا لم يتم اكتشافها كرسالة مضمنة لسبب ما وكان ينبغي ذلك، فرضها على message لرؤية السبب.

  3. إذا كنت تريد استخراج بيانات قطعة خام إلى ملف لتحليلها بشكل أفضل، حدد نوعًا من dump وسيقوم protobuf-inspector بإنشاء dump.0 و dump.1 وما إلى ذلك في كل مرة يجد فيها blob متطابق.

  4. يقوم protobuf-inspector بتحليل الـ blob كرسالة من نوع root، لكن هذا مجرد افتراضي. إذا كان لديك العديد من أنواع الرسائل المعرفة، يمكنك تمرير اسم نوع كوسيطة اختيارية، وسيستخدم protobuf-inspector ذلك بدلاً من root:

    root@kitploit:~
     protobuf_inspector request < my-protobuf-blob
    

الوصول البرمجي

مثال بسيط:

root@kitploit:~
from protobuf_inspector.types import StandardParser

parser = StandardParser()
with open('my-blob', 'rb') as fh:
   output = parser.parse_message(fh, "message")
print(output)

لم يتم تصميم هذا المشروع في البداية لاستخدامه كمكتبة، ومع ذلك، قد تتغير واجهة برمجته. للحصول على مثال أكثر تعقيدًا، راجع protobuf_inspector/__main__.py.

تنزيل الأداة