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

Udi*_*pta 76 c command hexdump binaryfiles command-line-arguments

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

 udit@udit-Dabba ~ $ cat file.enc
 Salted__s?bO??<0?F???Jw!???]?:`C?LK??l
Run Code Online (Sandbox Code Playgroud)

使用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
Run Code Online (Sandbox Code Playgroud)

现在我给了一个其他系统的文件,其内容是这样的..

 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
Run Code Online (Sandbox Code Playgroud)

我需要从这个hexdump中找出相同的二进制信息.

怎么办?

如果没有开关那么C代码也可以正常工作.

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

局限性:

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

Ada*_*eld 122

正如@ user786653建议的那样,使用该xxd(1)程序:

xxd -r -p input.txt output.bin
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“xxd”使用非常老式的参数处理,因此以下所有行为都不同:“xxd -rp”“xxd -pr”“xxd -r -p”。这三个中只有最后一个适用于此用例。 (5认同)
  • 添加使用`echo"hex"| xxd -r -p - 从输出管道标准输出 (4认同)
  • 也可以用来获取二进制哈希值——比如`echo something | sha256sum | xxd -r -p -` (4认同)
  • 解释标志:https://explainshell.com/explain?cmd=xxd+-r+-p (3认同)