
وكيل MITM بدون واجهة رسومية، قابل للبرمجة النصية، ويعتمد على سطر الأوامر، مصمم لاعتراض حركة مرور الشبكة وتحليلها وتعديلها على أنظمة ويندوز.

أداة MITM بروكسي بدون واجهة رسومية، قابلة للبرمجة عبر سطر الأوامر، مصممة لاعتراض حركة مرور الشبكة وتحليلها وتعديلها على أنظمة Windows. تعمل بطريقة مشابهة للبروكسيات ذات الواجهات الرسومية المعيارية في المجال، لكنها محسّنة لبيئات الأتمتة، والتشغيل بدون واجهة رسومية، والتكامل مع مسارات العمل التطويرية.
ملاحظة: هذه أداة قائمة بذاتها ودون اعتماديات خارجية، مطبَّقة باستخدام Node.js.
PacketPirate هي أداة اعتراض شبكة على مستوى النظام. من خلال الاستفادة من إعدادات وكيل HTTP في Windows، يمكنها التقاط حركة المرور من أي تطبيق يعمل على جهازك—بما في ذلك متصفحات الويب (Chrome, Edge)، وأدوات سطر الأوامر (curl, git)، وتطبيقات سطح المكتب (Spotify, VS Code, Discord).
الاعتراض الشامل على مستوى النظام: يلتقط حركة مرور HTTP/HTTPS من أي عملية تحترم وكيل النظام.
إدراك العمليات: تحديد التطبيق الذي يولّد حركة المرور بدقة.
محرك قواعد ديناميكي: قابل للتهيئة عبر JSON لتنفيذ إجراءات محددة على حركة المرور المطابقة (مثل استخراج الرموز، وتسجيل الطلبات).
تسجيل كامل لحركة المرور: قادر على تفريغ أجسام الطلبات والاستجابات الكاملة (HTML, JSON, Binary) لتحليلها.
بنية بدون واجهة رسومية: يعمل بالكامل من سطر الأوامر، وهو مناسب للخدمات الخلفية وخطوط اختبار الأتمتة.
إدارة شهادات مخصصة: يتضمن أدوات لتوليد واعتماد مراجع تصديق جذرية ذاتية التوقيع لفك تشفير HTTPS.
استنسخ المستودع وقم بتهيئة البيئة:
# 1. توليد شهادات SSL محلية
npm run setup
# 2. اعتماد المرجع المصدق الجذر المُولّد
npm run trust
# ملاحظة: يتطلب موافقة إدارية لإضافة الشهادة إلى مخزن الجذور الموثوقة.
شغّل خادم البروكسي:
npm start
يؤدي هذا إلى تشغيل واجهة سطر الأوامر القياسية.
توفر القائمة التفاعلية عناصر التحكم التالية:
code.exe حصريًا).Bearer في ترويسات Authorization.jsonl منظمة.يتم تعريف منطق الاعتراض في config/rules.json. يتيح هذا الملف تهيئة دائمة لمعالجة حركة المرور.
المخطط:
{
"rules": [
{
"name": "Description of rule",
"host": "hostname.match",
"urlPattern": "regex_pattern",
"action": "log | save_token",
"outputFile": "path/to/output.txt",
"tokenFilter": "regex_filter"
}
]
}
مثال:
{
"rules": [
{
"name": "Test API",
"host": "jsonplaceholder.typicode.com",
"action": "save_token",
"outputFile": "test_tokens.txt"
}
]
}
تستخدم الأداة بنية خادم مزدوج:
CONNECT الأولي وينفّذ تصفية المضيفين.EADDRINUSE ويزيد رقم المنفذ حتى يجد منفذًا حرًا.SIGINT/SIGTERM لضمان التراجع عن إعدادات الوكيل عند الخروج، مما يمنع حدوث مشكلات في الاتصال بالشبكة.تعتمد الأداة على نموذج شهادة مزدوج لاعتراض HTTPS:
npm run setup بإنشاء مرجع تصديق جذري ذاتي التوقيع (PacketPirateRoot).
New-SelfSignedCertificate في PowerShell لتوليد زوج مفاتيح صالح لمدة 5 سنوات.src/certs/server.pfx (بصيغة PKCS#12) بكلمة المرور "headless".npm run trust بحقن هذا المرجع المصدق الجذر في مخزن CurrentUser\Root الخاص بنظام Windows.
CurrentUser بدلاً من LocalMachine، نحدّ من نطاق الثقة لملف تعريف المستخدم الخاص بك، مما يقلل المخاطر على مستوى النظام.security.enterprise_roots.enabled) لاحترام مخزن ثقة Windows.npm run untrust عملية إزالة نظيفة.
هذا المشروع مثال عملي على برمجة الأنظمة باستخدام Node.js. إنه يتجاوز خوادم الويب النمطية ليتفاعل مع نظام التشغيل وحزمة الشبكة على مستوى أدنى.
participant App as Application (VS Code)
participant OS as Windows OS
participant Proxy as Proxy Server
participant MITM as MITM Server
participant Web as Internet
Note over App,Proxy: 1. Plain HTTP Tunneling
App->>Proxy: CONNECT google.com:443
Proxy-->>App: 200 Connection Established
Note over Proxy,MITM: 2. The "Hand-Off" Trick
Proxy->>MITM: Pipe socket data (raw encrypted bytes)
Note over App,MITM: 3. TLS Handshake and Decryption
MITM-->>App: ServerHello (signed by local root CA)
App->>MITM: Encrypted request (GET /)
Note over MITM: 4. Interception Logic
MITM->>MITM: Decrypt → Inspect headers → Log
Note over MITM,Web: 5. Upstream Forwarding
MITM->>Web: New HTTPS request (GET /)
Web-->>MITM: Response
MITM-->>App: Response

لا يمكن لوحدة http القياسية في Node.js التعامل مع طلب CONNECT (المستخدم في أنفاق HTTPS) وحركة مرور HTTPS العادية على نفس مثيل الخادم بسهولة.
CONNECT الأولي. ويعمل كأنبوب TCP بسيط.netstat)كيف نعرف أي تطبيق يرسل حركة المرور؟ لا تحمل حزم TCP نفسها "معرف عملية" عليها.
netstat -ano لمعرفة العملية (PID) التي تملك المنفذ 54321.نستخدم التدفقات (Streams) في Node.js للتعامل مع البيانات بكفاءة. بدلاً من انتظار اكتمال تنزيل الاستجابة كاملة (10MB) قبل عرضها، نقوم بـ"تفرعة" التدفق:
PassThrough، مما يتيح المراقبة في الوقت الفعلي مع حد أدنى من زمن الاستجابة الإضافي.GNU GPL v3.0
FriendlyName