问题标签 [xxd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
376 浏览

c++ - 我怎样才能以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

在我的makefile我有以下目标,它unsigned char使用xxd -i.

我将结果包装在匿名名称空间和标题保护中,以确保翻译单元内部和之间的多重包含安全。

如果我只有一个这样的资源,输出看起来像这样(实际内容已编辑)

以编程方式将 GCC__attribute__ ((unused))应用于这些字符数组的最佳方法是什么?我不希望 GCC 警告我最终未在任何给定 TU 中使用的任何资源,但我也不希望完全关闭“未使用变量”警告。

0 投票
4 回答
5361 浏览

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

首先,我要提到我的 linux mint/ubuntu 系统上发生的任何事情......

现在,当我在 red hat 上尝试相同的事情时,正在发生一些奇怪的行为。

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

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

请帮帮我!

编辑:

在 linux mint/ubuntu 系统上..

在红帽机上..

0 投票
5 回答
10691 浏览

parsing - 在 UNIX 中创建二进制文件

这个问题已经存在了一段时间,我想如果我能让它发挥作用,我应该提供一些奖励积分。

我做了什么……</h1>

最近在工作中,我编写了一个解析器,可以将二进制文件转换为可读格式。二进制文件不是带有10101010字符的 Ascii 文件。它已被编码为二进制。因此,如果我cat对文件执行操作,我会得到以下信息 -

所以我使用hexdump实用程序使文件显示以下内容并将其重定向到文件。现在我有了我的输出文件,它是一个包含十六进制值的文本文件。

在大量awk,sed和之后cut,脚本将十六进制值转换为可读文本。为此,我使用了偏移定位来标记每个转换参数的开始和结束位置。所有转换后的结果文件如下所示

我为什么这样做

我是一名测试工程师,手动验证二进制文件是一件很痛苦的事情。我必须手动解析偏移量并使用计算器转换它们并针对 Wireshark 和 GUI 进行验证。

现在是问题部分

我希望做与我所做的相反的事情。这是我的计划——

  • 有一个易于阅读的输入文本文件,其中包含Parameters : Values.
  • 用户可以简单地将值放在它们旁边(例如,日期将是一个参数,用户可以给出他们希望数据文件具有的日期)。
  • 该脚本将从输入文本文件中删除所有相关信息(用户提供的信息)并将它们转换为十六进制值。
  • 将文件转换为十六进制值后,我希望将其编码回二进制。

前三步完成

问题

一旦我的脚本将输入文本文件转换为具有十六进制值的文本文件,我就会得到一个如下所示的文件(注意我可以这样做cat

我的意图是将这个转换后的文件编码为二进制文件,这样当我cat对文件进行处理时,我会得到一堆垃圾值。

所以问题是这样的。我如何以这种形式对其进行编码?

我为什么要这样做?

我们在生产中没有很多 GTP(GPRS 隧道协议)消息。我想如果我对此进行逆向工程,我可以有效地创建一个数据生成器并制作我自己的数据。

总结一下

那里可能有复杂的工具,但我不想花太多时间学习它们。大约 2 个月了,我已经开始在 *nix 平台上工作,并且刚刚开始使用它的电动工具,比如sedawk.

我想要的是一些帮助和指导来实现这一点。

再次感谢阅读!200 分等待能够引导我走向正确方向的人。:)

示例文件

这是原始二进制文件的示例

这是一个允许用户输入值的输入文本文件示例

这是我的脚本在输入文本文件的所有转换完成后创建的文件示例。

如何更改File 3to的编码File 1

0 投票
3 回答
3409 浏览

vim - 如果与 xxd 一起使用,Vim 会修改文件

我试图了解 ID3 标签的工作原理,因此,在阅读了一些文档之后,我开始查看一些 mp3 的原始数据。Vim 通常是我选择的编辑器,所以,经过一番谷歌搜索后,我发现我可以使用 xxd 通过调用来查看我的文件的十六进制表示

一切正常,但是当我把一切都放回原处时

然后退出,我发现文件被修改了;vlc 无法再播放它,并且 diff 告诉我文件不同。我以为我无意中修改了一些东西,但进一步的实验表明,即使打开文件并使用 xxd 然后 xxd -r 会以某种方式更改文件。

这是为什么?我怎样才能防止它发生?难道我做错了什么?

0 投票
4 回答
13838 浏览

linux - 如何使用 xxd 向 hexdump 插入偏移量?

有没有一种简单的方法可以向 xxd 生成的十六进制转储添加偏移量?

即代替

我应该得到

0 投票
1 回答
15535 浏览

hex - xxd -r 不带 xxd

我在 CentOS 5.5 的缩小版本上运行,没有很多可用的工具。没有 xxd、bc 或 hd。不幸的是,我无法安装任何其他实用程序。我确实有 od、dd、awk 和 bourne shell(不是 bash)。我正在尝试做的事情在正常环境中相对简单。基本上,我有一个数字,比如 100,000,我需要将它的二进制表示形式存储在一个文件中。通常,我会做类似...

如果您查看文件的十六进制转储,您会正确看到表示为 186A0 的数字。

有没有我可以使用我可用的有限工具拼凑起来的等价物?我尝试过的几乎所有东西都存储了数字的 ascii 值。

0 投票
1 回答
3540 浏览

compiler-construction - qmake:额外的编译器(处理步骤)?

在我基于 qmake 的项目中,我想在编译之前对某些文件运行“xxd”。按照文档,我的 pro 文件中的相关部分如下所示:

Qmake 没有抱怨,但它也根本不运行 xxd。我是否必须为要预处理的每个文件创建特殊目标?(生成的 *.xxd 文件我以后不会编译,只包含在其他 cpp 文件中)

编辑:在 smokris 的帮助下,这就是我在 pro 文件中修复该部分的方式:

0 投票
2 回答
392 浏览

bash - 计算存储在变量中的字段数

我正在研究一个基本的文件雕刻器,我目前一直在计算文件的字节位置。

我发现我需要一段代码来执行以下步骤;

  1. 在变量中找到 $searchQuery
  2. 找到 $searchQuery 后删除字符串的其余部分
  3. 计算变量中现在存在的字段数
  4. 将此变量减去 2 以考虑十六进制偏移量和 $searchQuery 本身
  5. 然后将答案乘以 2 得到正确的字节数

这方面的一个例子是;

  1. 在“00052a0: b4f1 559c ffd8 ffe0 0010 4a46 4946 0001”中找到“ffd8”
  2. 变量更新为“00052a0: b4f1 559c ffd8”
  3. $fieldCount 被赋值为“4”
  4. $fieldCount=((fieldCount-2))
  5. $byteCount=((fieldCount*2))

除了计算变量中的字段数之外,我对如何做所有事情都有一个基本的想法。例如,在找到 $searchQuery 之前,如何计算变量中有多少字段?同样,删除字符串中不必要的部分后,如何计算字段数?

用 grep 找到 $searchString 后,我不知道如何继续。我当前的代码如下所示;

谢谢您的帮助!

0 投票
2 回答
965 浏览

bash - 使用 awk 或 xxd 或其他东西解析包含十六进制字符代码的日志

我有一个看起来像这样的文件:

串口通信的嗅探器日志。

如何自动将十六进制字符代码转换为字符串?

我试图使用这样的东西:

但它只取得了非常部分的成功,我想我把管道弄乱了。

问题是我如何转换

变成可读的东西?

0 投票
1 回答
225 浏览

debian - 如何从文本文件中删除组分隔符

我有一个在 Windows PC 上创建的文本文件,然后我在 debian 机器上打开它。我在 nano 中打开它,在底部显示(从 DOS 格式转换)。

当我从文件中取出一行并使用以下方法查看它的二进制表示时:

它显示两个 00001101 字符已添加到该行。我正在尝试使用 tr 删除它们,如下所示:

但这似乎不起作用。

知道如何解决这个问题吗?要创建 ^] 我正在做 shift + ^ 然后 ] 我需要做其他事情来生成组分隔符控制字符吗?