【问题标题】:hexadecimal string to wireshark pcap十六进制字符串到wireshark pcap
【发布时间】:2019-02-19 10:38:03
【问题描述】:

我有一个十六进制字符串,我想将其转换为 Wireshark pcap。 Wireshark 接受以下格式的十六进制转储:

0000 00 00 00 00 00 aa 00 00 00 00 00 01 88 47 00 3e
0010 80 0a 00 00 d1 0a 10 00 89 02 20 01 05 46 00 00
0020 00 01 00 02 04 03 6d 64 31 02 03 6d 61 57 00 00
0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0060 00 00 00 00 00

我有以下流:

0000000000AA0000000000018847003E800A0000D10A100089022001054600000001000204036D643102036D615700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

我一直在 linux 中试验od -Ax -tc1 -v 命令,但似乎无法获得正确的输出。有谁知道如何做到这一点?

【问题讨论】:

  • 流是文本格式的吗?在文件中?
  • 是的,它在我传递给 od 命令的文件中。

标签: linux wireshark


【解决方案1】:

先把hex流放到一个文本文件“a.txt”中,

0000000000AA0000000000018847003E800A0000D10A100089022001054600000001000204036D643102036D615700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

然后将文本文件转换成二进制文件:

xxd -r -p a.txt a.bin

使用 od 和 text2pcap 将二进制文件转换为 pcap 文件。

od -Ax -tx1 -v a.bin | text2pcap - a.pcap

【讨论】:

    【解决方案2】:

    您可以使用以下脚本。这只是一种解决方法。 odhexdump 会将 0 解释为字符 '0',并使用字节 48,因此您可能无法获得正确的输出。该脚本读取两个字符 16 次,偏移量相应增加。我猜很容易理解:)

    #!/bin/bash
    off=0
    while [ 1 ]
    do
            printf "%04x " $off
            for ((i=0;i<16;i++))
            do
                    read -n 2 a
                    [ $? -ne 0 ] && echo && exit
                    echo -n "$a "
            done
            echo
            off=`expr $off + 16`
    done <test
    

    其中test 是保存流的文件。我得到了以下输出作为您的输入。

    0000 00 00 00 00 00 AA 00 00 00 00 00 01 88 47 00 3E
    0010 80 0A 00 00 D1 0A 10 00 89 02 20 01 05 46 00 00
    0020 00 01 00 02 04 03 6D 64 31 02 03 6D 61 57 00 00
    0030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0060 00 00 00 00 00
    

    【讨论】:

    • 我注意到od 正在返回字符零的十六进制值。感谢这个脚本。
    猜你喜欢
    • 2010-10-04
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2023-04-08
    • 2020-11-07
    相关资源
    最近更新 更多