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支持, 域名枚举, 系统分析, 系统运维, 网络分析, 网络抓包