Skip to main content

[!IMPORTANT] This project is under development. All source code and features on the main branch are for the purpose of testing or evaluation and not production ready.

MFD Packet Capture

Module for Packet Capture support, module implements mfd-base-tool. Within the module, there are wrappers written for tcpdump, tshark & pktcap tools.

OS supported:

  • WINDOWS (tshark)
  • FREEBSD (tshark)
  • LINUX (tcpdump, tshark)
  • ESXI (tcpdump, pktcap)

Tshark Usage

from mfd_packet_capture import Tshark
from mfd_connect import RPyCConnection

# establish connection via mfd-connect
connection = RPyCConnection(ip="10.10.10.10")
tshark = Tshark(connection=connection, absolute_path_to_binary_dir = "C:\\tshark\\", interface_name="eth0")
version = tshark.get_version()
tshark_process = tshark.start()
time.sleep(2)
result = tshark.stop(tshark_process, expected_output=True)

For Windows pass network interface in quote, e.g.:

tshark_process = tshark.start(filters='-i "Ethernet 2"', additional_args="-l")

API documentation

  • Tshark(connection: Connection, interface_name: str = "", absolute_path_to_binary_dir: "Path | str | None" = None - Initializes Tshark instance on given connection and optionally interface name. If interface_name is not given on initialization, it can be passed through tshark.start(filters="-i interface_name")

  • start(*, capture_filters: str = "", filters: str = "", additional_args: str = "") -> "RemoteProcess" - Start TShark process with given filters and additional args.
    Capture filters will be passed with -f param to TShark.
    Raises TsharkException if tshark command fails on execution, if passed incorrect args or if interface_name was defined and another interface is passed in tshark.start(filters)

  • stop(process: "RemoteProcess", *, expected_output: bool) -> List[str] - Stop tshark process and report result. raises TsharkException: If process after stop and kill is still running or unexpectedly returned output or does not returned output when expected.

Tcpdump Usage

from mfd_packet_capture import Tcpdump
from mfd_connect import RPyCConnection

# establish connection via mfd-connect
connection = RPyCConnection(ip="10.10.10.10")
tcpdump = Tcpdump(connection=connection, interface_name="eth0")
version = tcpdump.get_version()
tcpdump_process = tcpdump.start(additional_args="-l")
time.sleep(2)
result = tcpdump.stop(tcpdump_process, expected_output=True)

API Documentation

  • Tcpdump(connection: Connection, interface_name: str = "", absolute_path_to_binary_dir: "Path | str | None" = None - Initializes Tcpdump instance on given connection and optionally interface name. If interface_name is not given on initialization, it can be passed through tcpdump.start(filters="-i interface_name")

  • start(*, filters: str = "", additional_args: str = "", namespace: str | None = None) -> "RemoteProcess" - Start Tcpdump process with given filters and additional args. Raises TcpdumpException if tcpdump command fails on execution, if passed incorrect args or if interface_name was defined and another interface is passed in tcpdump.start(filters)

  • stop(process: "RemoteProcess", *, expected_output: bool) -> List[str] - Stop tcpdump process and report result. Raises TcpdumpException: If process after stop and kill is still running or unexpectedly returned output or did not return output when expected.

  • read_tcpdump_packets(file_path: Path, additional_args: str="-nvv", namespace: str | None = None) -> list[str] - Read packets from file which was created with other tools e.g pktcap-uw in pcap or pcapng format. Raises TcpdumpException: If given file_path was not found

PktCap usage

import logging
from time import sleep
from mfd_connect import RPyCConnection
from mfd_packet_capture.pktcap import PktCap

logging.basicConfig(level=logging.DEBUG)

conn = RPyCConnection(ip="10.10.10.10")
pkt_capture = PktCap(connection=conn, interface_name="vmnic0")

# start capturing
process = pkt_capture.start(additional_args="--count 4")
sleep(10)

# stop capturing
output = pkt_capture.stop(process=process, expected_output=True)
logging.debug(f"output: {output}")

API Documentation

  • PktCap(connection: Connection, interface_name: str = "", absolute_path_to_binary_dir: "Path | str | None" = None - Initializes PktCap instance on given connection and optionally interface name. If interface_name is not given on initialization, it can be passed through pktcap.start(interface_name="interface_name")

  • start(interface_name: str, additional_args: Optional[str] = "") -> RemoteProcess : to start capturing packets via pktcap-uw. Raises PktCapException if command fails on execution or if interface name was given both on initialization and as start() argument.

  • stop(process: RemoteProcess, *, expected_output: bool) -> List[str] : stop pktcap-uw process and get its output (combined stdout & stderr). Raises PktCapException if process after stop and kill is still running or if there is no output but expected_output is set to True.

If you encounter any bugs or have suggestions for improvements, you're welcome to contribute directly or open an issue here.

Metadata

Release files for mfd-packet-capture 2.16.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for mfd-packet-capture 2.16.0
File Interpreter ABI Platform
mfd_packet_capture-2.16.0-py3-none-any.whl Python 3 none any Details

Release files / mfd_packet_capture-2.16.0-py3-none-any.whl

Download URL mfd_packet_capture-2.16.0-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
397602343a55df1e9adde69dee4fa311a2dc0d999057a826261708593d9f5bab
BLAKE2b-256 checksum
How to use checksums
6967faf5309bd4c53624510715ae67111108376beb3837643ad5e6eb301264a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

2.16.0 This release

1 release file

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