Skip to main content

py-pcapplusplus

pypi downloads downloads_monthly Tests

A Python wrapper for the Pcap++ library using nanobind, providing a high-level interface for network packet manipulation, capture, and analysis.

Features

  • Read and parse PCAP files
  • Create and modify network packets
  • Support for multiple protocol layers:
    • Ethernet
    • IPv4/IPv6
    • TCP/UDP
    • ARP
    • VLAN
    • DHCP
    • SOME/IP and SOME/IP-SD
  • Raw socket operations for packet capture and injection
  • High-performance packet processing

Installation

pip install py-pcapplusplus

Quick Start

Reading PCAP Files

from py_pcapplusplus import Reader, Packet

# Open a PCAP file
reader = Reader("capture.pcap")

# Iterate through packets
for packet in reader:
    # Access different layers
    eth_layer = packet[LayerType.EthLayer]
    ip_layer = packet[LayerType.IPv4Layer]
    
    # Print packet information
    print(packet)

Creating Packets

from py_pcapplusplus import Packet, EthLayer, IPv4Layer, TcpLayer

# Create a new packet
packet = Packet()

# Add layers
eth = EthLayer(src_mac_addr="00:11:22:33:44:55", dst_mac_addr="66:77:88:99:aa:bb")
ip = IPv4Layer(src_addr="192.168.1.1", dst_addr="192.168.1.2")
tcp = TcpLayer(src_port=12345, dst_port=80)

# Add layers to packet
packet / eth / ip / tcp

Packet Capture

from py_pcapplusplus import RawSocket

# Create a raw socket on a specific interface
socket = RawSocket("eth0")

# Capture packets
packets = socket.sniff(timeout=5.0)  # Capture for 5 seconds

# Process captured packets
for packet in packets:
    print(packet)

API Reference

Core Classes

Packet

  • get_layer(layer_type): Get a specific layer from the packet
  • add_layer(layer): Add a new layer to the packet
  • insert_layer(prev_layer, new_layer): Insert a layer after an existing one

Layer Types

  • EthLayer: Ethernet layer
  • IPv4Layer: IPv4 layer
  • IPv6Layer: IPv6 layer
  • TcpLayer: TCP layer
  • UdpLayer: UDP layer
  • ArpLayer: ARP layer
  • VlanLayer: VLAN layer
  • DhcpLayer: DHCP layer
  • SomeIpLayer: SOME/IP layer
  • SomeIpSdLayer: SOME/IP-SD layer
  • PayloadLayer: Raw payload layer

Protocol-Specific Features

Ethernet Layer

eth = EthLayer(src_mac_addr="00:11:22:33:44:55", dst_mac_addr="66:77:88:99:aa:bb")
eth.src_mac_addr = "00:11:22:33:44:55"  # Set source MAC
eth.dst_mac_addr = "66:77:88:99:aa:bb"  # Set destination MAC
eth.ether_type = True  # Set to IPv4 (False for IPv6)

IPv4 Layer

ip = IPv4Layer(src_addr="192.168.1.1", dst_addr="192.168.1.2")
ip.src_ip = "192.168.1.1"  # Set source IP
ip.dst_ip = "192.168.1.2"  # Set destination IP
ip.ttl = 64  # Set TTL
ip.clear_chksum()  # Clear checksum for recalculation

TCP Layer

tcp = TcpLayer(src_port=12345, dst_port=80)
tcp.syn_flag = True  # Set SYN flag
tcp.ack_flag = True  # Set ACK flag
tcp.rst_flag = False  # Set RST flag

Raw Socket Operations

socket = RawSocket("eth0")

# Send a single packet
socket.send_packet(packet)

# Send multiple packets
socket.send_packets([packet1, packet2, packet3])

# Receive a packet
packet = socket.receive_packet(blocking=True, timeout=1.0)

# Sniff packets
packets = socket.sniff(timeout=5.0)

Dependencies

  • Pcap++ library
  • nanobind
  • Python 3.10

Acknowledgments

  • Pcap++ library for the underlying packet processing capabilities
  • nanobind for the Python binding framework

Download files

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

Source Distribution

py_pcapplusplus-1.0.12.tar.gz (7.9 MB view details)

Uploaded Source

Built Distributions

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

py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (873.7 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ x86-64

py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (798.6 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

py_pcapplusplus-1.0.12-cp310-abi3-macosx_11_0_arm64.whl (563.3 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file py_pcapplusplus-1.0.12.tar.gz.

File metadata

  • Download URL: py_pcapplusplus-1.0.12.tar.gz
  • Upload date:
  • Size: 7.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for py_pcapplusplus-1.0.12.tar.gz
Algorithm Hash digest
SHA256 33e950b3e953e7aea56bb23ce82b7d43f07c836bce17e17b4717680d14472dae
MD5 0f26e601bde147fae766817dfda4e16e
BLAKE2b-256 13b782474f71231ad8e9c80c566a2b20276317427221026e4e101aa1bb99c59e

See more details on using hashes here.

File details

Details for the file py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 03b23ad00b567abdc36410b367f3caa910197ab3950c15c937d420c1dbb2ea88
MD5 135924d38f8752717141e0333ae19300
BLAKE2b-256 09e802868ab0acb1e0947d42ca7f989bf46fcce6bac655b1011869da59a23f51

See more details on using hashes here.

File details

Details for the file py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.12-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 e03d9b3f2d0b0f8a25302f8f9ff75cf3a9e3cb3f851b1167eeb650c8d791f084
MD5 6b4e50302786c9a08d963527ff0ba865
BLAKE2b-256 c32d78dc2bb0eb08a2267e8c558911a468d86942c30c08acafcad3fdfa094e6d

See more details on using hashes here.

File details

Details for the file py_pcapplusplus-1.0.12-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.12-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9f9cdef9ae4135901377387f92d933d9ac650110348ea9a5f8e7da308fb14fd5
MD5 8ef19a3d556a6d5a7ae504d44d78133e
BLAKE2b-256 81a5b849406fdc8d40d020451f7583cbe62970c376416590794a2645aee026ac

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.12 This release

4 files

1.0.11

4 files

1.0.10

4 files

1.0.9

4 files

1.0.8

4 files

1.0.7

4 files

1.0.6

4 files

1.0.5

4 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

7 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page