dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻譯準備中
使用 eBPF 捕獲 SSL/TLS 明文,無需 CA 憑證。支援 Linux/Android 核心的 amd64/arm64 架構。
AI 翻譯
Capturing SSL/TLS plaintext without a CA certificate using eBPF. Supported on Linux/Android kernels for amd64/arm64.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
eCapture(旁观者): capture SSL/TLS text content without a CA certificate using eBPF. Supports Linux/Android on x86_64 (kernel 4.18+) and aarch64 (kernel 5.5+). Kernel version requirements apply per CPU architecture for both Linux and Android. Need ROOT permission or specific Linux capabilities. Does not support Windows and macOS system.檢視完整 README ↗
[!IMPORTANT] Supports Linux on x86_64 (kernel 4.18+), aarch64 (kernel 5.5+), and LoongArch64
loong64(kernel 6.6+). Android supports x86_64 and aarch64 with the existing kernel minimums. Requires root privileges or specific Linux capabilities. Does not support Windows or macOS.
[!TIP] Supports Linux on x86_64, aarch64, and LoongArch64; Android supports x86_64 and aarch64.
Download the ELF binary package from the releases page, extract it, and run:
sudo ecapture --help
[!TIP] Linux only.
# 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
⚠️ Security note:
--privileged=truegrants full host access. For production use, prefer specific capabilities instead. See the Minimum Privileges Guide.
See Docker Hub for more information.
sudo ecapture tls
eCapture automatically detects the system's OpenSSL library and starts capturing plaintext traffic. When you make an HTTPS request, such as curl https://google.com, the captured request and response are displayed:
...
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"
...
📄 For complete output examples, see docs/example-outputs.md.
The eCapture tool includes 8 modules that can capture plaintext data from TLS/SSL libraries such as OpenSSL, GnuTLS, NSS/NSPR, BoringSSL, and GoTLS. It also supports auditing commands and queries from Bash, MySQL, and PostgreSQL applications.
You can use ecapture -h to view the full list of subcommands.
eCapture searches the default library paths from /etc/ld.so.conf to locate shared libraries and detect the OpenSSL library location. You can also set the library path explicitly with the --libssl flag.
If the target program is statically linked, you can set the program path directly as the value of the --libssl flag.
The OpenSSL module supports three output modes:
pcap/pcapng mode stores encrypted network packets and TLS secrets in pcap-NG format.keylog/key mode saves TLS handshake keys to a file.text mode captures plaintext through function hooks by default, or reconstructs complete HTTP/1.1 and HTTP/2 messages from live pcapng and DSB data with --text-source=pcapng.For OpenSSL, GoTLS, and GnuTLS, --eventaddr is the uniform primary event
destination. It accepts stdout, a plain path or file:// URI,
tcp://host:port, and ws:///wss:// (ordered binary frames). The mode
selects text, NSS Key Log, or pcapng representation; the address selects only
the transport. --keylogfile and --pcapfile remain compatible primary-file
aliases in their respective modes. Setting --eventaddr together with the
corresponding alias is an error. In pcapng mode, --keylogfile is a separate
optional keylog artifact.
Use -m text --text-source=pcapng with tls, gotls, or gnutls to reconstruct complete
HTTP/1.1 and HTTP/2 messages from the captured network stream. Each message
includes direction, timestamp, IP/port tuple, connection identity, and an
HTTP/2 stream ID when applicable. host comes from the HTTP Host header or
HTTP/2 :authority; domain_source="server_ip" marks a fallback to the
server IP. Output goes to --eventaddr (stdout by default). Raw pcapng and a
standalone keylog are disabled by default; specify --pcapfile or
--keylogfile to save either artifact.
sudo ecapture tls -m text --text-source=pcapng -i eth0 --eventaddr /tmp/http.events 'tcp port 443'
sudo ecapture gotls -m text --text-source=pcapng --elfpath /path/to/go-client -i eth0 --pcapfile /tmp/raw.pcapng 'tcp port 443'
sudo ecapture gnutls -m text --text-source=pcapng --gnutls /path/to/libgnutls.so -i eth0 'tcp port 443'
The decryptor waits for TLS secrets that may appear in a DSB after the corresponding packets. The pcapng text source supports TCP TLS with HTTP/1.1 or HTTP/2 payloads; it does not emit generic TLS records or QUIC/HTTP/3.
To verify the source independently, add --pcapfile /tmp/raw.pcapng to the
capture command and send a request with a unique path or response token. After
stopping eCapture, run tshark -n -r /tmp/raw.pcapng -o tls.keylog_file: -q -z follow,tls,ascii,0 and compare the request and response with the text output.
The empty keylog setting makes tshark use the DSB embedded in that pcapng.
The optional file receives the same pcapng bytes as the live SDK stream.
--logaddr carries eCapture runtime logs only. Console runtime logs use
stderr, while captured stdout contains only event bytes. eCaptureQ is additive:
enabling it does not replace --eventaddr or --logaddr.
Supports TLS-encrypted HTTP 1.0/1.1/2.0 over TCP and HTTP/3 (QUIC) over UDP.
You can specify -m pcap or -m pcapng together with --pcapfile and -i. The current compatible default value of --pcapfile is save.pcapng.
sudo ecapture tls -m pcap -i eth0 --pcapfile=ecapture.pcapng tcp port 443
This command saves captured plaintext packets as a pcapng file, which can be opened with Wireshark.
📄 For complete pcapng mode output, see docs/example-outputs.md.
You can specify -m keylog or -m key together with the --keylogfile option. The current compatible default output file is ecapture_openssl_key.log.
The captured OpenSSL TLS master secret is saved to --keylogfile. You can also enable tcpdump capture and then open the file in Wireshark, setting the master secret path to view plaintext packets.
sudo ecapture tls -m keylog -keylogfile=openssl_keylog.log
You can also use tshark for real-time decryption and display:
tshark -o tls.keylog_file:ecapture_masterkey.log -Y http -T fields -e http.file_data -f "port 443" -i eth0
sudo ecapture tls -m text
This outputs all plaintext data packets.
Similar to the OpenSSL module.
gotls commandCapture TLS plaintext data.
Step 1:
sudo ecapture gotls --elfpath=/home/cfc4n/go_https_client --hex
Step 2:
/home/cfc4n/go_https_client
sudo ecapture gotls -h
Modules such as bash, mysqld, and postgres can also be used. You can view the full list with ecapture -h.
eCaptureQ is a cross-platform graphical client for eCapture that visualizes eBPF-based TLS capture capabilities. Built with Rust + Tauri + React, it provides a responsive, real-time interface for analyzing encrypted traffic without needing a CA certificate. It simplifies complex eBPF capture workflows and makes them easier to use.
It supports two modes:
https://github.com/user-attachments/assets/c8b7a84d-58eb-4fdb-9843-f775c97bdbfb
For details of the Protobuf log schema used by eCapture/eCaptureQ, see:
See CONTRIBUTING for details on submitting patches and the contribution workflow.
You can customize the features you want, such as setting the uprobe offset address to support statically linked OpenSSL libraries. Refer to the compilation guide for detailed instructions.
Loong64 releases are cross-built on Ubuntu 24.04 x86_64 with LLVM 18. Use
TARGET_ARCH=loong64; the sysroot, BTF, verification steps, and current runtime
validation limits are documented in Loong64 build and validation.
After eCapture is running, you can dynamically modify configurations through HTTP interfaces. Refer to the HTTP API documentation.
eCapture supports multiple event-forwarding methods. You can forward events to packet capture software such as Burp Suite. For details, refer to the Event Forwarding API documentation.