Hexdump命令反转

时间:2017-05-01 18:14:38

标签: linux reverse-engineering hexdump

hexdump命令将任何文件转换为十六进制值。 但是,如果我有十六进制值并且我想要反转过程怎么办?这可能吗?

5 个答案:

答案 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 -Creverse-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进程,每个进程都是每一行的一部分。丑陋,但有人可能会觉得有用。