
مكوّن إضافي لـ Wireshark لتفكيك بروتوكول Telegram
هذا مفكك (dissector) لـ Wireshark يساعدك على فهم حركة مرور تيليجرام من حولك.
يقوم بتفكيك حزم تيليجرام التي يراها وفقًا لـ بروتوكول MTProto 2.0.
لتثبيت هذا المفكك:
luarocks (لإصدار Lua الخاص بـ Wireshark لديك)luagcrypt.dllluagcrypt.dll/luagcrypt.so المطابق إلى دليل تثبيت Wireshark، على سبيل المثال C:\Program Files\Wiresharkmtproto إلى دليل الإضافات (plugins) في Wireshark، على سبيل المثال C:\Users\<username>\AppData\Roaming\Wireshark\pluginsبعد التثبيت، يمكنك ببساطة فتح Wireshark مع بعض حركة مرور تيليجرام.
مهم: لكي تعمل ميزة إزالة التمويه، يجب أن تكون محادثة TCP كاملة معروفة من البداية (وفقًا لمواصفات MTProto)، لذا يُنصح بفتح تطبيق تيليجرام بعد بدء تسجيل الحزم.
لفك تشفير حركة المرور، ستحتاج إلى مفتاح المصادقة (auth_key) المطابق.
الإصدارات الحديثة من عملاء تيليجرام الرسميين تستخدم السرية التامة التقدّمية (Perfect Forward Secrecy) للمحادثات السحابية، من خلال استدعاء auth.bindTempAuthKey عند بدء التشغيل و/أو بشكل منتظم. هذا يعني أن الجلسات الرئيسية ستستخدم مفاتيح مصادقة مؤقتة (يتم إنشاؤها باستخدام DH) بدلاً من المفاتيح الدائمة.
لاستخراج مفاتيح المصادقة المستخدمة أثناء التشغيل، تم توفير سكربتين لـ frida يقومان بربط عمليات تيليجرام (hooking). لاستخدامهما، تأكد من تثبيت Frida، ثم شغّل:
hook_windows_auth_key.py لتطبيق ويندوز الرسمي (مع بعض التعديلات قد يعمل على Linux\Mac أيضًا)hook_android_auth_key.py لتطبيق أندرويد الرسمييجب طباعة مفاتيح المصادقة ومعرّفات مفاتيح المصادقة بمجرد حدوث أي اتصال شبكي.
بمجرد حصولك على مفاتيح المصادقة، ولتغذية المفكك بها، انتقل إلى Edit --> Prefrences --> Protocols --> MTProto واملأ حقول مفاتيح المصادقة.
يمكنك أيضًا استخراج مفتاح المصادقة الدائم من ملف tgnet.dat (أندرويد - انظر على سبيل المثال هنا، هنا، هنا) أو من ملف key_datas (سطح المكتب - انظر هنا، هنا). من المحتمل أن العملاء الآخرين يخزنون auth_key بطريقة مختلفة.
في بعض الأحيان، يقوم تيليجرام بتحديث إصدار مخطط API في عملائه (أو ربما تشاهد حركة مرور من عملاء أقدم). عند حدوث ذلك، من الممكن أن يكون مخطط TL الخاص بهذه الأداة غير متزامن مع بعض استدعاءات RPC التي تراها في حزمك، مما ينتج عنه رسائل Incomplete parsing في Wireshark. يمكنك معرفة مستوى API الذي يستخدمه تطبيقك في طلب invokeWithLayer الخاص به.
لمزامنة المفكك مع مخطط API الصحيح، ستحتاج إلى تنزيل ملف TL الخاص بالطبقة من تيليجرام، وتحويله إلى JSON (انظر أدناه)، وحفظه في mtproto/schema/api_tl_schema_layer_X.json حيث X هو رقم الطبقة لديك.
يمكنك الحصول على مخطط TL المحدّث من ملف api.tl الخاص بتطبيق سطح المكتب، أو الاطلاع على موقع تيليجرام لمزيد من الإصدارات.
لتحويل ملف tl إلى JSON، شغّل على سبيل المثال (تأكد من تثبيت npm لديك):
C:\path\to\MTproto Dissector>
npx @psqq/tl-to-json api_layer_218.tl mtproto/schema/api_tl_schema_layer_218.json default --indent 4
ثم تأكد من نسخ ملف json الجديد إلى mtproto/schema/ في دليل الإضافات الخاص بـ Wireshark.
أخيرًا، في Wireshark انتقل إلى Edit --> Prefrences --> Protocols --> MTPROTO، وغيّر "API level" إلى المستوى الذي يطابق حركة المرور لديك.