查看原文
其他

eCapture v0.7.4发布,支持Pcap Filter包过滤语法

CFC4N 榫卯江湖
2024-09-09

eCapture是什么

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

超强特性 :Pcap Filter 包过滤

eCapture v0.7.4版本发布支持Pcap Filter Syntax[2],你可以像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[3]大神贡献,感谢他春节期间的付出。详情见:feat: Support pcap-filter expression for pcap mode #478[4]

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

依赖

  • elibpcap[5]
  • cbpfc[6]
  • ebpfmanager v0.4.5[7] (eBPF bytecode InstructionPatchers)

下载

eCapture v0.7.4 下载地址[8]

参考资料
[1]

eCapture旁观者: https://ecapture.cc

[2]

Pcap Filter Syntax: https://www.tcpdump.org/manpages/pcap-filter.7.html

[3]

Leon Hwang: https://github.com/asphaltt

[4]

feat: Support pcap-filter expression for pcap mode #478: https://github.com/gojue/ecapture/pull/478

[5]

elibpcap: https://github.com/jschwinger233/elibpcap

[6]

cbpfc: github.com/cloudflare/cbpfc

[7]

ebpfmanager v0.4.5: https://github.com/gojue/ebpfmanager

[8]

eCapture v0.7.4 下载地址: https://github.com/gojue/ecapture/releases/v0.7.4


                                                                             2024年2月25日 高铁G26

个人观点,仅供参考
继续滑动看下一个
榫卯江湖
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存