Appearance
Appearance
| 编号 | 名称 | 描述 | 0 | 保留 | 未使用。 | 1 | 文件首选项 | 包含整个文件的某些首选项(不是按 SHB section),定义见后文。 | 2 | 解密密钥 | 包含解密密钥信息,用于解密 packet 内容,定义见后文。
请注意,即使这些选项位于我们的某个 Custom Block 内部,它们仍然使用 Custom Option 进行编码,因此也带有我们的 PEN 编号。
由于 Option Entry Types 有 40 亿个编号,因此没有必要为每种块类型设置不同的编号空间;相反,我们可以在所有 Block Entry Types 中保留某个给定的 Option Entry Type 编号。
未使用。
一个 UTF-8 字符串,表示要应用的显示过滤器,使用 Wireshark 显示过滤器语法。请注意,这是一个用于限制显示内容的显示过滤器,但文件中可能还有其他不匹配此过滤器的 packet。
示例:"http && tcp.port == 8080"
一个 UTF-8 字符串,表示用于限制文件中条目的显示过滤器,使用 Wireshark 显示过滤器语法。
示例:"http && tcp.port == 8080"
一个 UTF-8 字符串,表示要应用的着色过滤器规则,使用 Wireshark 着色过滤器语法。这个选项当然可以重复多次。
示例:"@sip@sip@[11384,50442,58072][65535,65535,65535]"
一个 UTF-8 字符串,其格式待定。
此选项添加到 EPB 中,是一个 uint32,用于标识此 packet 在此 SHB section 中使用的 Decryption Key Block。(即类似于 IDB 的 Interface ID)如果某个加密发生在不同于另一个加密的层上(例如 TLS over IPSEC),同一个 EPB 中可以有多个此类选项。
示例:'0'
一个可变长度的字节序列,表示此选项在 Decryption Key Block 中使用的实际解密密钥。
一个可变长度的字节序列,表示初始化向量(如有必要);此选项用于 Decryption Key Block。
一个可变长度的字节序列,表示消息认证密钥(如有必要);此选项用于 Decryption Key Block。
为了跨平台工作且避免字节序混淆,Entry 中的所有字段,包括 Entry Type 编号字段,都以小端格式编码。
请注意,Entry-specific Data 中的二进制 IPv4 地址将编码为四个单独的字节,而不是 uint32(因此也可以认为这是网络字节序/大端),这也是 Wireshark 内部通常存储 IPv4 地址的方式。
Entry 中的内部字段不进行填充,也不提供特定的对齐保证。当然,在 pcapng 文件中编码时,Block 或 Option 中的整个 Entry 会被填充,但这是由较低层的 pcapng writer 透明完成的。
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +---------------------------------------------------------------+ 0 | Block Type = 0x00000BAD or 0x40000BAD | +---------------------------------------------------------------+ 4 | Block Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 8 | Wireshark Private Enterprise Number (PEN) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+12 | Block Entry Type | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+16 | Block Entry Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+20 / / / Block Entry-specific Data / / variable length, padded to 32 bits / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ / / / Options (variable) / / / +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Block Total Length | +---------------------------------------------------------------+Block Entry Length 定义 Block Entry-specific Data 的长度(以字节为单位),不包括填充。此字段用于确定填充字节数,以及是否存在 Options。
File Preferences Entry 包含整个文件的某些首选项(不是按 SHB section)。每个文件只能有一个这样的条目;额外的条目会被忽略。此块应出现在第一个 SHB 之后、第一个 packet block(EPB/SPB)之前。此块中的必填字段是:major、minor 和 revision 版本号。其他所有内容都作为选项处理。
对于 Wireshark Custom Block 的 "Block Entry-specific Data" 部分,File Preference Entry 的格式如下:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Major Version | Minor Version | Revision |+---------------------------------------------------------------+Major Version:创建这些首选项的 Wireshark 主版本号,一个 uint16。
Minor Version:创建这些首选项的 Wireshark 主版本号,一个 uint8。
Revision:创建这些首选项的 Wireshark revision 版本号,一个 uint8。
Decryption Key Entry 包含解密密钥信息,用于解密由此块中的选项以及相应 EPB block 中的选项标识的 packet 内容。每个 SHB section 中可以出现多个此 Decryption Block,每个对应一个不同的解密密钥。此块的作用域仅限于其 SHB section,因此使用 0x40000BAD block type code,含义是“如果不理解我,则不要复制”。
此块中的必填字段是:key type、packet layer type,以及给定 key type 和 layer type 所需的任何选项。例如,密钥本身位于 Decryption Key Value 选项中,IV 位于 Decryption Key IV 选项中,等等。
使用此项的每个 EPB 也会添加相关 Options,如 Options 部分所定义。
对于 Wireshark Custom Block 的 "Block Entry-specific Data" 部分,Decryption Key Entry 的格式如下:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Decryption Key Type | Packet Layer Type |+---------------------------------------------------------------+Decryption Key Type:一个 uint16 类型编号,用于确定解密和认证所使用的算法。当前有效值为:
| 类型 | 含义 | 1 | AES 128-bit,CBC-mode,SHA-1 HMAC | 2 | AES 256-bit,CBC-mode,SHA-1 HMAC | x | ……此处还有更多……
(我们是否应该将 HMAC 与加密拆分开,而不是像上面那样组合?)
Packet Layer Type:一个 uint16 类型编号,用于帮助确定 packet 中哪个协议层使用此解密信息,并帮助排查问题。
| 类型 | 含义 | 1 | SSLv3 | 2 | TLSv1 | 3 | TLSv1.1 | x | ……此处还有更多……
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Custom Option Code | Option Length |+---------------------------------------------------------------+| Wireshark Private Enterprise Number (PEN) |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Option Entry Type |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+/ Option Entry-specific Data // variable length, padded to 32 bits /+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Custom Option Code 编号是 pcapng 中为 Custom Options 定义的编号之一,可以是字符串或二进制,也可能设置了 do-not-copy 位。
导入自 https://wiki.wireshark.org/Development/PcapngCustom,时间为 2020-08-11 23:12:59 UTC