eCapture是什么

eCapture旁观者一个无需CA证书,无侵入的HTTPS/TLS明文抓包工具。可以在Linux 4.18以上版本使用,同时也支持Android arm64 5.5以上版本。项目在2022年4月发布,目前7900颗星。

超强特性 :Pcap Filter 包过滤

eCapture v0.7.4版本发布支持Pcap Filter Syntax,你可以像tcpdump一样使用pcap filter表达式来过滤网络包。

tlsgotls模块中,当运行模式参数-mpcap时,支持pcap filter表达式。在命令行最后的参数中设定,例如:

sudo bin/ecapture tls -m pcap -i ens160 -w a.pcapng host 1.1.1.1 or src port 443
[sudo] password for cfc4n:
tls_2024/02/25 07:23:27 ECAPTURE :: ecapture Version : linux_aarch64:0.7.3-20240222-f50b9de:[CORE]
tls_2024/02/25 07:23:27 ECAPTURE :: Pid Info : 884394
tls_2024/02/25 07:23:27 ECAPTURE :: Kernel Info : 5.15.131
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    module initialization
tls_2024/02/25 07:23:27 ECAPTURE :: Module.Run()
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL:   Pcapng MODEL
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    OpenSSL/BoringSSL version not found from shared library file, used default version:linux_default_3_0
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    HOOK type: 2, binrayPath: /usr/lib/aarch64-linux-gnu/libssl.so.3
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    PcapFilter: host 1.1.1.1 or src port 443
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    Ifname: ens160, Ifindex: 2
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    Hook masterKey function: [SSL_get_wbio SSL_in_before SSL_do_handshake]
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    target all process.
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    target all users.
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL:   BPF bytecode filename:user/bytecode/openssl_3_0_0_kern.o
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    saving pcapng file: /home/cfc4n/project/ecapture/a.pcapng
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL:   perfEventReader created. mapSize:4 MB
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL:   perfEventReader created. mapSize:4 MB
tls_2024/02/25 07:23:27 EBPFProbeOPENSSL    module started successfully.
tls_2024/02/25 07:23:27 ECAPTURE ::     start 1 modules

eCapture 指令图解

很多同学对ecapture的使用方式不了解,eCapture的module模块mode模式两个功能点经常混淆,运行出错后,文档不看,help命令也不看。遇到问题后,直接到公众号问我,弄得我很头大。
这次也按照思维导图的方式,简单画个图解,以便更直观地熟悉eCapture。

在个别Android的发行版上,pcap filter过滤语法可能没有效果,未来会修复。

技术原理

本功能由Leon Hwang大神贡献,感谢他春节期间的付出。 详情见:feat: Support pcap-filter expression for pcap mode #478

  1. libpcap 编译 pcap filter 表达式的过滤内容为cbpf字节码
  2. cbpf字节码转为ebpf字节码
  3. ebpf字节码插入到eCapture的TC HOOK字节码中
  4. 由内核加载全部eBPF字节码,实现表达式过滤

依赖

elibpcap
cbpfc
ebpfmanager v0.4.5 (eBPF bytecode InstructionPatchers)

下载

eCapture v0.7.4 下载地址

知识共享许可协议CFC4N的博客CFC4N 创作,采用 知识共享 署名-非商业性使用-相同方式共享(3.0未本地化版本)许可协议进行许可。基于https://www.cnxct.com上的作品创作。转载请注明转自:ecapture v0.7.4发布,支持Pcap FIlter包过滤语法