Skip to main content

Python wrapper module for the Pcap++ library using nanobind

Project description

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

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

py-pcapplusplus-1.0.9.tar.gz (17.4 kB 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.9-cp310-abi3-manylinux_2_34_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.34+ ARM64

py_pcapplusplus-1.0.9-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (865.0 kB view details)

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

py_pcapplusplus-1.0.9-cp310-abi3-macosx_11_0_arm64.whl (567.1 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

File details

Details for the file py-pcapplusplus-1.0.9.tar.gz.

File metadata

  • Download URL: py-pcapplusplus-1.0.9.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for py-pcapplusplus-1.0.9.tar.gz
Algorithm Hash digest
SHA256 6e7e147bcabd613f344532c353e61259c3333af3c13a75e358db70cf7eb5e1c1
MD5 bae096a7b848446103a564d163cd52d2
BLAKE2b-256 5426621df1c0fa5b7ab0ce9b64d8bff7e36709d3e646eb17c36c7b119b57ce93

See more details on using hashes here.

File details

Details for the file py_pcapplusplus-1.0.9-cp310-abi3-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.9-cp310-abi3-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 d6241ed5122cb6ca2a3973c71cf92c368d1939de2fd67181c8d464c6141a5509
MD5 83a1938fabfeb8bfb53bbf864f792374
BLAKE2b-256 66b1ac015a12de4aaac4480398a1ecb8f99cccae23d6b76bae788bed1e86b3ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.9-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 01835af320f3c9fc7875287c17c70bc310d6ae45417b7d8bfd14d38fca979ea3
MD5 3a737abfe249c9cf6c424469f9883067
BLAKE2b-256 8f9499c8d677f76e9401b480fb6d298d6350cd4376fb8c9e077630829146502e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.9-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7589bab3a2c4888dcdec43d8e48bf5abc1367e53b132969dd513ab1d870734c6
MD5 44b3b5130a81afb1b94c501559fb8219
BLAKE2b-256 f1dfbe39cb312259e26aeb14503fe9f382ce1e448720bf16de6b5d40f40822f1

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