【问题标题】:Parsing a PCAP file - Why does this packet header timestamp contains SOH \01?解析 PCAP 文件 - 为什么此数据包标头时间戳包含 SOH \01?
【发布时间】:2023-03-10 12:47:01
【问题描述】:

我从 pcap 数据包头中提取前 4 个字节,它应该代表秒数。它们在 ByteStream 中按出现顺序排列(我使用的是 Haskell):

\192    (192)
\166    (166)
x       (120)
SOH     (01) (Start of Header)

我的理解是这四个字节可以读取为 32 位整数。然而,SOH 的存在让我很反感。如果我将 4 个字节解释为一个整数,我得到 20 亿,这是无效的(20 亿秒 = 63 年 => 无效,因为 UNIX 时代始于 1970 年,大约 45 年前)。

数据包头也以 NUL (00) 结尾。

我也不确定为什么四个字节被颠倒了,这可能是我如何从流中提取字节的副作用(使用 Get 函数和 getInt32)。 SOH不应该放在第一位吗?

【问题讨论】:

标签: haskell pcap packet-capture packet-sniffers packets


【解决方案1】:

您是否检查了 pcap 文件开头的幻数?其目的是1.识别文件格式; 2.让你确定字节顺序。这是一个方便的参考:https://wiki.wireshark.org/Development/LibpcapFileFormat#File_Format

【讨论】:

    猜你喜欢
    • 2017-03-29
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 2012-11-07
    • 2014-12-30
    • 2021-10-06
    相关资源
    最近更新 更多