Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mitm-proxy-ja3-ja4 — وكيل MITM لـ HTTP بلغة Rust قابل للتكوين مع انتحال بصمة TLS وHTTP/2 وTCP. | Kitploit
أدوات/GitHubGitHub/3radiance/mitm-proxy-ja3-ja4
التقاط وتحليل الحزمأدوات التشفير/فك التشفيربروكسيات الويب والاعتراضأمن الويبأمن الشبكاتالخصوصيةالأدوات والمكوناتزاحف الويبمكافحة الروبوتاتانتحال البصمة الرقمية
GitHub3radiance/mitm-proxy-ja3-ja4
558منذ 22 أياملم تتم المراجعة بعد

mitm-proxy-ja3-ja4

وكيل MITM لـ HTTP بلغة Rust قابل للتكوين مع انتحال بصمة TLS وHTTP/2 وTCP.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

mitm-proxy-ja3-ja4

English | Русский

وكيل MITM لبروتوكول HTTP مبني باستخدام Rust وtokio وbtls.

أُعيدت كتابة هذا المشروع بالكامل للاستفادة من btls (BoringSSL) من أجل قدرات متقدمة في أخذ بصمات TLS. أصبحت طبقة أخذ بصمات TLS (JA3/JA4) قابلة للانتحال بالكامل الآن — فحزم التشفير والمنحنيات وخوارزميات التوقيع وALPN وحد حجم السجل وضغط الشهادات وGREASE وتبديل/ترتيب الامتدادات وOCSP stapling وشفافية الشهادات (SCT) وتذاكر الجلسة وALPS وEncrypted Client Hello (ECH، الذي يُحلّ مباشرةً عبر DoH، مع الرجوع إلى GREASE) كلها تُدار عبر ملف تعريف YAML. كما أن أخذ بصمات HTTP/2 (Akamai) وترتيب/إعادة كتابة ترويسات HTTP/1.1 قابلان للتهيئة بالكامل. وأخذ بصمات TCP (الطبقة L4) متاح أيضاً: إذ تُعاد كتابة حزم SYN للاتصالات الصادرة في NFQUEUE (TTL وحجم النافذة وMSS ومقياس النافذة وعلم DF والطوابع الزمنية والترتيب الدقيق لخيارات TCP وعلامات لكل نطاق) مع إدارة تلقائية لـ iptables.

تهيئة انتحال بصمة TLS

TLS

تهيئة انتحال بصمة HTTP/2

HTTP/2

تهيئة انتحال بصمة TCP

TCP

الميزات (التنفيذ الحالي)

  • MITM (رجل في المنتصف) — اعتراض شفاف لـ HTTPS. يستخدم rcgen لإصدار الشهادات وتوقيعها ديناميكياً أثناء التشغيل، مع تخزينها مؤقتاً عبر moka لتحسين الأداء.

  • تكامل BoringSSL — يستخدم btls وtokio-btls للتعامل مع مصافحة TLS واعتراض MITM.

  • انتحال بصمة TLS (JA3/JA4) — مكتمل. يُبنى اتصال TLS الصادر بالكامل من ملف تعريف YAML يُمرَّر عبر -c / --config <path> (انظر config.yaml للاطلاع على التنسيق):

    • حزم التشفير، بترتيب صارم يحدده المستدعي.
    • المنحنيات الإهليلجية.
    • خوارزميات التوقيع.
    • تفاوض ALPN بناءً على البروتوكول الذي يختاره الخادم الصادر فعلياً.
    • حد حجم السجل.
    • ضغط الشهادات (brotli وzlib وzstd) مع دعم حقيقي لفك الضغط.
    • GREASE.
    • الترتيب الدقيق لامتدادات TLS في ClientHello، أو تبديل عشوائي على نمط Chrome.
    • مفاتيح تشغيل OCSP stapling وشفافية الشهادات (SCT) وتذكرة الجلسة وALPS (إعدادات بروتوكول طبقة التطبيق).
    • Encrypted Client Hello (ECH) — يُحلّ إعداد ECH الحقيقي مباشرةً عبر DoH (البحث عن سجلات HTTPS/SVCB) لكل مضيف صادر، باستخدام ملف تعريف بصمة TLS/HTTP2 نفسه لطلب DoH ذاته؛ ويرجع إلى ECH GREASE (أو لا شيء) عند عدم العثور على إعداد، وهو قابل للتهيئة بشكل مستقل — راجع TLS.md للتفاصيل.
  • تفاوض ALPN بأولوية الخادم الصادر — يُنشئ الوكيل اتصال TLS ويتفاوض عليه مع الخادم الصادر قبل إكمال مصافحة TLS من جهة المتصفح. ثم يُستخدم بروتوكول ALPN الذي اختاره الخادم الصادر لتهيئة مستقبِل TLS من جهة العميل، مما يمنع المتصفح من اختيار بروتوكول لا يدعمه الاتصال الصادر.

  • انتحال بصمة HTTP/2 (Akamai) — أخذ بصمات HTTP/2 قابل للتهيئة بالكامل عبر ملف تعريف YAML:

    • قيم SETTINGS الخاصة بـ HTTP/2 والترتيب الدقيق لـ SETTINGS.
    • تحديثات نافذة التحكم في التدفق على مستوى الاتصال.
    • معرّف التدفق الأولي القابل للتهيئة مع حساب تلقائي عند تهيئة إطارات الأولوية.
    • إطارات أولوية HTTP/2 وأولوية ترويسة الطلب.
    • موضع END_STREAM القابل للتهيئة للطلبات الفارغة.
    • ترتيب الترويسات الزائفة (pseudo-headers).
    • ترتيب ترويسات HTTP.
    • استبدال ترويسات HTTP وإضافتها وإزالتها.
    • تمرير جسم الطلب والاستجابة بشكل متدفق دون تخزين الجسم كاملاً في الذاكرة المؤقتة.
    • دعم مقطورات HTTP/2 (trailers).
  • انتحال ترويسات HTTP/1.1 — ترتيب ومحتوى ترويسات قابلان للتهيئة لاتصالات HTTP/1.1 الصادرة العادية (عندما لا يتفاوض ALPN على h2)، بما يعكس نفس دلالات التجاوز/الإزالة المستخدمة في HTTP/2.

  • انتحال بصمة TCP (الطبقة L4) — مكتمل. تُؤخذ بصمات اتصالات الصادرة على مستوى الحزمة عبر Linux NFQUEUE (src/tcp_fingerprint/):

    • إعادة كتابة SYN: TTL، حجم النافذة، علم DF، MSS / قيم توسيع النافذة، تبديل الطابع الزمني، ترتيب خيارات TCP الدقيق (أو تصحيح القيم في مكانها عندما لا يكون هناك ترتيب محدد)، مع إعادة حساب المجموع الاختباري.
  • تصحيح TTL/DF فقط في قائمة انتظار التدفقات القائمة (مدعوم حد قفزات IPv6)؛ يحصل كل حزمة على حكم Accept افتراضيًا حتى لا تتوقف قوائم الانتظار أبدًا.

  • التوجيه القائم على SO_MARK إلى ملفات تعريف TCP لكل نطاق، وإدارة تلقائية لـ iptables (تُدرج في الأعلى فوق أدوات مثل zapret/nfqws، مع إزالة التكرار، وتُزال عند الإيقاف بـ Ctrl+C) مع أمان --queue-bypass.

  • راجع TCP.md وكتلة tcp في config.yaml.

  • دعم وكيل HTTP الوسيط — يمكنه تمرير الاتصالات عبر وكيل HTTP وسيط باستخدام طريقة CONNECT.

  • توجيه الملفات الشخصية لكل نطاق — مرّر -d / --domain <path> مع خريطة من أنماط النطاقات إلى طبقات جزئية من الملف الشخصي (راجع domain.yaml). تُطابَق كل اتصال بواسطة SNI (مطابق تمامًا → *.root → *.label.* → label.* → الملف الشخصي الأساسي) ويُخدم بإعدادات TCP/TLS/HTTP2/HTTP1/upstream الخاصة به، مبنية مسبقًا مرة واحدة عند بدء التشغيل. يجب تحديد الحقول التي تختلف عن الملف الشخصي الأساسي فقط؛ ويُورَّث كل شيء آخر.

  • غير متزامن — مبني على tokio لإدخال/إخراج غير متزامن عالي الأداء وغير حاجب.

المتطلبات

  • Rust (إصدار 2021)
  • Linux (مطلوب لميزات NFQUEUE L4)
  • صلاحيات الجذر أو cap_net_admin,cap_net_raw=+eip (لـ SO_MARK وربط NFQUEUE وiptables التلقائي؛ بدونها اضبط "auto_iptables": false في كتلة tcp وطبّق قواعد mangle يدويًا — راجع TCP.md)
  • Firefox مع Multi-Account Containers (يُنصح به بشدة للاستفادة من بصمات متعددة في آنٍ واحد)

التسجيل

يستخدم الوكيل tracing مع تصفية لكل وحدة عبر RUST_LOG.

أمثلة:

RUST_LOG='H2=error' cargo run --release -- -c profile.yaml
RUST_LOG='TCP=debug,H2=error,TLS=warn' cargo run --release -- -c profile.yaml
RUST_LOG='CA=info,TLS=warn,H2=error' cargo run --release -- -c profile.yaml

الوسوم المدعومة هي نفس أسماء الوحدات المستخدمة في الكود: TCP، HTTP، H1، H2، TLS، CA، ECH، CFG، IPT، NFQUEUE، Runtime.

تتضمن أسطر السجل طابعًا زمنيًا افتراضيًا، مما يسهّل ربط جلسات تصحيح الأخطاء ببعضها.

التثبيت والاستخدام

1. البناء

git clone https://github.com/3Radiance/mitm-proxy-ja3-ja4.git
cd mitm-proxy-ja3-ja4
cargo build --release

2. التشغيل

جميع الإعدادات — المنفذ، والوكيل الوسيط (upstream proxy)، ومسارات ملفات CA — موجودة في إعدادات YAML التي تُمرَّر عبر -c / --config <path>. لا توجد خيارات سطر أوامر --port / --upstream.

config: 
  port: 9090
  upstream_proxy: "127.0.0.1:10808"
  cert: "/path/to/ca.crt"
  key: "/path/to/ca.key"

للتشغيل دون وكيل وسيط علوي، اضبط upstream_proxy: null.

cargo run --release -- --config profile.yaml
# or
cargo run --release -- -c profile.yaml

عند التشغيل الأول، إذا لم يكن cert/key موجودين بعد، فسيقوم الوكيل بإنشاء ملفات CA في المسارات المُهيأة:

  • ca.crt — شهادة CA الجذرية. يجب عليك استيرادها إلى Firefox/متصفحك والوثوق بها لتحديد مواقع الويب.
  • ca.key — المفتاح الخاص لـ CA.

3. تجاوزات لكل نطاق (اختياري)

cargo run --release -- -c profile.yaml -d domain.yaml

domain.yaml يربط أنماط النطاقات بتراكبات جزئية — فقط الحقول التي تختلف عن الملف الشخصي الأساسي:

"browserleaks.com":
  config:
    upstream_proxy: null
  tls:
    enable_ech: false

"*.google.com":
  tls:
    enable_ech: true

"tls.peet.ws":
  tcp:
    mark: "0x11"
    ttl: 100
    window_size: 64130
    mss: 1400
    window_scale: 7
    dont_fragment: true
    timestamp: false
    tcp_options_order:
      - mss
      - sack_perm
      - wscale
      - nop

"mail.google.*":
  tls:
    curves: 
    - X25519
    - P-256

تنزيل الأداة