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.10.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.10-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.10-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (791.4 kB view details)

Uploaded CPython 3.10+manylinux: glibc 2.17+ ARM64

py_pcapplusplus-1.0.10-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.10.tar.gz.

File metadata

  • Download URL: py-pcapplusplus-1.0.10.tar.gz
  • Upload date:
  • Size: 7.9 MB
  • 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.10.tar.gz
Algorithm Hash digest
SHA256 95400a3310cb7e1509a33e9f966fe8c5503377d37a1568927a7dae93f1961568
MD5 781f38f4a0b752eff3d6a0d15c817321
BLAKE2b-256 b0f464d443ab1e9993052cc758e5a857baba4daab1c3d9451032632443be4f03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.10-cp310-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 dfffbc5f68d6bd69fdd6982e693058f2220c9f3320bd5d61ad0c0ca06815d2a0
MD5 af0e31c2a801f7b87cf5e5b3c8a4a08c
BLAKE2b-256 cad8b96731dbb3ba5270b029dca72a776e69e526d5d3de4f3beaf8d570fbdab4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.10-cp310-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 86c1acdd499e79de415203c285417fc2b62798671a42fd2632644eb3246cca48
MD5 ccce65b9468c561c1297c65dc33ed4a9
BLAKE2b-256 90d002dd3bcbed4922ec1dc5594d79ac87880310145a72c0716a7bf505b32e57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for py_pcapplusplus-1.0.10-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e02ef574bb3e7b3603a19632a1515f768cf2055ea53db40e8e57de7af3706961
MD5 63a553d130502966adb584f154c05056
BLAKE2b-256 85ed41ccddf797b2ef7fa8f7b603a26554da0ec2c578454cfca4812b4d5d86e7

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