العودة إلى التحديثات
UpdatedOct 4, 2026

ecapture — Updated!

التقاط النص الصريح لـ SSL/TLS بدون شهادة CA باستخدام eBPF. مدعوم على أنوية Linux/Android لـ amd64/arm64.

مشاركة
eCapture Logo

汉字 | English

GitHub stars GitHub forks CI GitHub Version

eCapture (旁观者): التقاط حركة مرور SSL/TLS بنص صريح دون شهادة CA باستخدام eBPF.

[!IMPORTANT] يدعم Linux وAndroid على x86_64 (نواة 4.18+) وaarch64 (نواة 5.5+). ينطبق متطلب النواة لكل معمارية CPU لكل من Linux وAndroid. يتطلب صلاحيات root أو قدرات Linux محددة. لا يدعم Windows أو macOS.


مقدمة

  • يلتقط حركة مرور TLS/SSL بنص صريح من مكتبات OpenSSL وLibreSSL وBoringSSL وGnuTLS وNSS/NSPR.
  • يدعم التقاط النص الصريح لبرامج Go TLS، بما في ذلك حركة مرور HTTPS/TLS في تطبيقات Go.
  • يدقق في سجل أوامر bash وzsh لمراقبة أمان المضيف.
  • يدقق في استعلامات MySQL ويدعم MySQL 5.6/5.7/8.0 وMariaDB.

بدء الاستخدام

التنزيل

ملف ELF الثنائي

[!TIP] يدعم Linux/Android على x86_64 وaarch64.

قم بتنزيل حزمة ELF الثنائية من صفحة الإصدارات، واستخرجها، ثم شغّل:

sudo ecapture --help

صورة Docker

[!TIP] Linux فقط.

# Pull the Docker image
docker pull gojue/ecapture:latest

# Run it
docker run --rm --privileged=true --net=host -v ${HOST_PATH}:${CONTAINER_PATH} gojue/ecapture ARGS

⚠️ ملاحظة أمنية: يمنح --privileged=true وصولاً كاملاً إلى المضيف. للاستخدام في بيئة الإنتاج، يُفضّل استخدام قدرات محددة بدلاً من ذلك. راجع دليل الحد الأدنى من الصلاحيات.

راجع Docker Hub لمزيد من المعلومات.

التقاط بيانات OpenSSL بنص صريح

sudo ecapture tls

يكتشف eCapture تلقائيًا مكتبة OpenSSL في النظام ويبدأ في التقاط حركة المرور بنص صريح. عند إجراء طلب HTTPS، مثل curl https://google.com، يتم عرض الطلب والاستجابة الملتقطين:

...
INF module started successfully. moduleName=EBPFProbeOPENSSL
??? UUID:233851_233851_curl_5_1_172.16.71.1:51837, Name:HTTP2Request, Type:2, Length:304
header field ":method" = "GET"
header field ":path" = "/"
header field ":authority" = "google.com"
...

📄 للحصول على أمثلة كاملة للمخرجات، راجع docs/example-outputs.md.

الوحدات

تتضمن أداة eCapture 8 وحدات يمكنها التقاط البيانات بنص صريح من مكتبات TLS/SSL مثل OpenSSL وGnuTLS وNSS/NSPR وBoringSSL وGoTLS. كما تدعم تدقيق الأوامر والاستعلامات من تطبيقات Bash وMySQL وPostgreSQL.

  • bash: يلتقط أوامر bash
  • zsh: يلتقط أوامر zsh
  • gnutls: يلتقط النص الصريح من مكتبات GnuTLS دون الحاجة إلى شهادة CA
  • gotls: يلتقط الاتصالات بنص صريح من برامج Go التي تستخدم TLS/HTTPS
  • mysqld: يلتقط استعلامات SQL من MySQL 5.6/5.7/8.0 وMariaDB
  • nss: يلتقط النص الصريح من مكتبات NSS/NSPR دون الحاجة إلى شهادة CA
  • postgres: يلتقط استعلامات SQL من PostgreSQL 10+
  • tls: يلتقط حركة مرور TLS/SSL بنص صريح دون الحاجة إلى شهادة CA (يدعم OpenSSL 1.0.x/1.1.x/3.0.x والإصدارات الأحدث)

يمكنك استخدام ecapture -h لعرض القائمة الكاملة للأوامر الفرعية.

وحدة OpenSSL

يبحث eCapture في مسارات المكتبات الافتراضية من /etc/ld.so.conf لتحديد موقع المكتبات المشتركة واكتشاف موقع مكتبة OpenSSL. يمكنك أيضًا تعيين مسار المكتبة صراحةً باستخدام العلامة --libssl.

إذا كان البرنامج الهدف مرتبطًا بشكل ثابت، يمكنك تعيين مسار البرنامج مباشرةً كقيمة للعلامة --libssl.

تدعم وحدة OpenSSL ثلاثة أوضاع للالتقاط:

  • وضع pcap/pcapng يخزّن البيانات الملتقطة بنص صريح بصيغة pcap-NG.
  • وضع keylog/key يحفظ مفاتيح مصافحة TLS في ملف.
  • وضع text يلتقط البيانات بنص صريح مباشرةً، إما بكتابتها إلى ملف أو طباعتها على الطرفية.

وضع Pcap

يدعم HTTP 1.0/1.1/2.0 المشفّر بـ TLS عبر TCP وHTTP/3 (QUIC) عبر UDP.

يمكنك تحديد -m pcap أو -m pcapng مع --pcapfile و-i. القيمة الافتراضية لـ --pcapfile هي ecapture_openssl.pcapng.

sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443

يحفظ هذا الأمر الحزم الملتقطة بنص صريح في ملف pcapng، والذي يمكن فتحه باستخدام Wireshark.

📄 للحصول على المخرجات الكاملة لوضع pcapng، راجع docs/example-outputs.md.

وضع Keylog

يمكنك تحديد -m keylog أو -m key مع خيار --keylogfile. ملف الإخراج الافتراضي هو ecapture_masterkey.log.

يتم حفظ السر الرئيسي (master secret) لـ OpenSSL TLS الملتقط في --keylogfile. يمكنك أيضًا تمكين التقاط tcpdump ثم فتح الملف في Wireshark، وتعيين مسار السر الرئيسي لعرض الحزم بنص صريح.

sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log

يمكنك أيضًا استخدام tshark لفك التشفير والعرض في الوقت الفعلي:

tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0

وضع Text

sudo ecapture tls -m text

يُخرج هذا جميع حزم البيانات بنص صريح.

وحدة GoTLS

مشابهة لوحدة OpenSSL.

أمر gotls

التقاط بيانات TLS بنص صريح.

الخطوة 1:

sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex

الخطوة 2:

/home/cfc4n/go_https_client

مزيد من المساعدة

sudo ecapture gotls -h

وحدات أخرى

يمكن أيضًا استخدام وحدات مثل bash وmysqld وpostgres. يمكنك عرض القائمة الكاملة باستخدام ecapture -h.

مقاطع فيديو

تطبيق eCaptureQ بواجهة رسومية

eCaptureQ هو عميل رسومي متعدد المنصات لـ eCapture يعرض بصريًا قدرات التقاط TLS المعتمدة على eBPF. مبني باستخدام Rust + Tauri + React، ويوفر واجهة تفاعلية في الوقت الفعلي لتحليل حركة المرور المشفرة دون الحاجة إلى شهادة CA. يبسّط سير عمل التقاط eBPF المعقد ويجعله أسهل في الاستخدام.

يدعم وضعين:

  • الوضع المدمج: تنفيذ موحّد على Linux/Android
  • الوضع البعيد: عملاء Windows/macOS/Linux يتصلون بخدمة eCapture عن بُعد

تمرير الأحداث

مشاريع تمرير الأحداث

عرض توضيحي بالفيديو

https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb

🔗 مستودع GitHub

بروتوكولات Protobuf

للحصول على تفاصيل مخطط سجل Protobuf المستخدم بواسطة eCapture/eCaptureQ، راجع:

المتابعون عبر الوقت

الفئات