【问题标题】:Shell magic wanted: format output of hexdump in a pipe想要的 Shell 魔法:管道中 hexdump 的格式输出
【发布时间】:2011-08-23 21:28:24
【问题描述】:

我正在调试通过 TCP 传输数据的程序的输出。 出于调试目的,我将接收程序替换为netcathexdump

netcat -l -p 1234 | hexdump -C

这将所有数据输出为一个不错的 hexdump,几乎就像我想要的那样。现在数据以长度不是 16 的倍数的固定块传输,导致输出中的行移位,这使得发现差异有点困难:

00000000  50 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |P...............|
00000010  00 50 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |.P..............|
00000020  00 00 50 00 00 00 00 00  00 00 00 00 00 00 00 00  |..P.............|

如何重新格式化输出,以便在 17 个字节后开始一个新行? 它应该看起来像这样:

50 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |P...............|
00                                                |.               |
50 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |P...............|
00                                                |.               |
50 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |P...............|
00                                                |.               |

使用 hexdumps -n 参数不起作用,因为它会在达到字节数后退出。 (除非有办法让 netcat 程序保持运行并将下一个字节无缝传送到新的 hexdump 实例)。

如果我可以在输出中使用watch -d 来突出显示行之间的变化,那将是非常棒的。

【问题讨论】:

  • 十六进制部分就足够了。
  • 您是否阅读了 hexdump 手册页上有关格式选项的所有信息?看起来你应该能够轻松地做你想做的事......
  • 我为你添加了“perl”标签,那些人可能会吃掉这个,你有 Perl 踢,对吧?

标签: perl shell formatting netcat hexdump


【解决方案1】:

对于没有字符部分的 hexdump。

hexdump -e '16/1 "%0.2x " "\n" 1/1 "%0.2x " "\n"'

【讨论】:

    【解决方案2】:

    我用这个:

    use strict;
    use warnings;
    use bytes;
    
    my $N = $ARGV[0];
    
    $/ = \$N;
    
    while (<STDIN>) {
        my @bytes = unpack("C*", $_);
        my $clean = $_;
        $clean =~ s/[[:^print:]]/./g;
        print join(' ', map {sprintf("%2x", $_)} @bytes),
        "  |", $clean, "|\n";
    }
    

    perl scriptname.pl N 运行它,其中 N 是您想要的每个块中的字节数。

    【讨论】:

      【解决方案3】:

      您也可以使用xxd -p 进行十六进制转储。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-09
        • 2022-10-18
        • 1970-01-01
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多