linux - hexdump 和 xxd 在 red hat 和 ubuntu/mint 上产生不同的输出

标签 linux shell redhat hexdump xxd

首先,我要提到在我的 linux mint/ubuntu 系统上发生的一切......

udit@udit-Dabba ~/ah $ xxd -r -p input.txt output.txt

udit@udit-Dabba ~/ah $ cat input.txt 
60 00 00 00 00 14 06 20 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 02 00 15 00 15 7A 32 B1 08 
00 00 00 00 50 02 FF FF 7E 95 00 00 00 00 02 29 

udit@udit-Dabba ~/ah $ cat output.txt
` z2P��~�)

udit@udit-Dabba ~/ah $ hexdump -C output.txt 

00000000  60 00 00 00 00 14 06 20  00 00 00 00 00 00 00 00  |`...... ........|
00000010  00 00 00 00 00 00 00 01  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 00 00 00 02  00 15 00 15 7a 32 b1 08  |............z2..|
00000030  00 00 00 00 50 02 ff ff  7e 95 00 00 00 00 02 29  |....P...~......)|
00000040

udit@udit-Dabba ~/ah $ od -x output.txt 
0000000 0060 0000 1400 2006 0000 0000 0000 0000
0000020 0000 0000 0000 0100 0000 0000 0000 0000
0000040 0000 0000 0000 0200 1500 1500 327a 08b1
0000060 0000 0000 0250 ffff 957e 0000 0000 2902
0000100

现在,当我在 red hat 上尝试同样的事情时,出现了一些奇怪的行为。

[root@cc]$ xxd -r -p input.txt output.txt

[root@cc]$ cat input.txt 
60 00 00 00 00 14 06 20 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 
00 00 00 00 00 00 00 02 00 15 00 15 7A 32 B1 08 
00 00 00 00 50 02 FF FF 7E 95 00 00 00 00 02 29 

[root@cc]$ cat output.txt
` P~)[root@cc]$ hexdump -C output.txt 
00000000  60 00 00 00 00 14 06 20  00 00 00 00 00 00 00 00  |`...... ........|
00000010  00 00 00 00 00 00 00 01  00 00 00 00 00 00 00 00  |................|
00000020  00 00 00 00 50 02 ff ff  7e 95 00 00 00 00 02 29  |....P...~......)|
00000030

[root@cc]$ od -x output.txt 
0000000 0060 0000 1400 2006 0000 0000 0000 0000
0000020 0000 0000 0000 0100 0000 0000 0000 0000
0000040 0000 0000 0250 ffff 957e 0000 0000 2902
0000060

我无法找出为什么 red hat 和 linux mint/ubuntu 的输出之间会出现这种差异。

如果可能,请告诉我一些 awk/shell 来代替 xxd -r -p

执行相同的操作

请帮帮我!!

编辑:

在linux mint/ubuntu系统上..

 udit@udit-Dabba ~/ah $ hexdump -C input.txt
 00000000  36 30 20 30 30 20 30 30  20 30 30 20 30 30 20 31  |60 00 00 00 00 1|
 00000010  34 20 30 36 20 32 30 20  30 30 20 30 30 20 30 30  |4 06 20 00 00 00|
 00000020  20 30 30 20 30 30 20 30  30 20 30 30 20 30 30 20  | 00 00 00 00 00 |
 00000030  0a 30 30 20 30 30 20 30  30 20 30 30 20 30 30 20  |.00 00 00 00 00 |
 00000040  30 30 20 30 30 20 30 31  20 30 30 20 30 30 20 30  |00 00 01 00 00 0|
 00000050  30 20 30 30 20 30 30 20  30 30 20 30 30 20 30 30  |0 00 00 00 00 00|
 00000060  20 0a 30 30 20 30 30 20  30 30 20 30 30 20 30 30  | .00 00 00 00 00|
 00000070  20 30 30 20 30 30 20 30  32 20 30 30 20 31 35 20  | 00 00 02 00 15 |
 00000080  30 30 20 31 35 20 37 41  20 33 32 20 42 31 20 30  |00 15 7A 32 B1 0|
 00000090  38 20 0a 30 30 20 30 30  20 30 30 20 30 30 20 35  |8 .00 00 00 00 5|
 000000a0  30 20 30 32 20 46 46 20  46 46 20 37 45 20 39 35  |0 02 FF FF 7E 95|
 000000b0  20 30 30 20 30 30 20 30  30 20 30 30 20 30 32 20  | 00 00 00 00 02 |
 000000c0  32 39 20 0a 0a 0a 0a 0a                           |29 .....|
 000000c8

在红帽机器上..

 [root@cc]$ hexdump -C input.txt
 00000000  36 30 20 30 30 20 30 30  20 30 30 20 30 30 20 31  |60 00 00 00 00 1|
 00000010  34 20 30 36 20 32 30 20  30 30 20 30 30 20 30 30  |4 06 20 00 00 00|
 00000020  20 30 30 20 30 30 20 30  30 20 30 30 20 30 30 0a  | 00 00 00 00 00.|
 00000030  30 30 20 30 30 20 30 30  20 30 30 20 30 30 20 30  |00 00 00 00 00 0|
 00000040  30 20 30 30 20 30 31 20  30 30 20 30 30 20 30 30  |0 00 01 00 00 00| 
 00000050  20 30 30 20 30 30 20 30  30 20 30 30 20 30 30 20  | 00 00 00 00 00 |
 00000060  0a 30 30 20 30 30 20 30  30 20 30 30 20 30 30 20  |.00 00 00 00 00 |
 00000070  30 30 20 30 30 20 30 32  20 30 30 20 31 35 20 30  |00 00 02 00 15 0|
 00000080  30 20 31 35 20 37 41 20  33 32 20 42 31 20 30 38  |0 15 7A 32 B1 08|
 00000090  20 0a 30 30 20 30 30 20  30 30 20 30 30 20 35 30  | .00 00 00 00 50|
 000000a0  20 30 32 20 46 46 20 46  46 20 37 45 20 39 35 20  | 02 FF FF 7E 95 |
 000000b0  30 30 20 30 30 20 30 30  20 30 30 20 30 32 20 32  |00 00 00 00 02 2|
 000000c0  39 20 20 0a                                       |9  .|
 000000c4       

最佳答案

我不知道发生了什么,但是第三行在 red hat 上被吃掉了。

这就是你要的。使用 awk+bash 反向 hexdump。

echo 'ibase=16' | cat - hdump | tr ' ' \; | bc | awk '{printf("%c",$0)}'

用input.txt替换hdump

echo 'ibase=16' | cat - input.txt | tr ' ' \; | bc | awk '{printf("%c",$0)}' > output.txt

代码在这里找到: http://www.unix.com/shell-programming-scripting/132294-reverse-hexdump-without-xxd.html#post302404631

关于linux - hexdump 和 xxd 在 red hat 和 ubuntu/mint 上产生不同的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063773/

相关文章:

python - 如何在没有paramiko的情况下在windows上使用ssh和python?

linux - 服务器端 CGI 编程的版本控制

shell - gitlab-ci中的脚本不输出错误

Python 脚本不会在键盘快捷键上运行

linux - 我如何在Linux中符号链接(symbolic link)主目录

c - openssl 握手失败

java - 如何从 Java 运行 shell 脚本并让它在 JVM 关闭后继续运行?

html - html表中的mysql输出-shell脚本

python - 当 VLC 媒体进程每次在 Ubuntu 上启动时如何自动调用 Python 脚本?

python + 如何知道谁删除了python模块