首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么xxd要添加字符?

为什么xxd要添加字符?
EN

Stack Overflow用户
提问于 2019-07-19 08:16:02
回答 2查看 1K关注 0票数 0

我正在尝试将od命令从没有hexdumpbase64工具的系统中反转。

我是这样做的(当然,在现实中,编码是在“小”系统中进行的,解码是在我的工作站上完成的,但是为了测试它,我首先在一行中尝试了整个过程:

代码语言:javascript
复制
echo TEST | od -tx1 | xxd -r

当然,echo TEST只是这里的占位符。cat test.bmp或其他任何东西。

代码语言:javascript
复制
> echo TEST
TEST

> echo TEST | od -tx1
0000000 54 45 53 54 0a
0000005 

> echo TEST | od -tx1 | xxd -r
TEST

这看起来是对的,但是它是不同的,如果我们再次将它提供给od,我们可以在这里看到:

代码语言:javascript
复制
> echo TEST | od -tx1 | xxd -r | od -tx1
0000000 54 45 53 54 0a 00 00 00
0000010 

为什么xxd -r要添加那些00s?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-19 10:35:45

如果我完全去掉这些偏移量,这似乎是可行的:

代码语言:javascript
复制
> echo TEST | od -tx1 -An
 54 45 53 54 0a
> echo TEST | od -tx1 -An | xxd -r -p
TEST
> echo TEST | od -tx1 -An | xxd -r -p | od -tx1 -An
 54 45 53 54 0a

对啰!注意字节前面的额外“”。它似乎没有效果。

票数 0
EN

Stack Overflow用户

发布于 2019-07-19 09:03:04

您得到这三个nul字节是因为xxd -r尝试并未能解析与其预期格式不同的输入。od -tx1添加了一个带有偏移量但没有数据字节的额外行。另外,xxd中的偏移量在它们之后有一个冒号,并以不同的宽度打印,并且显示可打印的字节以及十六进制转储,并且可能在不同的基中.关于这一点,xxd不能很好地发挥作用,因此会增加额外的字节。

示例:

代码语言:javascript
复制
$ echo TEST | xxd
00000000: 5445 5354 0a                             TEST.
$ echo TEST | xxd | xxd -r
TEST
$ echo TEST | xxd | xxd -r | xxd    
00000000: 5445 5354 0a                             TEST.
$ echo TEST | xxd | xxd -r | od -tx1
0000000 54 45 53 54 0a
0000005
$ echo TEST | od -tx1 | head -1 | xxd -r | od -tx1 
0000000 54 45 53 54 0a
0000005

看看在为xxd -r提供预期的xxd样式输入时,它们是如何不存在的吗?当你从od的输出中剪除额外的一行时,它们是如何不存在的呢?不要混合和匹配不兼容的数据格式。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57108284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档