1 个不稳定版本

0.1.0 2023 年 11 月 8 日

#7 in #sniffing

MIT 许可证

19KB
344

pulso

A simple metrics collector for TCP/IP. Counts new connection events by source IP and port.

设计目标

  • 小资源占用
  • 最小化接口
  • 干净且经过测试

功能

  • IP 地址被哈希(可通过 privacy 功能标志禁用)
  • 支持 IPV6

依赖项

为什么

我想用 Rust 来实践。同样的功能可能可以用 tcpdumpawk/ag/lnav 实现。这不是一个强大的工具,只是一个基础。

安装

克隆仓库并 cargo install(假设已安装 libpcap)。

对于 Linux,发布目录中包含 MUSL 二进制文件。

您需要给予读取套接字的权限 sudo setcap cap_net_raw=eip /path/to/pulso

使用

TCP connection counter

Usage: pulso [OPTIONS] --device <DEVICE>

Options:
  -d, --device <DEVICE>                      device name
  -c, --connection-limit <CONNECTION_LIMIT>  max connections
  -t, --time-limit <TIME_LIMIT>              max seconds
  -h, --help                                 Print help
  -V, --version                              Print version

Environment Variables:
  PULSO_SECRET    (required) encryption key used for sensitive information

通过设置 RUST_LOG 环境变量,将日志输出到标准错误流。

示例

在 10 个连接后生成摘要

tar xvfz releases/x86_64-unknown-linux-musl/pulso_0.1.0.tar.gz
sudo setcap cap_net_raw=eip ./pulso
PULSO_SECRET=foo ./pulso -d lo -c 10
# 2da25a664b49c9b5:10 9306:9 9056:1

显示所有日志并在 1 分钟后生成摘要

RUST_LOG=info PULSO_SECRET=test pulso -d eth0 -t 60

有关预期功能的更完整说明,请参阅集成测试。

开发

该项目几乎功能完整。我还没有部署它。我怀疑我不会再投入更多精力,但在野外测试后可能会发布新版本。

cargomake test

依赖项

~13–28MB
~368K SLoC