使用Linux命令将十六进制信息转换为二进制

134

我在我的Linux系统上有这个二进制文件...

 udit@udit-Dabba ~ $ cat file.enc
 Salted__s�bO��<0�F���Jw!���]�:`C�LKȆ�l

使用hexdump命令,我看到它的信息像这样:

 udit@udit-Dabba ~ $ hexdump -C file.enc
 00000000  53 61 6c 74 65 64 5f 5f  1b 73 a1 62 4f 15 be f6  |Salted__.s.bO...|
 00000010  3c 30 cc 46 ee 10 13 11  84 bf 4a 77 21 a4 84 99  |<0.F......Jw!...|
 00000020  0e 5d ef 11 18 3a 60 43  a0 4c 4b 1e c8 86 e6 6c  |.]...:`C.LK....l|
 00000030

现在我得到了另一个系统上的文件,它的内容是这样的:

 53 61 6c 74 65 64 5f 5f  1b 73 a1 62 4f 15 be f6
 3c 30 cc 46 ee 10 13 11  84 bf 4a 77 21 a4 84 99
 0e 5d ef 11 18 3a 60 43  a0 4c 4b 1e c8 86 e6 6c

我需要从这个十六进制转储中找到完全相同的二进制信息。

我该如何进行?

如果没有任何开关可用,那么C代码也可以正常工作。

(但带有一些开关的Linux命令更可取)

限制:

文件中的二进制信息是加密算法的输出,因此内容应完全匹配......


14
请查看xxd - user786653
@user786653 谢谢,这很有帮助。我知道-r但不知道-p,而且我需要它,所以才发了这个问题。 - Udit Gupta
1
关于同一主题,还请参阅:https://dev59.com/nnE85IYBdhLWcg3wx2n2 - Yves Martin
1个回答

229

根据@user786653的建议,使用xxd(1)程序:

xxd -r -p input.txt output.bin

19
使用以下命令将其添加: echo "hex" | xxd -r -p - 从管道标准输出中获取输入。 - Amanpreet
7
也可以用来获取二进制哈希值 - 如 echo something | sha256sum | xxd -r -p - - xdevs23
3
解释标志的含义:https://explainshell.com/explain?cmd=xxd+-r+-p - Alexander
3
请注意,xxd 使用非常古老的参数处理方式,因此以下所有命令行的行为都不同:xxd -rpxxd -prxxd -r -p。只有最后一个命令适用于这个用例。 - Michael Firth
@Amanpreet 不需要这样做,因为手册上说“如果没有指定输入文件,则读取标准输入。” - phuclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接