0

我是 bash/awk 编程的新手,很快需要你的帮助

这是通过 tcpdump 捕获的 ipv6 tcp 数据包的十六进制输出 -

 6000 0000 0018 0620 0000 0000
 0000 0000 0000 0000 0000 0001 0000 0000
 0000 0000 0000 0000 0000 0002 *0026 0026
 0000 0001 0000 0002 {5}412 0065 0034 0000*
 6162 6364    

{5} 以 32 位字指定 tcp 数据包长度,tcp 数据包为 b/w *s。

 (* and {} are used to clear the question ,they are not 
  present actually in output)

现在我需要使用 bash/awk 脚本从该信息中提取 tcp 标头。

我想我需要逐字节读取文件,直到 tcp 指定长度,但不知道该怎么做。

因此,任何想法如何从上面指定的输出中提取 tcp 信息都假设它已被写入文件中。

提前谢谢..

4

1 回答 1

1

使用允许您设置 RecordSeparator (RS) 和 OutputRecordSeparator (ORS) 使用的字符的 awk 功能,并使用 NumberRecord (NR) var 来监视您打印的记录的哪一部分。

awk '{BEGIN RS=" ";ORS="\n";} { if (NR >20 && NR < 31) print $0}' hexFile

如果您提供有关您的文件的更多详细信息(这些数据的重复集看起来如何?)和预期的输出,我可能会让这对您更有效率。

我希望这有帮助。

于 2011-10-25T02:51:05.700 回答