#pcap #packet #regex #string-search #packet-analyzer #sniffing #ascii-text

bin+lib pktstrings

类似于 Unix 'strings' 命令,但具有数据包感知能力

9 个稳定版本

1.4.1 2024 年 2 月 15 日
1.4.0 2023 年 6 月 17 日
1.3.0 2023 年 4 月 6 日
1.2.0 2023 年 1 月 20 日
1.0.1 2022 年 12 月 31 日

#662网络编程

每月 35 次下载

MIT 许可证

225KB
839

pktstrings

build status lint status crate license crate version

是否曾在 PCAP 上运行过 strings 并发现一些有趣的内容,但又因无法确定是哪个数据包中发生的而感到沮丧?

Pktstrings 类似于 Unix strings 命令,但具有数据包感知能力。

它会在您的 PCAP 中找到任何看起来像是 ASCII 字符串的内容,并输出字符串所在的包号以及 IP 5 元组(如果不是 IP,则显示 MACs + Ethertype)。

image

构建前需要 libpcap 头文件(请参阅 依赖项)。

功能

  • 支持离线 PCAP 和实时网络捕获。
  • 使用 BPF 表达式过滤要分析的包。
  • 在尝试查找字符串之前对包进行正则表达式过滤。
  • 带有本地缓存的 DNS 解析器(使用 --feature resolve 启用选项)。
  • 支持 Grep 友好(默认)和复制友好(-b--block-print)输出选项。
  • 支持 802.1Q 网络;如果存在,显示 VLAN ID 和 IP。

依赖项

Pktstrings 使用 pcap crate,因此需要在构建之前安装 libpcap(在 Windows 上为 Npcap/WinPcap)。遵循 pcap crate 提供的说明以获取适合您系统的正确安装说明。

https://github.com/rust-pcap/pcap#installing-dependencies

安装

从 crates.io 安装二进制文件:cargo install pktstrings

使用可选的 DNS 解析器标志(-r, --resolve-dns)安装:cargo install pktstrings --features=resolve

要禁用颜色输出进行安装:cargo install pktstrings --features=bland

从克隆的源安装:cargo install --path .

运行

默认安装位置是 ~/.cargo/bin/pktstrings。运行 pktstrings 并使用 -h 获取帮助和可用选项。

关于 BPF 和正则表达式

Pktstrings 提供两种方法在转储字符串时过滤输出噪音:BPF 表达式和正则表达式。应优先选择 BPF 表达式,因为它们是迄今为止削减到感兴趣数据包最快的方法。然而,有时能够执行自由形式的搜索而不是固定位置的搜索很有用;因此,pktstrings 也支持正则表达式作为进一步过滤到只包含感兴趣数据包的方法。基于正则表达式的过滤将整个数据包数据传递给 Rust 的 regex 引擎使用 regex::bytes crate;这意味着我们不仅可以匹配字符串表达式,还可以匹配数据包数据中的任意字节。用户提供的表达式具有隐式的 .*?

BPF 和正则表达式过滤器仅作为执行字符串搜索之前的一个预过滤阶段。一旦数据包匹配这些过滤器,数据将按照常规进行 ASCII 字符串转储。

示例

仅转储包含特定字符串的数据包中的字符串:pktstrings -f my_capture.pcap -s 'CTF_FLAG{.+}'

在本地网络上查找 mDNS 交谈:pktstrings -'udp port 5353'

到本地运行 HTTP 服务器的基本认证登录:pktstrings --'tcp port 80' -'POST.+login.php'

设置特定 cookie 的 HTTP 响应数据包:pktstrings -.pcap ---'ip src 192.168.1.100 and tcp port 80' -'Set-Cookie:.+\b[Dd]omain=.*some-http-server.com'

包含任意字节模式后跟有效UTF-8编码字符串的分组:pktstrings -f my_capture.pcap -s '(?-u)\x7b\xa9(?:[\x80-\xfe]|[\x40-\xff].)(?u:(.*))'

待办事项(可能)

  • 其他字符串编码
  • 支持更多协议
  • 全面支持PCAPNG

依赖项

~4–16MB
~155K SLoC