
التقاط النص الصريح لـ SSL/TLS باستخدام eBPF—دون وسيط MITM أو تثبيت شهادة CA مخصصة. يدعم Linux وAndroid على x86_64 وarm64.
eCapture (旁观者)
التقاط نص SSL/TLS الصريح باستخدام eBPF—دون وسيط MITM أو تثبيت شهادة CA مخصصة.
English · 汉字
[!IMPORTANT] يدعم Linux على x86_64 (نواة 4.18+)، وaarch64 (نواة 5.5+)، وLoongArch64
loong64(نواة 6.6+). يدعم Android معماريتي x86_64 وaarch64 بالحد الأدنى الحالي للنواة. يتطلب صلاحيات الجذر أو قدرات Linux محددة. لا يدعم Windows أو macOS.
[!TIP] يدعم Linux على x86_64 وaarch64 وLoongArch64؛ ويدعم Android معماريتي x86_64 وaarch64.
نزّل حزمة ELF الثنائية من صفحة الإصدارات، وفك ضغطها، ثم شغّل:
sudo ecapture --help
[!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 لمزيد من المعلومات.
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 ثماني وحدات يمكنها التقاط البيانات النصية الصريحة من مكتبات TLS/SSL مثل OpenSSL وGnuTLS وNSS/NSPR وBoringSSL وGoTLS. كما تدعم تدقيق الأوامر والاستعلامات من تطبيقات Bash وMySQL وPostgreSQL.
يمكنك استخدام ecapture -h لعرض القائمة الكاملة للأوامر الفرعية.
تبحث eCapture في مسارات المكتبات الافتراضية من /etc/ld.so.conf لتحديد موقع المكتبات المشتركة واكتشاف موقع مكتبة OpenSSL. يمكنك أيضًا تعيين مسار المكتبة صراحةً باستخدام العلامة --libssl.
إذا كان البرنامج الهدف مرتبطًا ارتباطًا ثابتًا، يمكنك تعيين مسار البرنامج مباشرةً كقيمة للعلامة --libssl.
تدعم وحدة OpenSSL ثلاثة أوضاع للالتقاط:
pcap/pcapng يخزّن بيانات النص الصريح الملتقطة بصيغة pcap-NG.keylog/key يحفظ مفاتيح مصافحة TLS في ملف.text يلتقط بيانات النص الصريح مباشرةً، إما بكتابتها إلى ملف أو بطباعتها إلى الطرفية.بالنسبة إلى OpenSSL وGoTLS وGnuTLS، تُعدّ --eventaddr وجهة الحدث الأساسية الموحّدة. وهي تقبل stdout، أو مسارًا عاديًا أو URI بصيغة file://، أو tcp://host:port، أو ws:///wss:// (إطارات ثنائية مرتبة). يحدد الوضع تمثيل text أو NSS Key Log أو pcapng؛ بينما يحدد العنوان النقل فقط. تظل --keylogfile و--pcapfile أسماء بديلة متوافقة للملف الأساسي في أوضاعهما المعنية. تعيين --eventaddr مع الاسم البديل المقابل يُعدّ خطأً. في وضع pcapng، تكون --keylogfile أثرًا اختياريًا منفصلًا لسجل المفاتيح.
تحمل --logaddr سجلات وقت تشغيل eCapture فقط. تستخدم سجلات وقت التشغيل في الطرفية stderr، بينما يحتوي stdout الملتقط على بايتات الأحداث فقط. إن eCaptureQ إضافي: تفعيله لا يستبدل --eventaddr أو --logaddr.
يدعم HTTP المشفّر بـ TLS بإصدارات 1.0/1.1/2.0 عبر TCP وHTTP/3 (QUIC) عبر UDP.
يمكنك تحديد -m pcap أو -m pcapng مع --pcapfile و-i. القيمة الافتراضية المتوافقة الحالية لـ --pcapfile هي save.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
يحفظ هذا الأمر حزم النص العادي الملتقطة كملف pcapng، والذي يمكن فتحه باستخدام Wireshark.
📄 للحصول على مخرجات كاملة بوضع pcapng، راجع docs/example-outputs.md.
يمكنك تحديد -m keylog أو -m key مع خيار --keylogfile. ملف الإخراج الافتراضي المتوافق الحالي هو ecapture_openssl_key.log.
يُحفظ السر الرئيسي لـ OpenSSL TLS الملتقط في --keylogfile. يمكنك أيضًا تمكين التقاط tcpdump ثم فتح الملف في Wireshark، مع تعيين مسار السر الرئيسي لعرض حزم النص العادي.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
يمكنك أيضًا استخدام tshark لفك التشفير والعرض في الوقت الفعلي: