Skip to main content

一个用于解析pcap文件的python库

Project description

pypcaptools

pypcaptools 是一个为现代网络流量指纹分析而设计的强大 Python 库。它能够高效解析 pcap 文件,并支持将流量数据与应用层资源信息(来自关联的 json 文件)相结合,最终将结构化的数据存入 MySQL 数据库。

核心功能 🚀

  1. 现代化数据库架构

    • 采用 Trace → Flow → Resource 三层关联的表结构,精准地描述了“一次完整的访问”、“访问中的网络流”以及“网络流中加载的应用资源”之间的层次关系。
    • 使用 JSON 数据类型存储时间戳、数据包大小和方向序列,既节省空间又便于机器学习模型直接调用。
  2. 关联数据处理

    • 突破了传统仅分析 pcap 文件的局限,能够协同处理 pcap 文件和其关联的 json 文件(例如,通过浏览器插件或 mitmproxy 导出的资源加载日志)。
    • 这使得将底层的网络流数据与高层的应用资源(如 URL、HTTP 状态码、Content-Type)进行精确映射成为可能,极大地丰富了数据维度。
  3. 高效与稳健

    • 核心解析引擎从 scapy 全面切换到更轻量、更高性能的 dpkt,大幅提升了处理大型 pcap 文件时的速度和内存效率。
    • 数据库操作采用上下文管理器with 语句)和批量插入executemany),确保了数据库连接的安全、自动关闭以及卓越的数据写入性能。

数据库设计 📊

新版 pypcaptools 围绕一个基础名称(base_table_name)动态创建三张关联表,以存储层次化的流量数据。

  • {base_name}_trace: 存储一次完整的捕获记录(对应一个 pcap 文件)。它包含了该次访问的总体元数据和整合后的数据包序列。
  • {base_name}_flow: 存储 trace 中的单个网络流(由五元组定义)。通过外键 trace_idtrace 表关联。
  • {base_name}_resource: 存储 flow 中加载的具体应用层资源(如一个 GET 请求的 URL 和响应)。通过外键 flow_idflow 表关联,其数据主要来源于辅助的 json 文件。

这种设计极大地增强了数据的可分析性,为复杂的流量指纹研究和模型训练提供了坚实的基础。

安装

可以通过 pip 安装 pypcaptools:

pip install pypcaptools==2.1

快速开始 ⚡

下面的示例展示了如何使用 PcapToDatabaseHandler 将一个 pcap 文件和其关联的 json 资源文件一同导入数据库。

from pypcaptools import PcapToDatabaseHandler, initialize_database_schema

# 1. 配置数据库连接
db_config = {
    "host": "localhost",
    "port": 3306,
    "user": "root",
    "password": "your_password",
    "database": "your_traffic_db",
}

# 2. (可选,首次运行时执行) 初始化数据库和表结构
# 这个函数会确保数据库和三张关联表都已创建。
base_name = "direct_traffic"
initialize_database_schema(db_config, base_table_name=base_name)

# 3. 初始化处理器
# 它将连接到已创建的 direct_traffic_trace, direct_traffic_flow, 
# 和 direct_traffic_resource 这三张表。
handler = PcapToDatabaseHandler(
    db_config=db_config,
    base_table_name=base_name, 
    input_pcap_file="captures/google.com.pcap",
    input_json_file="captures/google.com.json",
    protocol="HTTPS",
    accessed_website="google.com",
    collection_machine="local-dev-machine"
)

# 4. 执行处理和入库操作
# 该方法会完成所有解析、关联和数据库批量插入工作。
success = handler.pcap_to_database()

if success:
    print("✅ 成功将 PCAP 和 JSON 数据导入数据库。")
else:
    print("❌ 导入数据失败,请检查日志。")

贡献指南

如果你对 pypcaptools 感兴趣,并希望为项目贡献代码或功能,欢迎提交 Issue 或 Pull Request!

许可证

本项目基于 MIT License 许可协议开源。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pypcaptools-2.4.tar.gz (22.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pypcaptools-2.4-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file pypcaptools-2.4.tar.gz.

File metadata

  • Download URL: pypcaptools-2.4.tar.gz
  • Upload date:
  • Size: 22.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pypcaptools-2.4.tar.gz
Algorithm Hash digest
SHA256 847c96263c5d9f6c138b9e96d14ad1a9478d5a17cc1edcfc03a2888b2d38148a
MD5 38509f93e29f0b6e85fb7996b9702193
BLAKE2b-256 e168c275fbfc6e5d4a613f1be85d823fab7d3bcf423ddf112848b36f2085fb55

See more details on using hashes here.

File details

Details for the file pypcaptools-2.4-py3-none-any.whl.

File metadata

  • Download URL: pypcaptools-2.4-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for pypcaptools-2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 70fe30551cda09ca740585c83ec6de5c01ae0415670b663df64be1785526a9be
MD5 6d959fbf7b1f90988d341599cb21e2e7
BLAKE2b-256 117d37a397bf00a409a5d921133d62e73a63e31900546fc7db0bb0b0aaa9b14b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page