6 个版本
0.2.5 | 2023 年 1 月 7 日 |
---|---|
0.2.4 | 2023 年 1 月 4 日 |
0.2.2 | 2022 年 12 月 22 日 |
0.1.0 |
|
#3 in #多线程
每月 36 次下载
4.5MB
816 行
Nasoone-lib
这是一个用于收集网络数据和生成报告的多线程 Rust 库。它在 Nasoone 中使用。
报告形式如下
source ip; source port; destination ip; destination port; protocols; first; last; bytes; packets
其中 源 IP
、源端口
、目标 IP
和 目标端口
唯一标识一个连接(它们就像报告的主键)。其他字段提供了有关该连接的信息
协议
是连接中使用的协议列表(通常是 UDP 和 TCP 之间的一种,但可能是两种都使用)first
和last
是检测到连接中数据包的首次和最后时间戳(以毫秒为单位)bytes
是连接中传输的字节数packets
是连接中传输的数据包数。
状态机图
此库公开了一个行为像状态机的 Nasoone
结构。您可以在以下图中看到此状态机的行为
多线程
此库是多线程的。它使用线程池来解析数据包。线程数设置为机器的逻辑核心数。
此图显示了库使用的线程
App thread
是调用库的线程生产者线程
是从底层 pcap 库获取数据包、复制数据并将其通过通道发送到一个解析器线程
的线程。解析器线程
是解析数据包并定期将结果发送到写入器线程
的线程。写入器线程
是将数据写入报告文件的线程,频率由用户指定。
报告示例
以下是库生成的报告示例
source ip; source port; destination ip; destination port; protocols; first; last; bytes; packets
192.168.1.60; 50679; 255.255.255.255; 6667; [UDP]; 1672060820555; 1672060820555; 214; 1
192.168.1.20; 20213; 103.195.103.66; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
140.82.112.22; 443; 192.168.1.20; 53673; [TCP]; 1672060821867; 1672060822494; 5228; 11
192.168.1.20; 53673; 140.82.112.22; 443; [TCP]; 1672060821764; 1672060822393; 3802; 11
50.7.252.138; 9993; 192.168.1.20; 35848; [UDP]; 1672060821406; 1672060821406; 671; 1
108.177.119.188; 5228; 192.168.1.20; 52921; [TCP]; 1672060821504; 1672060821504; 66; 1
192.168.1.2; 51057; 224.0.0.251; 5353; [UDP]; 1672060822910; 1672060822910; 84; 1
192.168.1.20; 9993; 103.195.103.66; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 20213; 84.17.53.155; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 9993; 84.17.53.155; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
35.186.224.25; 443; 192.168.1.20; 53631; [TCP]; 1672060822358; 1672060822358; 66; 1
103.195.103.66; 9993; 192.168.1.20; 35848; [UDP]; 1672060821262; 1672060821262; 671; 1
104.194.8.134; 9993; 192.168.1.20; 35848; [UDP]; 1672060821306; 1672060821306; 671; 1
192.168.1.20; 52921; 108.177.119.188; 5228; [TCP]; 1672060821473; 1672060821473; 54; 1
192.168.1.20; 53631; 35.186.224.25; 443; [TCP]; 1672060822346; 1672060822346; 54; 1
192.168.1.20; 35848; 50.7.252.138; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.2; 49420; 224.0.0.251; 5353; [UDP]; 1672060822808; 1672060822808; 84; 1
192.168.1.20; 35848; 104.194.8.134; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 9993; 104.194.8.134; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 20213; 50.7.252.138; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 35848; 103.195.103.66; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.20; 35848; 84.17.53.155; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
84.17.53.155; 9993; 192.168.1.20; 9993; [UDP]; 1672060821170; 1672060821170; 671; 1
192.168.1.20; 9993; 50.7.252.138; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1
192.168.1.73; 58945; 255.255.255.255; 6667; [UDP]; 1672060820453; 1672060820453; 214; 1
192.168.1.20; 20213; 104.194.8.134; 9993; [UDP]; 1672060821134; 1672060821134; 179; 1