Built-in Support¶
PCAP Tools¶
pcapkit.toolkit.pcap contains the adapters for the PCAP format.
The reassembly and flow tracing adapters return the data their
pcapkit.foundation counterpart consumes, or None if the frame
cannot be used for it. The TCP adapters here and in
pcapkit.toolkit.pcapng read the segment with
tcp_segment().
- pcapkit.toolkit.pcap.ipv4_reassembly(frame)[source]¶
Make data for IPv4 reassembly.
- Parameters:
frame (
Frame) – PCAP frame.- Return type:
- Returns:
Data for IPv4 reassembly.
If the
framecan be used for IPv4 reassembly. A frame can be reassembled if it contains IPv4 layer (IPv4) and the DF (IPv4.flags.df) flag isFalse.If the
framecan be reassembled, then thedictmapping of data for IPv4 reassembly (c.f. reasm.ipv4.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcap.ipv6_reassembly(frame)[source]¶
Make data for IPv6 reassembly.
- Parameters:
frame (
Frame) – PCAP frame.- Return type:
- Returns:
Data for IPv6 reassembly.
If the
framecan be used for IPv6 reassembly. A frame can be reassembled if it contains IPv6 layer (IPv6) and IPv6 Fragment header (RFC 2460 Section 4.5, i.e.,IPv6_Frag).If the
framecan be reassembled, then thedictmapping of data for IPv6 reassembly (reasm.ipv6.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcap.tcp_reassembly(frame)[source]¶
Make data for TCP reassembly.
- Parameters:
frame (
Frame) – PCAP frame.- Return type:
- Returns:
Data for TCP reassembly.
If the
framecan be used for TCP reassembly. A frame can be reassembled if it contains TCP layer (TCP), or a TCP segment whose header the TCP parser rejected, as it does one the snapshot length cut short (#1518).If the
framecan be reassembled, then thedictmapping of data for TCP reassembly (reasm.tcp.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcap.tcp_traceflow(frame, *, data_link)[source]¶
Trace packet flow for TCP.
- Parameters:
- Return type:
- Returns:
Data for TCP flow tracing.
If the
framecan be used for TCP flow tracing. A frame can be traced if it contains TCP layer (TCP), or a TCP segment whose header the TCP parser rejected, as it does one the snapshot length cut short (#1518).If the
framecan be traced, then thedictmapping of data for TCP flow tracing (trace.tcp.packet) will be returned; otherwise, returnsNone.
See also
Auxiliary Functions¶
- pcapkit.toolkit.pcap.tcp_segment(frame)[source]¶
The TCP segment
framecarries, orNoneif it carries none.The TCP reassembly and flow tracing adapters of this module and of
pcapkit.toolkit.pcapngall read the segment with this.- Parameters:
frame (
ProtocolBase) – PCAP frame or PCAP-NG block.- Return type:
- Returns:
The fields of the TCP layer if
pcapkitparsed one, with those of the IP layer that carries it – in a tunnel, the innermost (#1581). Otherwise, the fields of the fixed 20-octet TCP header (RFC 9293 Section 3.1) if the payload of the innermost IP layer is aRawthe TCP parser rejected, of protocol TCP, from a datagram that is not a later fragment, with at least those 20 octets captured; elseNone. A segment pastFRAME_LAYER_LIMITis kept raw without being parsed, not rejected, so it is not read (#1610).
Note
A capture snapped inside the TCP header leaves a Data Offset that runs past the captured octets, and the TCP parser rejects such a header by design (#1404), so the segment arrives as
Raw. The ports, numbers and flags are all in the fixed header, so the segment still belongs to its flow, as it does fordpkt,scapyand Wireshark (#1518). The header and payload are then the captured octets either side of the Data Offset. Inside a tunnel, this holds of the IP layer carrying the segment, as it does without one.
- class pcapkit.toolkit.pcap.TCPSegment(ip: Data_IPv4 | Data_IPv6, srcport: int, dstport: int, seq: int, ack: int, syn: bool, fin: bool, rst: bool, header: bytes, payload: bytes)[source]¶
Bases:
NamedTupleThe fields of a TCP segment that the reassembly and flow tracing records take.
tcp_segment()returns one.
PCAP-NG Tools¶
pcapkit.toolkit.pcapng contains the adapters for the PCAP-NG format.
The reassembly and flow tracing adapters return the data their
pcapkit.foundation counterpart consumes, or None if the frame
cannot be used for it.
- pcapkit.toolkit.pcapng.ipv4_reassembly(frame)[source]¶
Make data for IPv4 reassembly.
- Parameters:
frame (
PCAPNG) – PCAP-NG frame.- Return type:
- Returns:
Data for IPv4 reassembly.
If the
framecan be used for IPv4 reassembly. A frame can be reassembled if it contains IPv4 layer (IPv4) and the DF (IPv4.flags.df) flag isFalse.If the
framecan be reassembled, then thedictmapping of data for IPv4 reassembly (c.f. reasm.ipv4.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcapng.ipv6_reassembly(frame)[source]¶
Make data for IPv6 reassembly.
- Parameters:
frame (
PCAPNG) – PCAP-NG frame.- Return type:
- Returns:
Data for IPv6 reassembly.
If the
framecan be used for IPv6 reassembly. A frame can be reassembled if it contains IPv6 layer (IPv6) and IPv6 Fragment header (RFC 2460 Section 4.5, i.e.,IPv6_Frag).If the
framecan be reassembled, then thedictmapping of data for IPv6 reassembly (reasm.ipv6.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcapng.tcp_reassembly(frame)[source]¶
Make data for TCP reassembly.
- Parameters:
frame (
PCAPNG) – PCAP-NG frame.- Return type:
- Returns:
Data for TCP reassembly.
If the
framecan be used for TCP reassembly. A frame can be reassembled if it contains TCP layer (TCP), or a TCP segment whose header the TCP parser rejected, as it does one the snapshot length cut short (#1518).If the
framecan be reassembled, then thedictmapping of data for TCP reassembly (reasm.tcp.packet) will be returned; otherwise, returnsNone.
- pcapkit.toolkit.pcapng.tcp_traceflow(frame, *, nanosecond=False)[source]¶
Trace packet flow for TCP.
- Parameters:
- Return type:
- Returns:
Data for TCP flow tracing.
If the
framecan be used for TCP flow tracing. A frame can be traced if it contains TCP layer (TCP), or a TCP segment whose header the TCP parser rejected, as it does one the snapshot length cut short (#1518).If the
framecan be traced, then thedictmapping of data for TCP flow tracing (trace.tcp.packet) will be returned; otherwise, returnsNone.
See also
Auxiliary Functions¶
- pcapkit.toolkit.pcapng.block2frame(block, *, nanosecond=False)[source]¶
Convert PCAP-NG block to PCAP frame.
- Parameters:
block (
EnhancedPacketBlock|SimplePacketBlock|PacketBlock) – PCAP-NG block.nanosecond (
bool) – Whether to use nanosecond precision.
- Return type:
- Returns:
PCAP frame.