12个稳定版本

2.8.0 2024年6月24日
2.7.1 2023年11月6日
2.7.0 2023年10月8日
2.5.0 2023年7月24日
1.0.0 2022年5月18日

#1104网络编程 中排名

Download history 33/week @ 2024-04-25 17/week @ 2024-05-02 64/week @ 2024-05-09 147/week @ 2024-05-16 48/week @ 2024-05-23 39/week @ 2024-05-30 39/week @ 2024-06-06 63/week @ 2024-06-13 243/week @ 2024-06-20 62/week @ 2024-06-27 123/week @ 2024-07-04 55/week @ 2024-07-11 59/week @ 2024-07-18 106/week @ 2024-07-25 94/week @ 2024-08-01 69/week @ 2024-08-08

每月 下载 337
用于 rpltree

MIT/Apache许可证

105KB
1.5K SLoC

rtshark

Crate Crate Crate Documentation dependency status

这是对著名网络协议分析器TShark的Rust接口。 TShark 是Wireshark发行版的一部分。这个crate提供了一个API来启动TShark并分析其输出。它允许您从实时网络捕获数据包或从之前保存的捕获文件中读取数据包,并打印这些数据包的解码形式。TShark的本地捕获文件格式是pcapng格式,这也是Wireshark和其它工具使用的格式。

为了使这个crate正常工作,必须安装TShark应用程序。

这个crate支持离线处理(使用pcap文件)和实时分析(使用接口或fifo)。

示例

// Creates a builder with needed tshark parameters
let builder = rtshark::RTSharkBuilder::builder()
    .input_path("/tmp/my.pcap");

// Start a new tshark process
let mut rtshark = builder.spawn()
    .unwrap_or_else(|e| panic!("Error starting tshark: {e}"));

// read packets until the end of the PCAP file
while let Some(packet) = rtshark.read().unwrap_or_else(|e| {
    eprintln!("Error parsing tshark output: {e}");
    None
}) {
    for layer in packet {
        println!("Layer: {}", layer.name());
        for metadata in layer {
            println!("\t{}", metadata.display());
        }
    }
}

开发规则

新参数

实际上没有具体的工作要添加更多的TShark参数。如果您错过了一个重要的参数,您可以创建一个问题。但如果您希望快速添加某些内容,请提出缺少的参数或功能(这很容易!)的补丁建议。当然,任何新的建议都应该包含说明如何使用它的文档和一个单元测试来验证它。

版本

这个库遵循语义版本控制规则 https://semver.org/,包括

  • 只有当您增加主版本时才进行破坏性更改。不要破坏构建。
  • 在修补版本中不要添加任何新的公共API(不要添加任何新的pub)。如果您添加任何新的pub结构体、特质、字段、类型、函数、方法或其他内容,请始终增加次版本号。

致谢

非常感谢Emmanuel Touzery创建了 Hotwire。这个crate的核心部分来自这个工具。

许可证

许可证为以下之一

任选。

贡献

除非你明确表示,否则根据Apache-2.0许可证定义,你有意提交以包含在本作品中的任何贡献,将根据上述方式双重许可,没有任何额外的条款或条件。

依赖项

约2.5MB
约39K SLoC