Skip to content

Commit acd2823

Browse files
committed
working on pcapng protocol impl (added ISB & PACK options parsing)
* added PACK_* option schema / data * removed PacketBlock from global imports (obsolete)
1 parent 56daf53 commit acd2823

File tree

8 files changed

+455
-19
lines changed

8 files changed

+455
-19
lines changed

.vscode/settings.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,7 @@
222222
"plen",
223223
"pocsp",
224224
"ppcapkit",
225+
"prec",
225226
"prio",
226227
"prml",
227228
"PROTO",

pcapkit/protocols/data/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock',
5151
'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock',
5252
'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock',
53-
'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock',
53+
'PCAPNG_CustomBlock',
5454

5555
# Address Resolution Protocol
5656
'ARP', 'ARP_Address', 'ARP_Type',

pcapkit/protocols/data/misc/__init__.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@
5858
from pcapkit.protocols.data.misc.pcapng import NS_DNSIP6AddrOption as PCAPNG_NS_DNSIP6AddrOption
5959
from pcapkit.protocols.data.misc.pcapng import NS_DNSNameOption as PCAPNG_NS_DNSNameOption
6060
from pcapkit.protocols.data.misc.pcapng import Option as PCAPNG_Option
61-
from pcapkit.protocols.data.misc.pcapng import PacketBlock as PCAPNG_PacketBlock
6261
from pcapkit.protocols.data.misc.pcapng import SectionHeaderBlock as PCAPNG_SectionHeaderBlock
6362
from pcapkit.protocols.data.misc.pcapng import SimplePacketBlock as PCAPNG_SimplePacketBlock
6463
from pcapkit.protocols.data.misc.pcapng import \
@@ -100,7 +99,7 @@
10099
'PCAPNG_UnknownBlock', 'PCAPNG_SectionHeaderBlock', 'PCAPNG_InterfaceDescriptionBlock',
101100
'PCAPNG_EnhancedPacketBlock', 'PCAPNG_SimplePacketBlock', 'PCAPNG_NameResolutionBlock',
102101
'PCAPNG_InterfaceStatisticsBlock', 'PCAPNG_SystemdJournalExportBlock', 'PCAPNG_DecryptionSecretsBlock',
103-
'PCAPNG_CustomBlock', 'PCAPNG_PacketBlock',
102+
'PCAPNG_CustomBlock',
104103

105104
# No Payload
106105
'NoPayload',

pcapkit/protocols/data/misc/pcapng.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
'NS_DNSNameOption', 'NS_DNSIP4AddrOption', 'NS_DNSIP6AddrOption',
2121
'ISB_StartTimeOption', 'ISB_EndTimeOption', 'ISB_IFRecvOption', 'ISB_IFDropOption',
2222
'ISB_FilterAcceptOption', 'ISB_OSDropOption', 'ISB_UsrDelivOption',
23+
'PACK_FlagsOption', 'PACK_HashOption',
2324

2425
'NameResolutionRecord', 'UnknownRecord', 'EndRecord', 'IPv4Record', 'IPv6Record',
2526

@@ -750,6 +751,51 @@ class CustomBlock(PCAPNG):
750751
def __init__(self, type: 'Enum_BlockType', length: 'int', pen: 'int', data: 'bytes') -> 'None': ...
751752

752753

754+
class PACK_FlagsOption(Option):
755+
"""Data model for PCAP-NG file ``pack_flags`` options."""
756+
757+
#: Inbound / Outbound packet.
758+
direction: 'PacketDirection'
759+
#: Reception type.
760+
reception: 'PacketReception'
761+
#: FCS length.
762+
fcs_len: 'int'
763+
#: Link-layer-dependent error - CRC error (bit 24).
764+
crc_error: 'bool'
765+
#: Link-layer-dependent error - packet too long error (bit 25).
766+
too_long: 'bool'
767+
#: Link-layer-dependent error - packet too short error (bit 26).
768+
too_short: 'bool'
769+
#: Link-layer-dependent error - wrong Inter Frame Gap error (bit 27).
770+
gap_error: 'bool'
771+
#: Link-layer-dependent error - unaligned frame error (bit 28).
772+
unaligned_error: 'bool'
773+
#: Link-layer-dependent error - Start Frame Delimiter error (bit 29).
774+
delimiter_error: 'bool'
775+
#: Link-layer-dependent error - preamble error (bit 30).
776+
preamble_error: 'bool'
777+
#: Link-layer-dependent error - symbol error (bit 31).
778+
symbol_error: 'bool'
779+
780+
if TYPE_CHECKING:
781+
def __init__(self, type: 'Enum_OptionType', length: 'int', direction: 'PacketDirection',
782+
reception: 'PacketReception', fcs_len: 'int', crc_error: 'bool',
783+
too_long: 'bool', too_short: 'bool', gap_error: 'bool', unaligned_error: 'bool',
784+
delimiter_error: 'bool', preamble_error: 'bool', symbol_error: 'bool') -> 'None': ...
785+
786+
787+
class PACK_HashOption(Option):
788+
"""Data model for PCAP-NG ``pack_hash`` options."""
789+
790+
#: Hash algorithm.
791+
algorithm: 'Enum_HashAlgorithm'
792+
#: Hash value.
793+
hash: 'bytes'
794+
795+
if TYPE_CHECKING:
796+
def __init__(self, type: 'Enum_OptionType', length: 'int', algorithm: 'Enum_HashAlgorithm', hash: 'bytes') -> 'None': ...
797+
798+
753799
class PacketBlock(PCAPNG):
754800
"""Data model for PCAP-NG Packet Block (obsolete)."""
755801

0 commit comments

Comments
 (0)