Module for Packet Capture support. Within the module, there are wrappers written for tcpdump, tshark & pktcap tools.
Project description
[!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. Ifinterface_nameis not given on initialization, it can be passed throughtshark.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-fparam to TShark.
RaisesTsharkExceptionif tshark command fails on execution, if passed incorrect args or if interface_name was defined and another interface is passed intshark.start(filters) -
stop(process: "RemoteProcess", *, expected_output: bool) -> List[str]- Stop tshark process and report result. raisesTsharkException: 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. Ifinterface_nameis not given on initialization, it can be passed throughtcpdump.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. RaisesTcpdumpExceptionif tcpdump command fails on execution, if passed incorrect args or if interface_name was defined and another interface is passed intcpdump.start(filters) -
stop(process: "RemoteProcess", *, expected_output: bool) -> List[str]- Stop tcpdump process and report result. RaisesTcpdumpException: 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. RaisesTcpdumpException: If givenfile_pathwas 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. Ifinterface_nameis not given on initialization, it can be passed throughpktcap.start(interface_name="interface_name") -
start(interface_name: str, additional_args: Optional[str] = "") -> RemoteProcess: to start capturing packets via pktcap-uw. RaisesPktCapExceptionif command fails on execution or if interface name was given both on initialization and asstart()argument. -
stop(process: RemoteProcess, *, expected_output: bool) -> List[str]: stop pktcap-uw process and get its output (combined stdout & stderr). RaisesPktCapExceptionif 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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mfd_packet_capture-2.16.0-py3-none-any.whl.
File metadata
- Download URL: mfd_packet_capture-2.16.0-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
397602343a55df1e9adde69dee4fa311a2dc0d999057a826261708593d9f5bab
|
|
| MD5 |
91a8aad6a831b184cadb107172522cd7
|
|
| BLAKE2b-256 |
6967faf5309bd4c53624510715ae67111108376beb3837643ad5e6eb301264a2
|