PyPCAPKit
PyPCAPKit copied to clipboard
PCAP-NG: [pack_flags] option must be in Packet Block, but found in 168627466 block.
Wireshark-generated PCAP-NG files cannot be parsed.
- OS Version: MacOS Sequoia 15.4.1 (24E263)
- Python Version: Python 3.12.2 (main, Feb 23 2024, 13:29:13) [Clang 15.0.0 (clang-1500.1.0.2.5)]
- pypcapkit: 1.3.5.post16
- Wireshark: Version 4.4.6 (v4.4.6-0-gaebb20483889)
from pcapkit import IP, extract
extraction = extract(fin="in.pcapng", nofile=True)
frame0 = extraction.frame[0]
# check if IP (IPv4 or IPv6) in this frame
if IP in frame0:
# fetch the IP packet from this frame
ip = frame0[IP]
print(ip)
Output:
[CRITICAL] 05/11/2025 11:06:11 AM - ProtocolError: PCAP-NG: [pack_flags] option must be in Packet Block, but found in 168627466 block.
pcapkit.utilities.exceptions.ProtocolError: PCAP-NG: [pack_flags] option must be in Packet Block, but found in 168627466 block.
This happens with all PCAP-NG files I try, but here's a simple test case file:
Running with PCAPKIT_DEVMODE:
project/venv/lib/python3.12/site-packages/pcapkit/__init__.py:0: DevModeWarning: development mode enabled
PCAPKIT_DEVMODE=true
[CRITICAL] 05/11/2025 11:03:03 AM - ProtocolError: PCAP-NG: [pack_flags] option must be in Packet Block, but found in 168627466 block.
Traceback (most recent call last):
File "project/test.py", line 3, in <module>
extraction = extract(fin="in.pcapng", nofile=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/interface/core.py", line 122, in extract
return Extractor(fin=fin, fout=fout, format=format,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/foundation/extraction.py", line 825, in __init__
self.run() # start extraction
^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/foundation/extraction.py", line 456, in run
self._exeng.run()
File "project/venv/lib/python3.12/site-packages/pcapkit/foundation/engines/pcapng.py", line 135, in run
shb = P_PCAPNG(ext._ifile, num=0, sct=1, ctx=None)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/protocol.py", line 521, in __init__
self.__post_init__(file, length, **kwargs) # type: ignore[arg-type]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 1046, in __post_init__
self._info = self.unpack(length, _read=_read, _seek_set=_seek_set, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 866, in unpack
data = self.read(length, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 918, in read
block = meth(schema.block, header=schema)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 1435, in _read_block_shb
options=self._read_pcapng_options(schema.options),
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 1935, in _read_pcapng_options
data = meth(schema, options=options)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "project/venv/lib/python3.12/site-packages/pcapkit/protocols/misc/pcapng.py", line 2950, in _read_option_pack_flags
raise ProtocolError(f'PCAP-NG: [pack_flags] option must be in Packet Block, '
pcapkit.utilities.exceptions.ProtocolError: PCAP-NG: [pack_flags] option must be in Packet Block, but found in 168627466 block.