跳转到主要内容

libpcap C库的Python绑定。

项目描述

libpcap

libpcap C库的Python绑定。

概述

Python libpcap 模块是libpcap C库的低级绑定。
它旨在允许Python程序完全访问由知名libpcap Unix C库及其在Win32系统上由Npcap、WinPcap等数据包捕获系统提供的API。

PyPI记录.

文档.

libpcap 是一个轻量级的Python包,基于ctypes库。
这是一个完全符合从1.0.0到1.9.0的原始C语言libpcap API和WinPcap的4.1.3 libpcap (1.0.0rel0b) API的实现,通过在纯Python中实现其全部功能,而不是使用C语言。

有用的libpcap API文档可以在以下位置找到:

libpcap使用在libpcap.cfg中指定的底层libpcap C共享库(系统的libpcap共享库是默认值),但也可以通过以下方式之一程序化地指定它:

import libpcap
libpcap.config(LIBPCAP=None)       # system's libpcap library will be used
# or
libpcap.config(LIBPCAP="npcap")
# or
libpcap.config(LIBPCAP="wpcap")    # included wpcap library will be used
# or
libpcap.config(LIBPCAP="tcpdump")  # included tcpdump library will be used
# or                               # (currently works only for Linux x64)
libpcap.config(LIBPCAP="libpcap shared library absolute path")

关于原始libpcap

由“Tcpdump组”提供的LIBPCAP 1.x.y

https://www.tcpdump.org

可以通过以下方式通过匿名Git获取

git clone https://github.com/the-tcpdump-group/libpcap.git

之前来自

劳伦斯伯克利国家实验室
网络研究组 <libpcap@ee.lbl.gov>

此目录包含libpcap的源代码,这是一个系统无关的用户级数据包捕获接口。libpcap提供了一种低级网络监控的可移植框架。应用包括网络统计收集、安全监控、网络调试等。由于几乎每个系统供应商都提供不同的数据包捕获接口,并且我们已经开发了几种需要此功能的工具,因此我们创建了这个系统无关的API,以简化移植并减轻每个应用程序中需要多个系统依赖数据包捕获模块的需求。

特定平台和BPF的支持

对于某些平台,存在README.{system}文件,讨论了这些平台上操作系统接口的数据包捕获问题,例如如何在默认未构建的情况下启用该接口的支持。

libpcap接口支持基于BSD数据包过滤器的架构的过滤机制。BPF在1993年冬季Usenix论文“BSD数据包过滤器:用户级数据包捕获的新架构”中有描述(《The BSD Packet Filter: A New Architecture for User-level Packet Capture》 (压缩PostScript, gzip PostScript, PDF))。

尽管大多数数据包捕获接口支持内核过滤,但libpcap仅利用内核过滤的BPF接口。在不存在BPF的系统上,所有数据包都读取到用户空间,并在libpcap库中评估BPF过滤器,这会产生额外的开销(特别是对于选择性过滤器)。理想情况下,libpcap应将BPF过滤器转换为与底层内核子系统兼容的过滤程序,但这尚未实现。

BPF是4.4BSD、BSD/OS、NetBSD、FreeBSD、OpenBSD、DragonFly BSD和macOS的标准;一个较旧、修改未记录的版本是AIX的标准。DEC OSF/1、Digital UNIX、Tru64 UNIX使用packetfilter接口,但已扩展以接受BPF过滤器(libpcap使用)。此外,您可以使用内核源代码和/或对象补丁将BPF过滤器支持添加到Ultrix。

Linux有许多基于BPF的系统,尽管它支持许多内存映射接收机制,但libpcap目前尚不支持任何eBPF机制。有关更多信息,请参阅Linux特定README

针对包含libpcap的Linux发行版和*BSD系统的说明

现在有一个规则用于创建共享库,它应该在Linux和*BSD等平台上工作。

它将库的soname设置为“libpcap.so.1”;这就是它应该有的,不是“libpcap.so.1.x”或“libpcap.so.1.x.y”或类似的东西。

我们已经维护了libpcap发布之间的二进制兼容性很长时间;没有理由将链接到libpcap的二进制文件绑定到特定版本的libpcap。

要求

  • 这是一个完全独立的软件包。
    在正常安装过程中,所有必需的组件都会被安装。
  • 注意:目前仅适用于Windows操作系统。

安装

先决条件

要安装,请运行

python -m pip install --upgrade libpcap

开发

先决条件

  • 开发严格基于tox。要安装它,请运行

    python -m pip install --upgrade tox

访问开发页面

从源代码安装

克隆源代码

git clone https://github.com/karpierz/libpcap.git libpcap

并运行

python -m pip install ./libpcap

或以开发模式运行

python -m pip install --editable ./libpcap

许可证

版权所有(c)2016-2024 Adam Karpierz
根据BSD许可证授权
请参阅随附的LICENSE文件。

作者

变更日志

1.11.0b11 (2024-09-30)

  • 停止支持Python 3.8

  • 升级到最新的libpcap API 1.11.0-PRE

  • 同步/升级测试到最新的libpcap API 1.11.0-PRE

  • 设置(依赖项)更新。

1.11.0b10 (2024-08-13)

  • 添加对Python 3.13的支持

  • 对win32的改进和清理。

  • 源代码重构和清理。

  • 设置(依赖项)更新。

1.11.0b8 (2024-01-30)

  • 升级到最新的libpcap API 1.11.0-PRE

  • 同步/升级测试到最新的libpcap API 1.11.0-PRE

  • 设置更新(现在基于tox >= 4.0)。

  • 添加对Python 3.12的支持

  • 停止支持Python 3.7

  • 添加对PyPy 3.10的支持

  • 停止支持PyPy 3.7和3.8

  • 更新版权年份。

  • 清理。

1.11.0b7 (2022-09-10)

  • 升级到最新的libpcap API 1.11.0-PRE

  • 同步/升级测试到最新的libpcap API 1.11.0-PRE

  • 添加nonblocktest.py

  • tox配置已移动到pyproject.toml

1.11.0b6 (2022-08-25)

  • 升级到最新的libpcap API 1.11.0-PRE

  • 设置修复和更新。

1.11.0b5 (2022-07-28)

  • 升级到最新的libpcap API 1.11.0-PRE

  • 添加对macOS x64的支持(感谢Erik Rainey emrainey@Githublydia-hogan@Github!)。

  • 添加对Python 3.10和3.11的支持

  • 添加对PyPy 3.7、3.8和3.9的支持

  • 设置更新(目前主要基于pyproject.toml)。

1.11.0b4 (2022-01-10)

  • 停止支持Python 3.6。

  • 更新版权年份。

  • 设置更新。

1.11.0b2 (2021-11-10)

  • 升级到最新的libpcap API 1.11.0-PRE

  • 更新版权年份。

  • 向后不兼容 - libpcap.cfg现在是一个常规INI文件。

  • 设置更新。

1.10.0b15 (2020-10-18)

  • 添加对Python 3.9的支持。

  • 停止支持Python 3.5。

  • 移除对atpublic的依赖。

  • 可以程序化地指定后端。

  • 将系统libpcap设置为默认后端。

  • 修复了一个关键的设置错误(感谢msrst@Github!)。

  • 通用更新和清理。

  • 修复了文档设置。

1.10.0b10 (2020-01-16)

  • 添加对Python 3.8的支持。

  • 停止支持Python 3.4。

  • 停止支持Python 2。

  • 升级到最新的libpcap API 1.10.0-PRE

  • 将npcap设置为默认后端。

  • 由于可能的许可证问题,已删除内部npcap的dll-s。

  • 添加对Linux x64的支持
    添加内部tcpdump的libpcap.so v.1.9.1,支持远程捕获。
    也可以使用系统tcpdump的libpcap.so(通过libpcap.libpcap.cfg)。
  • 添加ReadTheDocs配置文件。

  • 设置更新和清理。

1.10.0b5 (2019-09-16)

  • 升级到最新的libpcap API 1.10.0-PRE

  • 将npcap的libpcap dll-s升级到0.996

  • 轻微的设置修复和改进。

1.10.0b3 (2019-02-15)

  • 升级到最新的libpcap API 1.10.0-PRE

  • 将npcap的libpcap dll-s升级到0.99rc9

  • 更新所需的setuptools版本。

  • 轻微的设置改进。

  • 测试更新。

1.10.0b1 (2018-11-08)

  • 升级到最新的libpcap API 1.10.0-PRE

  • 将npcap的libpcap dll-s升级到0.99rc7

  • 更新所需的setuptools版本。

1.0.0b14 (2018-05-09)

  • 更新所需的setuptools版本。

1.0.0b13 (2018-05-09)

  • 将npcap的libpcap dll-s升级到0.99rc5

1.0.0b12 (2018-05-08)

  • 升级到最新的libpcap。

1.0.0b10 (2018-03-31)

  • 升级到最新的libpcap。

  • 改进和简化设置和打包。

  • 改进和更新测试。

1.0.0b9 (2018-02-26)

  • 改进和简化设置和打包。

1.0.0b8 (2018-02-25)

  • 升级到最新的libpcap API 1.9.0

  • 设置改进。

1.0.0b7 (2017-12-18)

  • 修复平台检测错误(感谢Dan ???)。

1.0.0b6 (2017-10-11)

  • 升级到libpcap API 1.9.0

1.0.0b5 (2017-10-08)

  • 升级到libpcap API 1.8.1

  • 添加对Npcap libpcap 的支持。

1.0.0b4 (2017-10-04)

  • 第四次Beta版本发布。

1.0.0b3 (2017-08-28)

  • 第三次Beta版本发布。

1.0.0b1 (2017-08-27)

  • 第一次Beta版本发布。

1.0.0a16 (2017-08-26)

  • 下一个Alpha版本发布。

1.0.0a0 (2017-06-08)

  • 第一个Alpha版本发布。

0.0.1 (2016-09-23)

  • 初始版本。

项目详情


下载文件

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

源分布

libpcap-1.11.0b11.zip (913.0 kB 查看哈希值)

上传时间

构建分布

libpcap-1.11.0b11-py3-none-any.whl (850.5 kB 查看哈希值)

上传时间 Python 3

支持者:

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面