修复损坏的 PCAP 文件——从证据出发,不是盲目转换

协议工程师在编辑、转换或将其交给其他工具之前应如何处理截断或损坏的 PCAP 文件。

PCAP, 修复, 抓包, 故障排除

损坏的 PCAP 文件可能会在最糟糕的情况下停止调查。捕获的数据可能是来自客户现场、实验室复制品或生产事件的唯一证据。当工具拒绝打开它时,最快的冲动就是转换它、修剪它或通过另一个解析器运行它。

那可以。它还可能破坏解释问题所在的线索。修复应该从证据开始。

确定故障边界

在更改文件之前,确定失败的位置:

  • 无法读取全局标头
  • 链接类型是意外的
  • 数据包头不完整
  • 捕获的长度超过剩余文件大小
  • 原始长度和捕获长度不一致
  • 时间戳字段看起来无效
  • 数据包数据被截断
  • 最后一个有效数据包后保留尾随字节

每次故障都意味着不同的修复策略。错误的全局标头与截断的最后一个数据包不同。错误的链接类型与校验和卸载混淆不同。

保留原始捕获

切勿覆盖原始捕获。修复工作流程应创建一个新文件并记录更改的内容。如果原始文件是支持案例、法律审查或供应商升级中的证据,则原始字节很重要。

严格的工作流程可以保证:

  • 原始文件哈希
  • 解析器失败位置
  • 失败前有效数据包计数
  • 字节被修剪或重写
  • 数据包索引受影响
  • 输出文件哈希值
  • 解释为什么编辑是安全的注释

这不是官僚主义。这就是工程师避免使捕获变得不那么可信的方法。

常见的腐败模式

许多 PCAP 腐败案件都很简单:

  • 捕获过程在写入过程中被中断
  • 文件在作者关闭之前已被复制
  • 磁盘空间用完
  • 工具写入了无效的数据包长度
  • 错误的文件类型被重命名为“.pcap”
  • 链路层期望与有效负载不匹配

修理应与图案相符。如果只有最终数据包不完整,则修剪最终部分记录可以恢复有用的前缀。如果整个文件中的数据包长度不一致,则在重写之前捕获可能需要更深入的验证。

不要将修复视为正常化

修复意味着尽可能多地保留有效证据。标准化意味着将数据重写为首选形状。这些是不同的工作。

例如,更改时间戳、重新计算校验和或重写链路层标头可能会在以后有用,但这些操作不应混合到第一个恢复步骤中。首先恢复可以信任的东西。然后决定控制手术是否合适。

PCAP 手术适合的场合

PCAP 手术专为仔细捕获证据审查和受控重写工作流程而构建。它并不是试图成为一个广泛的数据包播放器或替代所有分析工具。它的作用是帮助工程师检查捕获元数据,识别文件失败的位置,并仅在证据支持该操作时应用编辑。

对于损坏的文件,有价值的输出是:

  • 文件的哪一部分有效
  • 解析失败的地方
  • 采取了什么修复措施
  • 哪些数据包或字节受到影响
  • 生成的文件是否可以由下游工具打开

这就是“我运行了转换器”和“我可以解释修复过程”之间的区别。