hexdump命令将任何文件转换为十六进制值。 但是,如果我有十六进制值并且我想要反转过程怎么办?这可能吗?
答案 0 :(得分:6)
有一个名为xxd
的类似工具。如果仅使用文件名运行xxd
,则会以相当标准的十六进制转储格式转储数据:
# xxd bdata
0000000: 0001 0203 0405
......
现在,如果使用xxd
选项将输出传回-r
并将其重定向到新文件,则可以将十六进制转储转换回二进制文件:
# xxd bdata | xxd -r >bdata2
# cmp bdata bdata2
# xxd bdata2
0000000: 0001 0203 0405
答案 1 :(得分:2)
如果只有:MENU
CLS
SETLOCAL
SET QUIT=FALSE
SET /P INPUTCHOICES=Type 1, 2, 3 or 4 and press ENTER:
CALL :VALIDATOR
ENDLOCAL
:validator
call :check 1
call :check 2
call :check 3
call :check 4
call :check "R"
call :check "S"
GOTO MENU
:check
IF %INPUTCHOICES% == %~1 ( CALL :EXECUTECHOICES %INPUTCHOICES% )
exit /b 0
生成的十六进制转储,则可以使用以下命令
hexdump
sed -E 's/ /: /;s/ (..)(..)/ \2\1/g' dump | xxd -r
部分将sed
的格式转换为hexdump
的格式,至少到目前为止xxd
都有效。
答案 2 :(得分:2)
我写了一个简短的AWK脚本,它将hexdump -C
的输出反向返回给
原始数据。像这样使用:
reverse-hexdump.sh hex.txt > data
处理'*'重复标记并生成原始数据,即使是二进制也是如此。
hexdump -C
和reverse-hexdump.sh
构成数据往返对。它是
在这里可用:
答案 3 :(得分:1)
作为一个不擅长 bash 的人,我无法理解已经发布的示例。 以下是我最初搜索时对我有帮助的内容:
将您的文本文件“AYE.TXT”转换成一个名为“BEE.TXT”的十六进制转储
xxd -p "AYE.TXT" > "BEE.TXT"
获取你的十六进制转储文件(“BEE.TXT”)并将其转换回 ascii 文件“CEE.TXT”
xxd -r -p "BEE.TXT" > "CEE.TXT"
现在您有了一些简单的工作代码,请随时查看 命令行上的“xxd -help”以解释所有这些标志的作用。 (那部分是简单的部分,难的部分是 bash 语法的细节)
答案 4 :(得分:0)
有很多更优雅的方法可以完成此操作,但是当从hexdump -C some_file.bin
生成的十六进制转储中重新生成二进制文件时,我很快就破解了一些适用于我的东西(tm): >
sed 's/\(.\{8\}\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\)/\1: \2\3 \4\5 \6\7 \8\9/g' some_file.hexdump | sed 's/\(.*\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\) \(..\) |/\1 \2\3 \4\5 \6\7 \8\9 /g' | sed 's/.$//g' | xxd -r > some_file.restored
基本上,使用2个sed
进程,每个进程都是每一行的一部分。丑陋,但有人可能会觉得有用。