onotelli/justniffer

GitHub: onotelli/justniffer

Justniffer 是一个基于 libpcap 的 TCP/HTTP 流量嗅探工具,能够捕获网络流量并以高度可定制的格式生成日志,支持性能指标提取和流量内容还原。

Stars: 224 | Forks: 59

logo # Justniffer [项目主页](https://onotelli.github.io/justniffer/) ## [![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0.en.html) [![Platform](https://img.shields.io/badge/Platform-Linux-2ea44f.svg)](https://kernel.org) [![Latest Release](https://img.shields.io/github/v/release/onotelli/justniffer?color=b85c00&label=Latest%20Release)](https://github.com/onotelli/justniffer/releases/latest) [![Docker Hub](https://img.shields.io/badge/Docker-onotelli%2Fjustniffer-2496ed?logo=docker)](https://hub.docker.com/r/onotelli/justniffer) ## 概述 **Justniffer** 是一个网络 TCP 数据包嗅探和日志记录工具,旨在捕获、解码和分析 TCP/IP 流量,重点关注 HTTP。其灵活的日志记录引擎使其能够适应几乎任何基于 TCP 的协议,非常适用于调试、性能分析和自定义流量检查。 Justniffer 可以解码 HTTP 请求和响应,提取: - 客户端和服务器 IP 地址 - 请求的 URL - HTTP 头 - 消息体 - 时间信息(请求时间、响应时间、空闲时间等) 对于非 HTTP 流量,Justniffer 提供了一个强大且可定制的日志系统,允许您从 TCP 数据流中提取任何相关信息。 数据包捕获使用 **libpcap** 执行,确保与标准捕获格式和工具(如 `tcpdump`)的兼容性。 ## 功能 - **HTTP 请求/响应解码** - 适用于任何基于 TCP 的协议的**可定制日志格式** - **性能指标**:请求时间、响应时间、空闲时间、连接时间 ``` sequenceDiagram participant Client participant Server %% Connection setup Client->>Server: SYN (connect) Note right of Server: %connection.time Server-->>Client: SYN/ACK Client->>Server: ACK Note right of Server: ESTABLISHED %% Idle before request Note right of Server: %idle.time.0\n(after connection, before request) %% Request phase Client->>Server: Request (first packet) Server-->>Client: ACK Client->>Server: Request (data...) Note right of Server: %request.time Server-->>Client: ACK Client->>Server: Request (last packet) Server-->>Client: ACK %% Response phase Note right of Server: %response.time.begin Server-->>Client: Response (first packet) Client->>Server: ACK Server-->>Client: Response (data...) Note right of Server: %response.time.end Client->>Server: ACK Server-->>Client: Response (last packet) Client->>Server: ACK %% Idle after response Note right of Server: %idle.time.1\n(after response, before next request/close) %% Connection close Server-->>Client: CLOSE ``` - **基于 libpcap 的捕获**(实时或从 `.pcap` 文件读取) - **混杂模式支持**,用于被动监听 - 可通过外部脚本(bash, Python, Perl, ELF 二进制文件)进行**扩展** — [了解更多](https://onotelli.github.io/justniffer/EXTENDING) - **重建 TCP 流**,包括重新排序、重传和重组 # 快速入门 ## 在 Ubuntu 上安装 ``` sudo apt install software-properties-common sudo add-apt-repository ppa:oreste-notelli/ppa sudo apt update sudo apt install justniffer ``` ## 以 access-log 格式捕获 HTTP 流量 ``` justniffer -i eth0 ``` ## 为每个日志条目添加响应时间 ``` justniffer -i eth0 -a " %response.time" ``` ## 捕获完整的 HTTP 请求和响应 ``` justniffer -i eth0 -r ``` ## 使用自定义日志格式 ``` justniffer -i eth0 -l "%request.timestamp %source.ip %dest.ip %request.header.host %request.url" ``` ## 从 PCAP 文件读取 ``` justniffer -f file.cap ``` # 示例 ### 示例 1 — 以 access-log 格式获取 HTTP 流量 ``` justniffer -i eth0 ``` 输出: ``` 192.168.2.2 - - [15/Apr/2009:17:19:57 +0200] "GET /sflogo.php?group_id=205860&type=2 HTTP/1.1" 200 0 "" "Mozilla/5.0 ..." ... ``` ### 示例 2 — 附加额外字段(例如:HTTP 响应时间) ``` justniffer -i eth0 -a " %response.time" ``` 输出: ``` 192.168.2.5 - - [22/Apr/2009:22:27:36 +0200] "GET /sflogo.php?group_id=205860&type=2 HTTP/1.1" ... 0.427993 ... ``` ### 示例 3 — 捕获所有 TCP 流量 (添加 `-u` 或 `-x` 以编码不可打印字符) ``` justniffer -i eth0 -r ``` 输出: ``` GET /doc/maint-guide/ch-upload.en.html HTTP/1.1 Host: www.debian.org ... ``` ### 示例 4 — 定义完全自定义的日志格式 ``` justniffer -i eth0 -l "%request.timestamp %source.ip %dest.ip %request.header.host %request.url" ``` 输出: ``` 06/28/11 13:30:48 192.168.2.2 72.14.221.118 i1.ytimg.com /vi/TjSk6CVN5LY/default.jpg ... ``` ### 示例 5 — 从捕获文件中读取 ``` justniffer -f /file.cap ``` # 文档 完整文档、高级示例和使用指南: 👉 **https://onotelli.github.io/justniffer/** # 贡献 欢迎提交 Pull requests、错误报告和功能建议。 # 许可证 Justniffer 在 **GPLv3** 许可证下发布。
标签:DNS枚举, Docker, HTTP流量解析, TCP/IP, TCP协议分析, URL抓取, Web服务器日志模拟, 响应时间跟踪, 安全防御评估, 客户端加密, 性能分析, 抓包工具, 报文解码, 数据包嗅探器, 数据抓取, 服务管理, 流量提取, 流量日志定制, 网络协议分析器, 网络安全工具, 网络流量分析, 网络流量重组, 网络调试, 自动化, 请求拦截, 防御绕过