0

我正在用 perl 解析一个 pcap 文件。我有请求和回应。我想找到所有未完成的交易(请求没有响应)。我的请求看起来像 ReqInfo、ReqData、ReqMsg 和响应 RespInfo、RespData、RespMsg。我已经完成了 Req 和 Resp 的基本计数。请求数比响应数大 1。它是大文件,无法确定错过了哪个请求。我只管理过

perl -lne 'END {print $c} map ++$c, /ReqInfo/g' file.pcap

请求和响应由 transactionID 绑定。我计划在每次成功的 ReqInfo 后将 transactionID 添加到数组中,并在每次 RespInfo 匹配后从数组中删除 transactionID。在整个搜索之后,我希望该数组包含所有孤立事务 ID 的列表。因为它是 pcap 文件,所以没有带分隔符的规则。我可以在单行中有一堆 Req,也可以在单独的行中有每个 Req,或者在多行中有碎片数据

我正在寻找在 ReqInfo 之后找到第一次出现 transactionID 的方法。我可以在单行中拥有一堆 ReqInfo,或者在单独的行中拥有每个 ReqInfo,或者在多行中拥有碎片数据

4

1 回答 1

1

找到请求后,

++$c{$tran_id}

找到回复后,

--$c{$tran_id}
  • 任何具有相同数量的请求和响应的事务都将得分为零。
  • 任何缺少响应的交易最终都会得到正分。
  • 任何缺少请求的事务都会以负分结束。
于 2013-01-06T22:06:46.997 回答