eliHiHo/netzwerkanalysetool
GitHub: eliHiHo/netzwerkanalysetool
一个基于 Java 的网络数据包元数据捕获与存储学习项目,通过 Pcap4J 抓包并利用 SQLite 持久化经过过滤的网络协议元数据。
Stars: 0 | Forks: 0
# 网络分析工具
## 概述
这个 Java 学习项目用于捕获网络数据包,提取可见的协议元数据,应用可配置的过滤器,并将选定的观察结果存储在 SQLite 中。它不能替代 Wireshark 或 tcpdump,也不是 IDS。
## 功能
- 使用 Pcap4J 进行数据包捕获
- 自动检测活动 Interface 并支持并行的 Capture 模块
- 提取 IPv4、IPv6、TCP、UDP、ICMP、ICMPv6、SCTP 和 ARP 的元数据
- 支持基于 IP 地址、端口、MAC 地址和协议的过滤器
- 通过 Blocking Queue 进行异步持久化
- SQLite 存储及旧记录清理
TLS/HTTPS 和 SSH 是根据可见的元数据和端口来识别的。不会对加密内容进行解密。
```
Capture → Parser → Filter → Queue → SQLite
```
## 前置条件
- Linux
- JDK 17
- Maven
- libpcap 以及进行数据包捕获所需的权限
## 构建
```
mvn clean package
```
Assembly 插件将生成
`target/firewall-project-1.0-SNAPSHOT-jar-with-dependencies.jar`。
## 使用说明
```
java -jar target/firewall-project-1.0-SNAPSHOT-jar-with-dependencies.jar --help
```
根据协议或端口过滤数据包:
```
sudo java -jar target/firewall-project-1.0-SNAPSHOT-jar-with-dependencies.jar \
--filter-protocol DNS --filter-port 53
```
数据包捕获通常需要提升的权限或专门设置的 Linux Capabilities。应仅授予所需的最低权限。
## CLI 选项
| 选项 | 说明 |
|---|---|
| `-f`, `--full-logging` | 记录所有数据包,而不仅仅是过滤器匹配项 |
| `-p`, `--filter-port` | 添加端口过滤器 |
| `-i`, `--filter-ip` | 添加 IP 地址过滤器 |
| `-l`, `--ignore-loopback` | 忽略 Loopback 流量 |
| `-t`, `--filter-protocol` | 添加协议过滤器 |
| `-m`, `--filter-mac` | 添加 MAC 地址过滤器 |
| `-h`, `--help` | 显示帮助 |
## 示例输出
启动时,应用程序会报告数据库和 Capture 模块的状态。具体的 Interface 名称和捕获的地址取决于系统,因此不作为真实的示例值发布。
## 网络数据处理
SQLite 数据库可能包含 IP 和 MAC 地址、端口、时间戳以及其他元数据。运行时数据不进行版本控制。只能在拥有相应权限并在尽可能隔离的测试环境中捕获网络流量。
## 已知限制
- 应用层协议是通过端口和数据包类型推断出来的,并未对其内容进行完整验证。
- 加密的 TLS 和 SSH 内容保持加密状态。
- 自动化测试覆盖率有限。
- Capture 行为依赖于 libpcap、权限和操作系统。
- 实验性的异常检测功能仍在开发中,尚未成为稳定的一部分。
## 项目状态
本项目将作为一个学习和实验项目继续维护。
标签:JS文件枚举, Pcap4J, SQLite, Wildcard支持, 域名枚举, 系统分析, 系统运维, 网络分析, 网络抓包