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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/gosecure/pyrdp
الاستغلالتحليل الشبكة الجنائيجمع المعلوماتأمن الشبكاتتحليل البرمجيات الخبيثةCTFاختبار الاختراقالتعلم والتعليمالفريق الأحمرالاستجابة للحوادثتطوير الحمولاتمختبرات وتدريب عملي
1.8k27222منذ 4 أشهرتمت المراجعة من قبل Kitploit
GitHubgosecure/pyrdp

pyrdp

RDP monster-in-the-middle (mitm) ومكتبة لـ Python مع القدرة على مشاهدة الاتصالات المباشرة أو بعد وقوعها

عرض المستودعالموقع الإلكتروني

الأكثر شعبية

عرض الكل →

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

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

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

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

PyRDP

Tests Black Hat Arsenal 2019 Black Hat Arsenal 2021 Black Hat Arsenal 2022

PyRDP هي أداة ومكتبة لبروتوكول سطح المكتب البعيد (RDP) من نوع الوحش في المنتصف (MITM) بلغة بايثون.

PyRDP Logo

تتميز بعدة أدوات:

  • الوحش في المنتصف لـ RDP
    • يسجل بيانات الاعتماد النصية الصريحة أو تجزئات NetNTLM المستخدمة عند الاتصال
    • يسرق البيانات المنسوخة إلى الحافظة
    • يحفظ نسخة من الملفات المنقولة عبر الشبكة
    • يتصفح محركات الأقراص المشتركة في الخلفية ويحفظها محليًا
    • يحفظ تسجيلات الاتصالات لتتمكن من رؤيتها لاحقًا
    • ينفذ أوامر وحدة التحكم أو تحميلات باورشيل تلقائيًا عند الاتصالات الجديدة
  • مشغل RDP:
    • مشاهدة اتصالات RDP المباشرة القادمة من MITM
  • عرض تسجيلات اتصالات RDP
  • السيطرة على جلسات RDP النشطة مع إخفاء إجراءاتك
  • سرد محركات الأقراص المعينة للعميل وتنزيل الملفات منها أثناء الجلسات النشطة
  • أداة التحويل:
    • تحويل تسجيلات RDP إلى فيديوهات لتسهيل المشاركة
    • تحويل تسجيلات RDP إلى سلسلة من الأحداث منخفضة المستوى بالتسلسل بتنسيق JSON
    • تحويل ملفات PCAP إلى تسجيلات أو فيديوهات أو أحداث JSON
    • تحويل ملفات PCAP المفكوكة (PDUs من الطبقة 7) إلى تسجيلات أو فيديوهات أو أحداث JSON
  • مستنسخ شهادات RDP:
    • إنشاء شهادة X509 موقعة ذاتيًا بنفس حقول شهادة خادم RDP
  • تم تقديم PyRDP في عام 2018 حيث أظهرنا أنه يمكننا الإمساب بمهدد حقيقي متلبسًا . يتم تطوير هذه الأداة مع مراعاة حالات استخدام اختبار الاختراق وأبحاث البرامج الضارة.

    PyRDP Player Replaying an RDP session

    جدول المحتويات

    • الأنظمة المدعومة
    • التثبيت
      • باستخدام pipx
      • باستخدام صورة دوكر
    • استخدام PyRDP
      • استخدام الوحش في المنتصف لـ PyRDP
      • استخدام مشغل PyRDP
      • استخدام مستنسخ شهادات PyRDP
      • استخدام محول PyRDP
      • تكوين PyRDP
      • استخدام متقدم
      • تعليمات الاستخدام الخاصة بدوكر
    • حكايات PyRDP
    • المساهمة في PyRDP
    • شكر وتقدير

    الأنظمة المدعومة

    يفترض أن يعمل PyRDP على بايثون 3.7 فما فوق على منصات x86-64 و ARM و ARM64.

    تم اختبار هذه الأداة لتعمل على بايثون 3.7 على لينكس (أوبونتو 20.04 و 22.04) و Raspberry Pi وويندوز. لم يتم اختبارها على macOS.

    التثبيت

    يوصى بطريقتين للتثبيت عبر pipx أو باستخدام حاويات دوكر. يتم تغطية التثبيت من المصدر أو بناء حاويات دوكر بنفسك في وثائق التطوير.

    باستخدام pipx

    الاعتماديات

    لينكس

    أولاً، تأكد من تثبيت الحزم الأولية (هذه الحزم مدرجة لأوبونتو 22.04، قد تحتاج إلى تعديلها للتوزيعات الأخرى). نقدم نوعين من التثبيت: كامل ومصغر. قم بتثبيت الاعتماديات حسب حالة الاستخدام الخاصة بك.```sh

    Full install (GUI, convert captures to video)

    sudo apt install python3 python3-pip python3-venv
    build-essential python3-dev openssl
    libegl1 libxcb-cursor0 libxkbcommon-x11-0 libxcb-icccm4 libxcb-keysyms1
    libnotify-bin
    libavcodec58 libavdevice58

    Slim install (no GUI, no conversion to video possible)

    sudo apt install python3 python3-pip python3-venv
    build-essential python3-dev git openssl

    root@kitploit:~
    يجب أن يؤدي هذا إلى تثبيت التبعيات المطلوبة لتشغيل PyRDP. إذا اخترت التثبيت دون تبعيات واجهة المستخدم الرسومية أو تحويل الفيديو، فلن يكون من الممكن استخدام `pyrdp-player` بدون وضع الرأس (`--headless`) أو `pyrdp-convert` لإخراج فيديو.
    
    تأكد من تثبيت `pipx`. على أوبونتو 22.04:```sh
    python3 -m pip install --user pipx
    python3 -m pipx ensurepath
    
    Windows

    تأكد من تثبيت Python. Windows Store Python لم يعمل معي على Windows 11. نوصي بتثبيت Python عبر Scoop.```sh scoop install python # if not installed already scoop install pipx pipx ensurepath

    root@kitploit:~
    سجّل الخروج ثم سجّل الدخول مرة أخرى (لتحديث متغير PATH).
    
    ##### أنظمة التشغيل الأخرى
    
    لتثبيت `pipx` على أنظمة التشغيل الأخرى، انظر هنا: <https://github.com/pypa/pipx#install-pipx>
    
    #### التثبيت
    
    لتجربة PyRDP الكاملة مع واجهة QT الرسومية والقدرة على تحويل التسجيلات إلى فيديو:```sh
    pipx install pyrdp-mitm[full]
    

    للإصدار المدمج الذي يُشغَّل في البيئات بدون واجهة رسومية (الخوادم، RaspberryPi):```sh pipx install pyrdp-mitm

    root@kitploit:~
    أنت جاهز للانطلاق! انظر إلى [تعليمات الاستخدام](#using-pyrdp).
    
    ### استخدام صورة Docker
    
    هذه هي أسهل طريقة للتثبيت إذا كان لديك docker مثبتًا ويعمل.```sh
    docker pull gosecure/pyrdp:latest
    

    كبديل، لدينا صورة أرق بدون GUI وتبعيات ffmpeg. هذه هي الصورة الوحيدة المتوفرة على منصات ARM.```sh docker pull gosecure/pyrdp:latest-slim

    root@kitploit:~
    يمكنك العثور على قائمة بجميع صور Docker الخاصة بنا [على صفحة gosecure/pyrdp على DockerHub](https://hub.docker.com/r/gosecure/pyrdp/tags).
    يشير الوسم `latest` إلى أحدث إصدار تم إصداره، بينما الوسم `devel` هو صورة Docker المبنية من فرعنا `main`.
    
    ## استخدام PyRDP
    
    ### استخدام PyRDP كوحش في الوسط
    
    استخدم `pyrdp-mitm <ServerIP>` أو `pyrdp-mitm <ServerIP>:<ServerPort>` لتشغيل MITM.
    
    بافتراض أن لديك خادم RDP يعمل على `192.168.1.10` ويستمع على المنفذ 3389، ستقوم بتشغيل:```sh
    pyrdp-mitm 192.168.1.10
    

    عند تشغيل MITM لأول مرة، سيتم إنشاء دليل باسم pyrdp_output/ نسبة إلى دليل العمل الحالي. فيما يلي مثال على تخطيط ذلك الدليل:```sh pyrdp_output/ ├── certs │   ├── WinDev2108Eval.crt │   └── WinDev2108Eval.pem ├── files │   ├── e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c │   ├── b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 ├── filesystems │   ├── romantic_kalam_8214773 │   │   └── device1 │   │   └── clipboard | └── priv-esc.exe -> ../../../files/b14b26b7d02c85e74ab4f0d847553b2fdfaf8bc616f7c3efcc4771aeddd55700 │   └── happy_stonebraker_1992243 │   ├── device1 │   └── device2 | └── Users/User/3D Objects/desktop.ini -> ../../../../../../e91c6a5eb3ca15df5a5cb4cf4ebb6f33b2d379a3a12d7d6de8c412d4323feb4c ├── logs │   ├── crawl.json │   ├── crawl.log │   ├── mitm.json │   ├── mitm.log │   ├── mitm.log.2021-08-26 │   ├── ntlmssp.log │   ├── player.log │   └── ssl.log └── replays ├── rdp_replay_20231214_01-20-28_965_happy_stonebraker_1992243.pyrdp └── rdp_replay_20231214_00-42-24_295_romantic_kalam_8214773.pyrdp

    root@kitploit:~
    * `certs/` تحتوي على الشهادات المُنشأة والمخزنة باستخدام الاسم الشائع `CN` للشهادة كاسم الملف
    * `files/` تحتوي على جميع الملفات التي تم التقاطها ويتم إزالة التكرارات منها عن طريق حفظها باستخدام تجزئة SHA-256 للمحتوى كاسم الملف
    * `filesystems/` تحتوي على إعادة إنشاء لنظام ملفات الأهداف مصنفة حسب معرفات الجلسة.
       لتوفير المساحة في الجلسات المتشابهة، تكون الملفات روابط رمزية للملفات الفعلية الموجودة في `files/`.
    * `logs/` تحتوي على جميع السجلات المختلفة مع معظمها بتنسيق JSON ونص عادي:
      * `crawl`: سجل زاحف الملفات
      * `mitm`: السجل الرئيسي للوسيط MITM
      * `ntlmssp.log`: تجزئات NetNTLM التي تم التقاطها
      * `player.log`: سجل المشغل
      * `ssl.log`: الأسرار الرئيسية لـ TLS المخزنة بتنسيق متوافق مع Wireshark
    * `replays/` تحتوي على جميع جلسات PyRDP المسجلة سابقًا مع طوابع زمنية ومعرفات جلسة في اسم الملف
    
    #### تحديد المفتاح الخاص والشهادة
    
    إذا لم يعمل إنشاء المفتاح أو كنت ترغب في استخدام مفتاح وشهادة مخصصين، يمكنك تحديدهما باستخدام
    الوسيطتين `-c` و `-k`:```sh
    pyrdp-mitm 192.168.1.10 -k private_key.pem -c certificate.pem
    
    Monster-in-the-Middle Network Level Authentication (NLA) connections

    المصادقة على مستوى الشبكة (NLA) هي ميزة أمان متاحة منذ Windows Vista تضيف أمانًا لاتصالات RDP. تعتمد NLA على موفر دعم الأمان الجديد CredSSP ويشار إليه أحيانًا بهذا الاسم. الخادم الذي يفرض NLA يصعب مهاجمته. هناك ثلاث استراتيجيات مختلفة يمكن استخدامها:

    • الحصول على شهادة الخادم والمفتاح الخاص
    • استخدام ميزة إعادة توجيه المضيف
    • التقاط تجزئة NetNTLMv2 الخاصة بالعميل وتكسيرها
    Monster-in-the-Middle NLA

    إذا كان لدينا إمكانية الوصول إلى شهادة الخادم والمفتاح الخاص، يمكننا بنجاح تنفيذ هجوم MITM على RDP حتى إذا تم فرض NLA. قمنا بتوثيق هذا الهجوم في منشور مدونة الإصدار 1.0. التعليمات لاستخراج شهادة RDP والمفتاح الخاص متاحة على GitHub الخاص بنا.

    مع إمكانية الوصول إلى الشهادة والمفتاح الخاص، كل ما عليك فعله هو ضبط المصادقة على ssp عن طريق إضافة ذلك في سطر الأوامر pyrdp-mitm:```sh --auth ssp -c <certificate.pem> -k <private-key.pem>

    root@kitploit:~
    سيؤدي ذلك إلى تمكين إمكانية اعتراض الاتصالات التي تفرض NLA.
    
    ###### إعادة توجيه المضيف البديل عندما يفرض الخادم NLA
    
    ![رسم بياني يشرح إعادة توجيه NLA](https://assets.kitploit.com/production/public/readmes/2804/e74aa87cc1cfb892b9070fe387c9530e4e99973b2d780b72f6c118abf1ec8a5b.png)
    
    عندما يتصل PyRDP بخادم RDP الوجهة (1)، إذا كان هذا الخادم يفرض NLA فإن PyRDP (2) سيستبدل الاتصال للانتقال إلى مضيف آخر من اختيارك (3) بدلاً من ذلك.
    
    على سبيل المثال، يمكن استخدام هذا لإعادة التوجيه إلى خادم معروف بعدم فرض NLA، أو يمكنه حتى إعادة التوجيه إلى جهاز افتراضي تحت سيطرة المهاجم.
    
    لتفعيل هذه الميزة، حدد عنوان ومنفذ المضيف البديل كما يلي:```sh
    --nla-redirection-host 192.168.1.12 --nla-redirection-port 3389
    

    تم تقديم هذه الميزة في PyRDP 1.1.0.

    التقاط تجزئات NetNTLMv2

    تجزئات NetNTLMv2 مفيدة للمهاجم حيث يمكن كسرها بسهولة نسبية، مما يسمح للمهاجمين باستغلال الوصول الشرعي لـ RDP أو محاولة حشو بيانات الاعتماد. بدءًا من الإصدار 1.1.0، أصبح لدى PyRDP القدرة على التقاط تجزئات NetNTLMv2 للعميل عبر اتصال NLA (CredSSP) عن طريق إجراء التفاوض والتقاط رسائل مصادقة NTLMSSP. في الإصدار 1.2.0، تم توسيع هذا الدعم ليعمل حتى لو لم يكن لدينا شهادة الخادم والمفتاح الخاص، مما يعني أن الاتصال لن يتم اعتراضه بنجاح (MITM). هذا مشابه لما يفعله Responder مع RDP. يمكن العثور على تجزئة NetNTLMv2 الملتقطة في ملف السجل ntlmssp.log وهي منسقة بحيث يمكن لأدوات الكسر مثل John The Ripper أو hashcat قراءتها.

    تم وصف هذه التقنية بالتفصيل في منشور مدونة: التقاط تجزئات RDP NetNTLMv2: تفاصيل الهجوم ودليل تقني عملي

    هذه الميزة متوافقة مع --auth ssp ولكنها غير متوافقة مع --nla-redirection-host.

    الاتصال بمشغل PyRDP

    إذا كنت تريد رؤية اتصالات RDP المباشرة عبر مشغل PyRDP، فستحتاج إلى تحديد عنوان IP والمنفذ الذي يستمع عليه المشغل باستخدام الوسيطتين -i و -d. ملاحظة: وسيطة المنفذ اختيارية، المنفذ الافتراضي هو 3000.```sh pyrdp-mitm 192.168.1.10 -i 127.0.0.1 -d 3000

    root@kitploit:~
    ##### الاتصال بمشغل PyRDP عندما يكون MITM قيد التشغيل على خادم
    
    إذا كنت تشغل MITM على خادم ولا تزال ترغب في رؤية اتصالات RDP المباشرة، يجب عليك استخدام [إعادة توجيه المنفذ عن بُعد عبر SSH](https://www.booleanworld.com/guide-ssh-port-forwarding-tunnelling/) لإعادة توجيه منفذ على خادمك إلى منفذ المشغل على جهازك. بمجرد القيام بذلك، تمرر `127.0.0.1` والمنفذ المعاد توجيهه كوسائط إلى MITM. على سبيل المثال، إذا تم إعادة توجيه المنفذ 4000 على الخادم إلى منفذ المشغل على جهازك، فسيكون هذا هو الأمر المستخدم:
    
    

    $ python examples/mitm.py 127.0.0.1 4000

    root@kitploit:~
    pyrdp-mitm 192.168.1.10 -i 127.0.0.1 -d 4000
    ```
    #### تشغيل الأحمال على الاتصالات الجديدة
    
    يدعم PyRDP تشغيل أوامر وحدة التحكم أو أحمال PowerShell تلقائيًا عند إنشاء اتصالات جديدة.
    نظرًا لطبيعة RDP، تكون العملية تقنية بعض الشيء وغير موثوقة بنسبة 100% دائمًا. إليك كيفية عملها:
    
    1. انتظر حتى يتم مصادقة المستخدم.
    2. احظر إدخال/إخراج العميل لإخفاء الحمولة ومنع التداخل.
    3. أرسل تسلسلًا مزيفًا لـ Windows+R وقم بتشغيل `cmd.exe`.
    4. قم بتشغيل الحمولة كأمر وحدة تحكم واخرج من وحدة التحكم. إذا تم تكوين حمولة PowerShell، يتم تشغيلها باستخدام `powershell -enc <PAYLOAD>`.
    5. انتظر قليلاً للسماح بإكمال الحمولة.
    6. استعد إدخال/إخراج العميل.
    
    لكي يعمل هذا، تحتاج إلى تعيين 3 معاملات:
    
    - الحمولة
    - التأخير قبل بدء الحمولة
    - مدة الحمولة
    
    ##### تعيين الحمولة
    
    يمكنك استخدام أحد المعاملات التالية لتعيين الحمولة التي سيتم تشغيلها:
    
    - `--payload`، سلسلة تحتوي على أوامر وحدة التحكم
    - `--payload-powershell`، سلسلة تحتوي على أوامر PowerShell
    - `--payload-powershell-file`، مسار إلى برنامج PowerShell النصي
    
    ##### اختيار وقت بدء الحمولة
    
    في الوقت الحالي، لا يكتشف PyRDP وقت تسجيل دخول المستخدم.
    يجب عليك إعطاؤه مقدارًا من الوقت للانتظار قبل تشغيل الحمولة.
    بعد مرور هذا الوقت، سيرسل التسلسلات المزيفة للمفاتيح ويتوقع تشغيل الحمولة بشكل صحيح.
    للقيام بذلك، تستخدم المعامل `--payload-delay`. التأخير بالمللي ثانية.
    على سبيل المثال، إذا كنت تتوقع أن يقوم المستخدم بتسجيل الدخول خلال أول 5 ثوانٍ، يمكنك استخدام المعاملات التالية:```sh
    --payload-delay 5000
    ```
    يمكن جعل هذا أكثر دقة من خلال استغلال بعض الرسائل المتبادلة أثناء تهيئة RDPDR.
    اطلع على [هذه المشكلة](https://github.com/GoSecure/pyrdp/issues/98) إذا كنت مهتمًا بتحسين هذا الأمر.
    
    ##### اختيار وقت استئناف النشاط الطبيعي
    
    نظرًا لعدم وجود طريقة مباشرة لمعرفة متى توقفت وحدة التحكم عن التشغيل، يجب عليك إخبار PyRDP بالمدة التي تريد أن يتم خلالها حظر إدخال/إخراج العميل. نوصي بتعيين هذه المدة إلى أقصى وقت تتوقع أن تكون فيه وحدة التحكم التي تشغل حمولتك مرئية. بمعنى آخر، المدة التي تتوقع أن تستغرقها حمولتك لإكمالها.
    لتعيين مدة الحمولة، تستخدم الوسيطة `--payload-duration` مع مقدار زمني بالمللي ثانية.
    على سبيل المثال، إذا كنت تتوقع أن تستغرق حمولتك ما يصل إلى 5 ثوانٍ لإكمالها، فستستخدم الوسيطة التالية:
    
    ```
    $ pyrdp-mitrc [...] --payload-duration 5000 [...]
    ``````sh
    --payload-duration 5000
    ```
    سيؤدي هذا إلى حظر إدخال / إخراج العميل لمدة 5 ثوانٍ لإخفاء وحدة التحكم ومنع التداخل.
    بعد 5 ثوانٍ، يتم استعادة الإدخال / الإخراج إلى حالته الطبيعية.
    
    #### وسيطات MITM الأخرى
    
    قم بتشغيل `pyrdp-mitm --help` للحصول على قائمة كاملة بالوسيطات.
    
    ##### `--no-downgrade`
    
    هذه الوسيطة مفيدة عند تشغيل PyRDP في سيناريوهات Honeypot لتجنب بصمات الماسحات الضوئية.
    عند تمكين المفتاح، لن يقوم PyRDP بتخفيض الإضافات غير المدعومة وسيسمح بمرور حركة المرور بشفافية.
    على الأرجح لن يتمكن المشغل من إعادة تشغيل فيديو حركة المرور بنجاح، لكن القنوات المدعومة التالية يجب أن تظل قابلة للوصول:
    
    - تسجيل ضغطات المفاتيح
    - تحديثات موضع الماوس
    - الوصول إلى الحافظة (بشكل سلبي)
    - الوصول إلى محرك الأقراص (بشكل سلبي)
    
    هذه الميزة لا تزال قيد التطوير وبعض التخفيض غير قابل للتجنب حاليًا للسماح بإنشاء الاتصال.
    ما يلي لا يتأثر حاليًا بهذا المفتاح وسيظل معطلاً:
    
    - تشفير FIPS
    - بروتوكولات التشفير غير TLS
    - ضغط ClientInfo
    - ضغط القناة الافتراضية
    
    **ملاحظة**: إذا كانت إمكانية إعادة تشغيل الجلسة كاملةً في النهاية مهمة، فإن الحل الجيد هو تسجيل حركة مرور RDP الخام باستخدام Wireshark والاحتفاظ بمفاتيح TLS السرية الرئيسية. عندما يضيف PyRDP دعمًا لإضافات إضافية، سيصبح من الممكن استخراج ملف إعادة تشغيل RDP صالح من التقاط الشبكة الخام.
    
    ##### `--transparent`
    
    يخبر PyRDP بمحاولة تزوير عنوان IP المصدر للعميل بحيث يرى الخادم عنوان IP الحقيقي بدلاً من عنوان MITM. هذا الخيار مفيد فقط في سيناريوهات معينة حيث يكون MITM فعليًا بوابة بين العملاء والخادم ويرى كل حركة المرور.
    [يمكن العثور على أمثلة محددة هنا.](https://github.com/gosecure/pyrdp/blob/main/docs/transparent-proxy.md)
    
    **ملاحظة**: يتطلب هذا امتيازات الجذر، ويعمل فقط على Linux ويتطلب تكوين جدار حماية يدوي لضمان توجيه حركة المرور بشكل صحيح.
    
    ##### `--no-gdi`: إلغاء تسريع خط أنابيب الرسومات
    
    يقوم PyRDP بتخفيض الفيديو إلى أحدث خط أنابيب رسومات يدعمه. هذا المفتاح يخبر MITM صراحةً بعدم استخدام إضافات [تسريع واجهة جهاز الرسومات][gdi] لدفق الفيديو. ميزة هذا الوضع هي تقليل كبير في عرض النطاق الترددي المطلوب للاتصالات عالية الدقة.
    
    لاحظ أن بعض أوامر الرسم GDI غير منفذة حاليًا لأنها تبدو غير مستخدمة. إذا كان لديك إعادة تشغيل تحتوي على أي أمر غير مدعوم أو غير مُختبر، فلا تتردد في مشاركته مع القائمين على المشروع حتى تتم إضافة الدعم حسب الحاجة. (تأكد من أن التتبع لا يحتوي على معلومات حساسة)
    
    [gdi]: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpegdi/745f2eee-d110-464c-8aca-06fc1814f6ad
    
    ### استخدام مشغل PyRDP
    
    استخدم `pyrdp-player` لتشغيل المشغل.
    
    #### تشغيل ملف إعادة تشغيل
    
    يمكنك استخدام القائمة لفتح ملف إعادة تشغيل جديد: File > Open.
    
    يمكنك أيضًا فتح ملفات إعادة التشغيل عند تشغيل المشغل:```sh
    pyrdp-player <FILE1> <FILE2> ...
    ```
    #### الاستماع للاتصالات الحية
    
    يستمع اللاعب دائمًا للاتصالات الحية. بشكل افتراضي، منفذ الاستماع هو 3000، ولكن يمكن تغييره:```sh
    pyrdp-player -p <PORT>
    ```
    #### تغيير عنوان الاستماع
    
    افتراضيًا، يستمع المشغل فقط للاتصالات القادمة من الجهاز المحلي. لا نوصي بفتح المشغل لأجهزة أخرى. إذا كنت لا تزال ترغب في تغيير عنوان الاستماع، يمكنك القيام بذلك باستخدام `-b`:```sh
    pyrdp-player -b <ADDRESS>
    ```
    #### وسائط المشغل الأخرى
    
    قم بتشغيل `pyrdp-player --help` للحصول على القائمة الكاملة للوسائط.
    
    ### استخدام أداة استنساخ الشهادات PyRDP
    
    ملاحظة: استخدام هذه الأداة اختياري.
    منذ الإصدار 1.0، يقوم PyRDP بإنشاء الشهادات بشكل فوري تمامًا كما تفعل هذه الأداة.
    
    تقوم أداة استنساخ شهادات PyRDP بإنشاء شهادة X509 جديدة تمامًا باستخدام القيم من شهادة خادم RDP موجود.
    تتصل بخادم RDP، وتنزل شهادته، وتنشئ مفتاحًا خاصًا جديدًا وتستبدل المفتاح العام والتوقيع للشهادة باستخدام المفتاح الخاص الجديد.
    يمكن استخدام هذا في اختبار الاختراق إذا، على سبيل المثال، كنت تحاول خداع مستخدم شرعي ليمر عبر MITM الخاص بك.
    استخدام شهادة تبدو وكأنها شهادة شرعية يمكن أن يزيد من معدل نجاحك.
    
    #### استنساخ شهادة
    
    يمكنك استنساخ شهادة باستخدام `pyrdp-clonecert`:```sh
    pyrdp-clonecert 192.168.1.10 cert.pem -o key.pem
    ```
    المعامل `-o` يحدد اسم المسار لاستخدامه للمفتاح الخاص المُنشأ.
    
    #### استخدام مفتاح خاص مخصص
    
    إذا كنت ترغب في استخدام مفتاح خاص خاص بك بدلاً من إنشاء مفتاح جديد:```sh
    pyrdp-clonecert 192.168.1.10 cert.pem -i input_key.pem
    ```
    #### وسائط cloner الأخرى
    
    قم بتشغيل `pyrdp-clonecert --help` للحصول على قائمة كاملة بالوسائط.
    
    ### استخدام PyRDP Convert
    
    `pyrdp-convert` هو سكريبت مساعد يقوم بعدة تحويلات مفيدة من صيغ إدخال مختلفة إلى صيغ إخراج مختلفة.
    يتمتع السكريبت بأفضل فرصة للعمل على حركة المرور التي تم التقاطها بواسطة PyRDP بسبب ميزات بروتوكول RDP غير المدعومة التي قد تُستخدم في اتصال غير معترض.
    
    صيغ الإدخال التالية مدعومة:
    
    - التقاط الشبكة (PCAP) مع أسرار master TLS (أقل موثوقية)
    - التقاط الشبكة (PCAP) بصيغة Exported PDUs Layer 7 (أكثر موثوقية)
    - ملف إعادة التشغيل الذي تم إنشاؤه بواسطة PyRDP
    
    صيغ الإخراج التالية مدعومة:
    
    - ملف فيديو MP4
    - JSON: سلسلة من الأحداث منخفضة المستوى مسلسلة بصيغة JSON
    - ملف إعادة تشغيل متوافق مع `pyrdp-player`
    
    تتطلب التقاطات الشبكة المشفرة (TLS) توفير أسرار master TLS باستخدام `--secrets ssl.log`.```sh
    # Export the session coming client 10.2.0.198 to a .pyrdp file.
    pyrdp-convert --src 10.2.0.198 --secrets ssl.log -o path/to/output capture.pcap
    
    # Or as an MP4 video
    pyrdp-convert --src 10.2.0.198 --secrets ssl.log -o path/to/output -f mp4 capture.pcap
    
    # List the sessions in a network trace, along with the decryptable ones.
    pyrdp-convert --list-only capture.pcap
    ```
    ملاحظة: يتطلب تحويل MP4 مكتبة libavcodec و ffmpeg، لذا قد يتطلب خطوات إضافية على ويندوز.
    
    يمكن تصدير تتبعات الشبكة المفكوكة يدويًا من Wireshark عن طريق اختيار `File > Export PDUs` واختيار `OSI Layer 7`.
    
    أولاً، تأكد من أنك قمت بتكوين Wireshark لتحميل أسرار TLS:
    
    ![Configure TLS secrets log](https://assets.kitploit.com/production/public/readmes/2804/a1879de263d379e8ddd92a3136aa71696eed7b5e6d08627c235f1ae002bbdebd.png)
    
    بعد ذلك، قم بتصدير PDUs الطبقة 7 من OSI:
    
    ![Export OSI Layer 7](https://assets.kitploit.com/production/public/readmes/2804/1ad4cf5aac57e4c9cde86cd9e66ab816421d47e7700ff7a233171d0c9e651db1.png)
    
    واختياريًا، قم بتصفية التتبعة لتحتوي فقط على المحادثات (المحادثات) المهمة عن طريق تطبيق مرشح عرض والنقر على `File > Export Specified Packets...`
    
    ![Optionally filtering the exported trace](https://assets.kitploit.com/production/public/readmes/2804/5eec655f453a4ab364f63d6fa374ede3bfc66c17ba5b13671c362956bdae089b.png)
    
    الآن يمكن استخدام هذه التتبعة مباشرة في `pyrdp-convert`.
    
    ### تكوين PyRDP
    
    يتم معظم تكوين PyRDP عبر مفاتيح سطر الأوامر، ولكن من الممكن أيضًا استخدام ملف تكوين لبعض الإعدادات مثل تكوين السجل.
    
    توجد ملفات التكوين الافتراضية المستخدمة بواسطة PyRDP في [mitm.default.ini](https://github.com/gosecure/pyrdp/blob/main/pyrdp/mitm/mitm.default.ini) و [player.default.ini](https://github.com/gosecure/pyrdp/blob/main/pyrdp/player/player.default.ini). كلا الملفين موثقان بشكل شامل ويمكن استخدامهما كأساس لتكوين إضافي.
    
    في المستقبل هناك خطط لدعم جوانب أخرى من تكوين PyRDP من خلال ملفات التكوين هذه.
    
    ### الاستخدام المتقدم
    
    #### استخدام PyRDP كمكتبة
    
    إذا كنت مهتمًا بتجربة RDP وصنع أدواتك الخاصة، توجه إلى [قسم التوثيق](https://github.com/gosecure/pyrdp/blob/main/docs/README.md) للمزيد من المعلومات.
    
    #### استخدام PyRDP مع twistd
    
    تم تنفيذ مكون MITM في PyRDP أيضًا كإضافة twistd. يسمح لك ذلك بتشغيله في وضع التصحيح ويمنحك إمكانية الحصول على بيئة تصحيح تفاعلية (pdb) إذا أرسلت إشارة `SIGUSR2` إلى عملية twistd. راجع [توثيق twistd](https://github.com/gosecure/pyrdp/blob/main/docs/twistd.md) للمزيد من المعلومات.
    
    #### استخدام PyRDP مع Bettercap
    
    قمنا بتطوير وحدة Bettercap خاصة بنا، `rdp.proxy`، لاعتراض جميع اتصالات RDP على شبكة LAN معينة. اطلع على [هذا المستند](https://github.com/gosecure/pyrdp/blob/main/docs/bettercap-rdp-mitm.md) للمزيد من المعلومات.
    
    ### تعليمات الاستخدام الخاصة بـ Docker
    
    نظرًا لأن Docker يقيّد التفاعلات مع نظام المضيف (نظام الملفات والشبكة)، يجب تشغيل صورة Docker الخاصة بـ PyRDP مع بعض المعاملات حسب حالة الاستخدام الخاصة بك. يوثق هذا القسم تلك المعاملات.
    
    نشير إلى صورة Docker المتوفرة علنًا ولكن إذا [قمت ببناء صورتك الخاصة](https://github.com/gosecure/pyrdp/blob/main/docs/devel.adoc) فاستبدل `gosecure/pyrdp` باسم صورتك المبنية محليًا.
    
    #### تعيين منفذ استماع
    
    في معظم حالات الاعتراض (man-in-the-middle)، ستحتاج إلى تعيين منفذ من مضيفك إلى صورة Docker. يتم تحقيق ذلك عن طريق معاملات `--publish` (`-p`) المطبقة على `docker run`.
    
    على سبيل المثال، للاستماع على المنفذ 3389 (المنفذ الافتراضي لـ RDP) على جميع الواجهات، استخدم:
    
    ```
    ``````sh
    docker run -p 3389:3389 gosecure/pyrdp pyrdp-mitm 192.168.1.10
    ```
    #### تخزين السجلات والنتائج
    
    لتخزين مخرجات PyRDP بشكل دائم (السجلات والملفات وما إلى ذلك)، أضف الخيار `--volume` (`-v`) إلى الأمر السابق. في هذا المثال، نقوم بتخزين الملفات بالنسبة إلى الدليل الحالي في `pyrdp_output`:```sh
    docker run -v $PWD/pyrdp_output:/home/pyrdp/pyrdp_output -p 3389:3389 gosecure/pyrdp pyrdp-mitm 192.168.1.10
    ```
    تأكد من أن دليل الوجهة مملوك لمستخدم بمعرف UID يساوي 1000، وإلا ستواجه أخطاء رفض الإذن.
    إذا كنت المستخدم الوحيد غير الجذر (root) على النظام، فعادةً ما سيتم تعيين UID 1000 لمستخدمك.
    
    #### تسجيل عنوان IP للمضيف
    
    إذا كنت تريد أن يقوم PyRDP بتسجيل عنوان IP للمضيف في سجلاته، يمكنك تعيين متغير البيئة `HOST_IP` عند استخدام `docker run`:```sh
    docker run -p 3389:3389 -e HOST_IP=192.168.1.9 gosecure/pyrdp pyrdp-mitm 192.168.1.10
    ```
    #### استخدام مشغل الواجهة الرسومية في Docker
    
    يتطلب استخدام المشغل تصدير متغير البيئة `DISPLAY` من المضيف إلى الحاوية.
    يؤدي ذلك إلى توجيه واجهة المستخدم الرسومية للمشغل إلى شاشة المضيف.
    تحتاج أيضًا إلى تعريض شبكة المضيف ومنع Qt من استخدام ملحق الذاكرة المشتركة MIT-SHM X11.
    للقيام بذلك، أضف الخيارات `-e` و `--net` إلى أمر التشغيل:```sh
    docker run -e DISPLAY=$DISPLAY -e QT_X11_NO_MITSHM=1 --net=host gosecure/pyrdp pyrdp-player
    ```
    ضع في اعتبارك أن تعريض شبكة المضيف لـ docker يمكن أن يضر بالعزل بين الحاوية والمضيف.
    إذا كنت تخطط لاستخدام المشغل، فإن توجيه X11 عبر اتصال SSH سيكون وسيلة أكثر أمانًا.
    
    #### تحويل الفيديوهات في Docker
    
    تعتمد عملية تحويل الفيديو على PyAV و ffmpeg و QT لذا فأنت بحاجة إلى صورة docker العادية وليس الصورة النحيفة.
    
    تحتاج إلى ربط حجم (`-v`) لمشاركة الملفات مع الحاوية.
    هنا نقوم بتعيين دليلنا المحلي مع `/shared/` داخل الحاوية.```sh
    docker run -e QT_QPA_PLATFORM=offscreen -v $PWD/:/shared gosecure/pyrdp pyrdp-convert -f mp4 <filename-relative-to-volume-in-/shared/> -o /shared/
    ```
    The `QT_QPA_PLATFORM=offscreen` environment variable is required [due to a bug documented here](https://github.com/GoSecure/pyrdp/issues/428).
    It tells to QT that it is correct that no display environment is available.
    
    ## PyRDP Lore
    
    * [Introduction blog post](https://www.gosecure.net/blog/2018/12/19/rdp-man-in-the-middle-smile-youre-on-camera) in which we [demonstrated that we can catch a real threat actor in action](https://www.youtube.com/watch?v=eB7RC9FmL6Q)
    * [Talk at NorthSec 2019](https://docs.google.com/presentation/d/1avcn8Sh2b3IE7AA0G9l7Cj5F1pxqizUm98IbXUo2cvY/edit#slide=id.g404b70030f_0_581) where two demos were performed:
      * [First demo](https://youtu.be/5JztJzi-m48): credential logging, clipboard stealing, client-side file browsing and a session take-over
      * [Second demo](https://youtu.be/bU67tj1RkMA): the execution of cmd or powershell payloads when a client successfully authenticates
    * [PyRDP Logo](https://github.com/gosecure/pyrdp/blob/main/docs/pyrdp-logo.png) licensed under CC-BY-SA 4.0.
    * [BlackHat USA Arsenal 2019 Slides](https://docs.google.com/presentation/d/17P_l2n-hgCehQ5eTWilru4IXXHnGIRTj4ftoW4BiX5A/edit?usp=sharing)
    * [DerbyCon 2019 Slides](https://docs.google.com/presentation/d/1UAiN2EZwDcmBjLe_t5HXB0LzbNclU3nnigC-XM4neIU/edit?usp=sharing) ([Video](https://www.youtube.com/watch?v=zgt3N6Nrnss))
    * [Blog: PyRDP on Autopilot](https://www.gosecure.net/blog/2020/02/26/pyrdp-on-autopilot-unattended-credential-harvesting-and-client-side-file-stealing/)
    * [Blog: PyRDP 1.0](https://www.gosecure.net/blog/2020/10/20/announcing-pyrdp-1-0/)
    * [DefCon 2020 Demo Labs](https://www.youtube.com/watch?v=1q2Eo3x3u0g)
    * [Blog: Capturing RDP NetNTLMv2 Hashes: Attack details and a Technical How-To Guide](https://www.gosecure.net/blog/2022/01/17/capturing-rdp-netntlmv2-hashes-attack-details-and-a-technical-how-to-guide/)
    * [BlackHat USA Arsenal 2021 Slides](https://gosecure.github.io/presentations/2021-08-05_blackhat-usa/BlackHat-USA-21-Arsenal-PyRDP-OlivierBilodeau.pdf)
    * [Presentation: I Watched You Roll the Die: Unparalleled RDP Monitoring Reveal Attackers' Tradecraft](http://i.blackhat.com/BH-US-23/Presentations/US-23-Bilodeau-I-Watched-You-Roll-the-Die-Unparalleled-RDP-Monitoring.pdf) at BlackHat USA 2023
    
    ## Contributing to PyRDP
    
    See our [contribution guidelines](https://github.com/gosecure/pyrdp/blob/main/CONTRIBUTING.md).
    
    ## Acknowledgements
    
    PyRDP uses code from the following open-source software:
    
    - [RC4-Python](https://github.com/bozhu/RC4-Python) for the RC4 implementation.
    - [rdesktop](https://github.com/rdesktop/rdesktop) for bitmap decompression.
    - [rdpy](https://github.com/citronneur/rdpy) for RC4 keys, the bitmap decompression bindings and the base GUI code for
    the PyRDP player.
    - [FreeRDP](https://github.com/FreeRDP/FreeRDP) for the scan code enumeration.
    
    تنزيل الأداة