5个不稳定版本

0.5.1 2020年6月20日
0.5.0 2020年5月11日
0.4.0 2020年4月13日
0.3.1 2020年4月9日
0.3.0 2020年4月8日

#58 in #ssl

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

依赖项

~2.6–4MB
~80K SLoC