localsniffer

本地网络抓包与日志系统 (LocalSniffer)

简介

本项目是一个基于 Unix 系统的本地网络抓包与请求日志工具,用于实时监控网络中 HTTP 和 HTTPS 请求。它能够列出抓取到的每个设备的请求信息,并将日志写入文件,同时在终端实时显示。适用于 IT 管理、网络调试和安全审计场景。


功能


使用方法

构建

make

运行

sudo ./sniff 

输出示例

2025-08-22 21:45:00 192.168.1.10 请求 http://example.com/index.html
2025-08-22 21:45:01 192.168.1.12 请求 https://unknown.domain

技术信息

数据流概述

  1. 初始化

    • 解析命令行参数,选择抓包网络接口
    • 创建日志目录
    • 初始化日志文件(DEBUG 模式或默认日志)
  2. 抓包层(Capture)

    • 使用 libpcap 抓取指定接口的网络包
    • 每收到一个数据包触发回调
  3. 解析层(Parser)

    • 分析 IP 层获取源 IP、目标 IP
    • 分析 TCP 层获取源端口、目标端口
    • 判断是否为 HTTP (port 80) 或 HTTPS (port 443)
    • 提取 Host 和 URL 路径信息
  4. 日志层(Logger)

    • 构造 RequestEvent 结构体
    • 打印到终端(彩色区分协议)
    • 写入日志文件
    • 定时刷新,保证数据实时性

系统流程图

+-----------------+
|    Main         |
| 初始化 & 参数解析|
+--------+--------+
         |
         v
+-----------------+
|    Capture      |
| 抓包 libpcap    |
+--------+--------+
         |
         v
+-----------------+
|    Parser       |
| IP/TCP解析      |
| 判断协议 & URL  |
+--------+--------+
         |
         v
+-----------------+
|    Logger       |
| 打印终端 & 写日志|
+-----------------+

系统流程图

系统流程 UML

数学公式说明

抓包和日志处理过程中可以使用简单的统计模型描述数据量和速率:

  1. 平均请求速率
\[R = \frac{N}{T}\]
  1. 日志文件大小估算
\[S = N \cdot L\]
  1. 实时刷新延迟
\[\Delta t \approx \frac{B}{R}\]

输出示例

终端运行效果:

终端截图


系统要求


文件结构

.
├── include
│   ├── capture.h
│   ├── logger.h
│   ├── parser.h
│   └── utilities.h
├── src
│   ├── capture.c
│   ├── logger.c
│   ├── parser.c
│   └── utilities.c
├── localsniffer.c
├── Makefile
└── logs

安全与注意事项


法律合规与免责声明


🌟 开源项目赞助计划

用捐赠助力发展

感谢您使用本项目!您的支持是开源持续发展的核心动力。
每一份捐赠都将直接用于:
✅ 服务器与基础设施维护(魔法城堡的维修费哟~)
✅ 新功能开发与版本迭代(魔法技能树要升级哒~)
✅ 文档优化与社区建设(魔法图书馆要扩建呀~)

点滴支持皆能汇聚成海,让我们共同打造更强大的开源工具!
(小仙子们在向你比心哟~)


🌐 全球捐赠通道

国内用户


🔵 支付宝(小企鹅在收金币哟~)

🟢 微信支付(小绿龙在收金币哟~)

国际用户


📌 开发者社交图谱

技术交流

社交互动


🙌 感谢您成为开源社区的重要一员!
💬 捐赠后欢迎通过社交平台与我联系,您的名字将出现在项目致谢列表!