1 个不稳定版本

0.5.0 2023 年 4 月 15 日

#5#ja3

BSD-3-Clause

24KB
389

ja3-rs

crates.io Build Status Documentation license

一个用 Rust 编写的简单的 JA3 TLS 指纹库。

这个crate允许消费者指纹 TLS 握手的 ClientHello 部分。它可以对 IPv4 和 IPv6 的 TLS 握手进行哈希处理。它高度依赖于 Rusticata 的 tls-parser 项目

它支持从数据包捕获文件生成指纹,以及从网络接口的实时捕获,两者都使用 libpcap。

有关更多信息,请参阅原始的 JA3 项目

数据包捕获文件指纹示例

use ja3::Ja3;

let mut ja3 = Ja3::new("test.pcap")
                    .process_pcap()
                    .unwrap();

// Now we have a Vec of Ja3Hash objects
for hash in ja3 {
    println!("{}", hash);
}

实时捕获指纹示例

use ja3::Ja3;

let mut ja3 = Ja3::new("eth0")
                    .process_live()
                    .unwrap();
while let Some(hash) = ja3.next() {
    println!("Hash: {}", hash);
}

基准测试

命令 平均值 [ms] 最小值 [ms] 最大值 [ms] 相对
ja3 huge-cap.pcap 153.2 ± 2.3 149.8 157.2 34.85 ± 2.82
./target/release/examples/ja3huge-cap.pcap 4.4 ± 0.3 3.6 5.5 1.00

依赖项

~4.5–7MB
~123K SLoC