
eBPF के साथ SSL/TLS plaintext कैप्चर करें—बिना MITM प्रॉक्सी या कस्टम CA इंस्टॉलेशन के। x86_64 और arm64 पर Linux और Android का समर्थन करता है।
eCapture (旁观者)
eBPF के साथ SSL/TLS प्लेनटेक्स्ट कैप्चर करें—बिना MITM प्रॉक्सी या कस्टम CA इंस्टॉलेशन के।
English · 汉字
[!IMPORTANT] x86_64 (कर्नेल 4.18+), aarch64 (कर्नेल 5.5+), और LoongArch64
loong64(कर्नेल 6.6+) पर Linux का समर्थन करता है। Android मौजूदा न्यूनतम कर्नेल के साथ x86_64 और aarch64 का समर्थन करता है। इसके लिए रूट विशेषाधिकार या विशिष्ट Linux क्षमताएँ आवश्यक हैं। Windows या macOS का समर्थन नहीं करता।
[!TIP] x86_64, aarch64, और LoongArch64 पर Linux का समर्थन करता है; Android x86_64 और aarch64 का समर्थन करता है।
releases पेज से 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 लाइब्रेरी को स्वचालित रूप से पहचानता है और plaintext ट्रैफ़िक को कैप्चर करना शुरू कर देता है। जब आप कोई 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 मॉड्यूल शामिल हैं जो OpenSSL, GnuTLS, NSS/NSPR, BoringSSL और GoTLS जैसी TLS/SSL लाइब्रेरीज़ से सादा टेक्स्ट डेटा कैप्चर कर सकते हैं। यह Bash, MySQL और PostgreSQL अनुप्रयोगों से कमांड और क्वेरीज़ का ऑडिटिंग भी समर्थित करता है।
सभी सबकमांड की पूरी सूची देखने के लिए आप ecapture -h का उपयोग कर सकते हैं।
eCapture साझा लाइब्रेरीज़ का पता लगाने और OpenSSL लाइब्रेरी का स्थान ज्ञात करने के लिए /etc/ld.so.conf से डिफ़ॉल्ट लाइब्रेरी पथों में खोज करता है। आप --libssl फ़्लैग के साथ लाइब्रेरी पथ को स्पष्ट रूप से भी सेट कर सकते हैं।
यदि लक्ष्य प्रोग्राम स्थिर रूप से लिंक किया गया है, तो आप प्रोग्राम पथ को सीधे --libssl फ़्लैग के मान के रूप में सेट कर सकते हैं।
OpenSSL मॉड्यूल तीन कैप्चर मोड का समर्थन करता है:
pcap/pcapng मोड कैप्चर किए गए सादा टेक्स्ट डेटा को pcap-NG प्रारूप में संग्रहीत करता है।keylog/key मोड TLS हैंडशेक कुंजियों को एक फ़ाइल में सहेजता है।text मोड सादा टेक्स्ट डेटा को सीधे कैप्चर करता है, या तो उसे किसी फ़ाइल में लिखकर या कंसोल पर प्रिंट करके।OpenSSL, GoTLS और GnuTLS के लिए, --eventaddr एकसमान प्राथमिक इवेंट
गंतव्य है। यह stdout, एक सादा पथ या file:// URI,
tcp://host:port, और ws:///wss:// (क्रमबद्ध बाइनरी फ़्रेम) स्वीकार करता है। मोड
टेक्स्ट, NSS Key Log, या pcapng निरूपण चुनता है; पता केवल
ट्रांसपोर्ट चुनता है। --keylogfile और --pcapfile अपने संबंधित मोड में संगत प्राथमिक-फ़ाइल
उपनाम बने रहते हैं। --eventaddr को संबंधित उपनाम के साथ
सेट करना एक त्रुटि है। pcapng मोड में, --keylogfile एक अलग
वैकल्पिक keylog आर्टिफ़ैक्ट है।
--logaddr केवल eCapture रनटाइम लॉग ले जाता है। कंसोल रनटाइम लॉग
stderr का उपयोग करते हैं, जबकि कैप्चर किया गया stdout केवल इवेंट बाइट्स शामिल करता है। eCaptureQ योगात्मक है:
इसे सक्षम करने से --eventaddr या --logaddr प्रतिस्थापित नहीं होते।
TCP पर TLS-एन्क्रिप्टेड HTTP 1.0/1.1/2.0 और UDP पर HTTP/3 (QUIC) का समर्थन करता है।
आप --pcapfile और -i के साथ -m pcap या -m pcapng निर्दिष्ट कर सकते हैं। --pcapfile का वर्तमान संगत डिफ़ॉल्ट मान save.pcapng है।
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443