Module pcap_parser::pcapng[][src]

Expand description

PCAPNG file format

See https://github.com/pcapng/pcapng for details.

There are several ways of parsing a PCAPNG file. The first method is to use parse_pcapng. This method requires to load the entire file to memory, and thus may not be good for large files.

The second method is to create a PcapNGCapture object, which implements the Capture trait to provide generic methods. However, this method also reads the entire file.

The third (and prefered) method is to use a PcapNGReader object.

The last method is to manually read the blocks using parse_sectionheaderblock, parse_block_le and/or parse_block_be.

File format and parsing

A capture file is organized in blocks. Blocks are organized in sections, each section starting with a Section Header Block (SHB), and followed by blocks (interface description, statistics, packets, etc.). A file is usually composed of one section, but can contain multiple sections. When a SHB is encountered, this means a new section starts (and all information about previous section has to be flushed, like interfaces).

Endianness

The endianness of a block is indicated by the Section Header Block that started the section containing this block. Since a file can contain several sections, a single file can contain both endianness variants.

Structs

An Enhanced Packet Block (EPB) is the standard container for storing the packets coming from the network.

An Interface Description Block (IDB) is the container for information describing an interface on which packet data is captured.

A Section (including all blocks) from a PcapNG file

The Section Header Block (SHB) identifies the beginning of a section of the capture capture file.

The Simple Packet Block (SPB) is a lightweight container for storing the packets coming from the network.

Unknown block (magic not recognized, or not yet implemented)

Enums

A block from a PcapNG file

Constants

Byte Order magic

Custom Block magic

Do-not-copy Custom Block magic

Decryption Secrets Block magic

Enhanced Packet Block magic

Interface Description Block magic

Interface Statistic Block magic

Name Resolution Block magic

Section Header Block magic

Systemd Journal Export Block magic

Simple Packet Block magic

Functions

Given the timestamp parameters, return the timestamp seconds, fractional part and precision (unit) of the fractional part.

parse_blockDeprecated

Parse any block, as big-endian

Parse any block, as little-endian

Parse an Enhanced Packet Block (big-endian)

Parse an Enhanced Packet Block (little-endian)

Parse an Interface Packet Block (big-endian)

Parse an Interface Packet Block (little-endian)

Parse one section (little or big endian)

Parse any block from a section (big-endian)

Parse any block from a section (little-endian)

Parse a SectionHeaderBlock (little or big endian)

Parse a SectionHeaderBlock (little or big endian)

Parse multiple sections (little or big endian)

Parse a Simple Packet Block (big-endian)

Parse a Simple Packet Block (little-endian)

Parse an unknown block (big-endian)

Parse an unknown block (little-endian)