如何将十六进制转储从4个十六进制数字组转换为2个十六进制数字组

时间:2017-12-27 11:49:34

标签: linux wireshark

如果我有以下文本格式的数据包捕获,这是 fortigate或fortimail

中的cli数据包捕获
FortiMail # diag sniffer packet port1 'tcp port 443' 3
interfaces=[port1]
filters=[tcp port 443]
10.651905 192.168.0.1.50242 -> 192.168.0.2.443: syn 761714898
0x0000 0009 0f09 0001 0009 0f89 2914 0800 4500 ..........)...E.
0x0010 003c 73d1 4000 4006 3bc6 d157 fede ac16 .<s.@.@.;..W....
0x0020 0ed8 c442 01bb 2d66 d8d2 0000 0000 a002 ...B..-f........
0x0030 16d0 4f72 0000 0204 05b4 0402 080a 03ab ..Or............
0x0040 86bb 0000 0000 0103 0303 ..........

如何将其转换为此格式,以便能够使用 text2pcap 将其转换为pcap。因此可以在 wireshark 中轻松打开。

FortiMail # diag sniffer packet port1 'tcp port 443' 3
interfaces=[port1]
filters=[tcp port 443]
10.651905 192.168.0.1.50242 -> 192.168.0.2.443: syn 761714898
0000 00 09 0f 09 00 01 00 09 0f 89 29 14 08 00 45 00 ..........)...E.
0010 00 3c 73 d1 40 00 40 06 3b c6 d1 57 fe de ac 16 .<s.@.@.;..W....
0020 0e d8 c4 42 01 bb 2d 66 d8 d2 00 00 00 00 a0 02 ...B..-f........
0030 16 d0 4f 72 00 00 02 04 05 b4 04 02 08 0a 03 ab ..Or............
0040 86 bb 00 00 00 00 01 03 03 03 ..........

2 个答案:

答案 0 :(得分:0)

在旧的Wireshark Ask Q&amp; A网站上询问并回答了一个非常类似的问题。 Here是该问题的链接,为方便起见,我的答案逐字逐句发布:

是的,您可以使用text2pcap将其转换为pcap文件,但您首先需要按照text2pcap接受的格式按摩数据,因为目前不支持所描述的格式text2pcap

首先,您可以使用Kurt Knochner的perl脚本将数据转换为合适的格式,作为this问题的答案,并在此处复制以方便使用:

#!/usr/bin/perl

$| = 1;

my $regexp_time = '(\d\d:\d\d:\d\d\.\d+ )';
my $regexp_hex = '(0x\d+:\s+)([0-9a-f ]+)+  ';

while (<STDIN>) {

   my $input = $_;

   if ($input =~ /^$regexp_time/) {
      print "$1\n";
   }

   if ($input =~ /$regexp_hex/) {
      my $counter = $1;
      my $line = $2;

      $line =~ s/ //g;
      $counter =~ s/(0x|:)//g;

      print $counter . join(' ', ( $line =~ m/../g )) . "\n";
   }
}

假设 tcpdump 的输出保存在名为tcpdump.txt的文件中,而Kurt的perl脚本保存为convert.pl,则运行:

cat tcpdump.txt | convert.pl > tcpdump_converted.txt

完成后,在转换后的文件上运行text2pcap

text2pcap -l 101 tcpdump_converted.txt tcpdump_converted.pcap

请注意,我在此指定&#34;原始IP&#34; 封装。有关链接类型,请参阅http://www.tcpdump.org/linktypes.html

我意识到您的输出不是从 tcpdump 生成的,因此脚本可能无法正常完全,但它不应该&如果它没有做你需要它开箱即用的东西,那么很难根据你的需要定制它。

答案 1 :(得分:0)

我通过2个VIM替换命令解决了这个问题

这个将所有4位十六进制替换为2位十六进制

%s/\s\([0-9a-f]\{2}\)\([0-9a-f]\{2}\)/ \1 \2 /g

这一行从行的开头删除0x

%s/^0x//

然后运行:

 text2pcap in-mod.txt out.pcap