Python-based tool for converting PCAPNG files to HAR files.
License: GPLv3 and MIT
This project is a Python-based tool for converting PCAPNG files to HAR files. It supports both HTTP/1.1 and HTTP/2 protocols.
This converter requires a PCAPNG file as input. If you have a PCAP file, you can convert it to PCAPNG using editcap
:
editcap <input_file.pcap> <output_file.pcapng>
Make sure the following tools are installed on your system:
tshark
(part of the Wireshark suite; requires version >= 4.0)pip install pcapng-utils
Run pcapng_to_har [-h]
in your shell (with your Python virtual environment activated)
from pcapng_to_har import pcapng_to_har, Tshark
def pcapng_to_har(
input_file: Path | str,
output_file: Path | str | None = None,
*,
tshark: Tshark | None = None,
socket_operations_file: Path | str | None = None,
cryptography_operations_file: Path | str | None = None,
overwrite: bool = False,
**json_dump_kws: Any,
) -> None
If the captured traffic contains TLS traffic and a SSLKEYLOGFILE
has been generated during the capture, use the following command to inject the TLS client randoms read from the <keylog_file>
into the PCAPNG file:
editcap --inject-secrets tls,<keylog_file> <file.pcap> <output.pcapng>
Once the secrets have been injected into the PCAPNG file, you can use pcapng_to_har
to convert the PCAPNG file to a HAR file. The output HAR will contain the decrypted TLS traffic.
pcapng_to_har -i <input.pcapng> -o <input.har>
If the traffic has been captured on a PiRogue with the command pirogue-intercept[single|gated]
, the stacktrace of all operations (read, write) on sockets have been logged in a file socket_trace.json
. The converter will use this file to add the stacktrace information to each request and response. The attributes request._stacktrace
and response._stacktrace
will, respectively, contain the stacktrace of the socket operations that have been performed for the request and the response.
pcapng_to_har -i <input.pcapng> -o <input.har> -sf <socket_trace.json>
If the traffic has been captured on a PiRogue with the command pirogue-intercept[single|gated]
, the encryption and decryption operations have been logged in a file aes_info.json
. The converter will use this file to identifies the payloads that have been encrypted before been transmitted. The encrypted payload will be replaced by its cleartext in request.postData.text
and response.content.text
.
Additional information about the encryption and decryption operations will be added to the HAR in the attributes request._decryption
and response._decryption
.
pcapng_to_har -i <input.pcapng> -o <input.har> -cf <aes_info.json>
tshark
from the Wireshark suite.git clone https://github.com/PiRogueToolSuite/pcapng-utils
cd pcapng-utils
pip install -r requirements.txt
This work is licensed under multiple licences: