跳转到主要内容

用于读取/写入各种数据嗅探器使用的pcap-ng格式的库。

项目描述

Python库,用于解析dumpcap等新版本工具(wireshark、winpcap等)使用的pcap-ng格式。

文档

如果您喜欢RTD主题或需要除最新版本以外的任何版本的文档,请访问此处

http://python-pcapng.readthedocs.org/en/latest/

如果您更喜欢更舒适、页面宽度默认的sphinx主题,文档镜像托管在GitHub页面

http://rshk.github.io/python-pcapng/

CI构建状态

分支

状态

master

https://travis-ci.org/rshk/python-pcapng.svg?branch=master

develop

https://travis-ci.org/rshk/python-pcapng.svg?branch=develop

源代码

源代码、问题跟踪器等在GitHub上:https://github.com/rshk/python-pcapng

从git获取源代码

git clone https://github.com/rshk/python-pcapng

下载最新版本的zip文件

https://github.com/rshk/python-pcapng/archive/master.zip

从PyPI安装

pip install python-pcapng

PyPI状态

Python包索引上的官方页面是:https://pypi.python.org/pypi/python-pcapng

Latest PyPI version Number of PyPI downloads Supported Python versions Development Status License

为什么需要这个库?

  • 我需要从一些pcap-ng文件中合理地提取一些信息,但显然tcpdump在读取这些文件时存在一些问题,

    我没有找到其他很好的工具,也没有找到能够解析此格式的库的Python绑定,所以...

  • 一般来说,似乎有(很多!)Python模块可以解析旧的(简单得多)格式,但没有新的格式。

  • 并且,它们通常完全缺乏任何形式的文档。

这不会很慢吗?

是的,我想它会比用C编写的慢得多,但我比C更擅长Python。

...我需要完成任务,而CPU时间并不那么昂贵 :)

(也许我会尝试将其移植到 Cython 以提高速度,但无论如何,纯 Python 库总是很有用的,例如用于 PyPy)。

如何使用它?

基本使用非常简单,就像

from pcapng import FileScanner

with open('/tmp/mycapture.pcap', 'rb') as fp:
    scanner = FileScanner(fp)
    for block in scanner:
        pass  # do something with the block...

查看块文档以了解它们的作用;此外,examples 目录包含一些使用该库的示例脚本。

开发

格式规范在此

https://github.com/pcapng/pcapng/

欢迎贡献,如果您计划进行一些重大更改,请与我联系,以便我们可以确定最佳的集成方式。

或者更好,打开一个问题,让全世界都能参与讨论 :)

Pcap-ng 写支持

自 2.0.0 版本起存在写支持。请参阅文件 examples/generate_pcapng.py 以获取生成 pcapng 文件所需的最小代码示例。

在大多数情况下,此库将防止您创建损坏的数据。如果您想创建边缘化的 pcapng 文件,例如作为其他软件的测试用例,您可以通过调整库的“严格性”来实现,如下所示:

from pcapng.strictness import Strictness, set_strictness
set_strictness(Strictness.FIX)

识别的值有 Strictness.FORBID(默认值),Strictness.FIX(警告问题,如果可能则修复),Strictness.WARN(仅警告)和 Strictness.NONE(无警告)。将导致严格性警告的情况包括

  • 向块添加非重复选项的多个实例

  • 向具有多个接口的文件添加 SPB

  • 写入 PB(PB 已过时,不应在新文件中使用)

  • 在写入任何 IDB 之前写入 EPB/SPB/PB/ISB

创建一个版本

  1. 为新版本创建一个标签

    git tag v2.0.0 -m 'Version 2.0.0'
  2. 在虚拟环境中安装构建依赖项

    python -m venv ./.build-venv
    ./.build-venv/bin/python -m pip install build twine
  3. 构建源和 wheel 分发版

    rm -rf ./dist *.egg-info
    ./.build-venv/bin/python -m build
  4. 使用 Twine 上传到 PyPI

    twine upload dist/*

故障排除

如果您收到一些疯狂的版本号(如 2.0.1.dev0+g7bd8575.d20220310)而不是您预期的版本(例如 2.0.0),那是因为您的本地工作副本中有未提交或未跟踪的文件,或者您在创建标签后创建了更多提交。这样的版本号将被 PyPI(并且它不是一个好的版本号)拒绝,因此在构建之前请确保您有一个干净的工作副本。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分发

python-pcapng-2.1.1.tar.gz (82.3 KB 查看哈希

上传时间

构建分发

python_pcapng-2.1.1-py3-none-any.whl (33.5 KB 查看哈希

上传时间 Python 3

由以下支持