使用Linux命令将十六进制信息转换为二进制
我的 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 命令)
限制:
文件中的二进制信息是加密算法的输出,因此内容应该完全匹配...
I have this binary file on my Linux system...
udit@udit-Dabba ~ $ cat file.enc
Salted__s�bO��<0�F���Jw!���]�:`C�LKȆ�l
Using the hexdump command, I see its information like this:
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
Now I am given a file on some other system whose contents are like this:
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
And I need to find out that same exact binary information from this hexdump.
How can I proceed for that?
If there isn't any switch for that then C code will also work fine.
(But a Linux command with some switch is preferable)
Limitation:
The binary information in the file is output of an encryption algorithm, so contents should exactly match...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
正如 @user786653 建议的那样,使用
xxd(1)
程序:As @user786653 suggested, use the
xxd(1)
program:如果由于某些难以理解的企业原因,您无法
sudo apt install xxd
,则可以轻松地按照以下方式在Python中重新实现它:如何从长十六进制字符串创建 python 字节对象? with:它适用于文件和标准输入:
或:
这里是具有更好缩进的脚本:
自 Python 3.7 起,
bytes.fromhex
函数会忽略空格和换行符,因此无论格式的缩进详细信息如何,它都可以工作,根据文档:https://docs.python.org/3.12/library/stdtypes.html#bytes.fromhex在 Python 3.12.3、Ubuntu 24.04 上测试。
If for some unfathomably enterprisey reason you can't
sudo apt install xxd
, it is easy to reimplement it in Python as per: How to create python bytes object from long hex string? with:which works both with files and stdin:
or:
Here's the script with better indentation:
The
bytes.fromhex
function ignores whitespaces and newlines since Python 3.7, so it works regardless of the indentation details of the format, as per docs: https://docs.python.org/3.12/library/stdtypes.html#bytes.fromhexTested on Python 3.12.3, Ubuntu 24.04.