标签: xxd

如何将二进制文件转储为 C/C++ 字符串文字?

我有一个二进制文件,我想包含在我的 C 源代码中(暂时用于测试目的),所以我想以 C 字符串的形式获取文件内容,如下所示:

\x01\x02\x03\x04
Run Code Online (Sandbox Code Playgroud)

这可能吗,也许是通过使用odhexdump实用程序?虽然不是必需的,但如果字符串可以每 16 个输入字节换行到下一行,并在每行的开头和结尾包含双引号,那就更好了!

我知道字符串将嵌入空值 ( \x00),因此我需要在代码中指定字符串的长度,以防止这些字节提前终止字符串。

c hexdump xxd

44
推荐指数
3
解决办法
4万
查看次数

无换行符的 XXD 输出

我可以告诉xxd不要在其输出中打印任何换行符并将我的转储作为一条连续行吗?

[user@localhost] : ~ $ echo -n "this is a long line and xxd is going to take multiple lines to print it" | xxd -p
746869732069732061206c6f6e67206c696e6520616e6420787864206973
20676f696e6720746f2074616b65206d756c7469706c65206c696e657320
746f207072696e74206974
Run Code Online (Sandbox Code Playgroud)

xxd

19
推荐指数
2
解决办法
5万
查看次数

od、hd、hexdump 和 xxd 命令之间有什么区别?

od、hd、hexdump 和 xxd 命令之间有什么区别?

它们都是转储文件的命令,并且都可以以各种格式转储文件,例如十六进制、八进制或二进制。为什么要创建不同的程序?

od dump hexdump xxd

9
推荐指数
1
解决办法
1万
查看次数

为什么将 Base64 解码的字符串分配给变量时删除 0x00

我使用的是 Mac。在 Bash 中,我尝试解码 Base64 字符串,然后尝试打印十六进制值。我正在使用base64 -d命令,然后将其分配给变量。

myText='YYN29+2wV2XRAHymIyhgytWuqY4atgHnIUFfXA7FPOA='
myTextBytes=$(echo -n "$myText" | base64 --decode)
echo -n $myTextBytes | xxd -p -c 99999
Run Code Online (Sandbox Code Playgroud)

上述脚本的输出是:

618376f7edb05765d17ca6232860cad5aea98e1ab601e721415f5c0ec53ce0

但是,如果我直接运行以下命令:

echo -n "$myText" | base64 --decode | xxd -p -c 100000
Run Code Online (Sandbox Code Playgroud)

我得到:

618376f7edb05765d1 00 7ca6232860cad5aea98e1ab601e721415f5c0ec53ce0

我什至尝试使用openssl enc -base64并得到相同的结果。也就是说,00在分配给变量时被删除。00当我将它分配给变量时如何保留它?

shell-script base64 xxd

8
推荐指数
1
解决办法
916
查看次数

有什么方法可以在 Telnet 中只发送“\n”?

我不知道是否有什么办法让telnet来只发送\n,而不是一个\r\n

例如,如果一个进程正在侦听这样的端口,则打印接收到的任何流量的字节:

nc -l 1234 |  xxd -c 1 
Run Code Online (Sandbox Code Playgroud)

从 netcat 连接到它nc localhost 1234,然后输入“hi[enter]”:

0000000: 68  h
0000001: 69  i
0000002: 0a  .
Run Code Online (Sandbox Code Playgroud)

从 telnet 连接到它telnet localhost 1234,然后输入“hi[enter]”

0000000: 68  h
0000001: 69  i
0000002: 0d  .
0000003: 0a  .
Run Code Online (Sandbox Code Playgroud)

Telnet 为换行符发送 0x0d0a 而不是 0x0a。我知道这是一个 CRLF,而不是 LF。如果我使用^M或 ,它也会发送 CRLF ^J

我以为我找到了一个直接解决这个问题的解决方案,通过使用toggle crlf,但即使设置了这个选项,Telnet 总是发送\r\n. 我也在各种 telnet 客户端上尝试过这个,所以我猜我误解了切换应该做什么。

有什么方法可以\n通过 telnet发送,输入或其他方式?

telnet netcat xxd nc

7
推荐指数
1
解决办法
1万
查看次数

如何打印文件的零和一

长话短说:如何在终端中打印构成文件的二进制数字,例如库.so或简单的文本.txt文件


PC 硬件处理电信号(基本上它是一种开/关行为),它由二进制系统(数字 0 和 1)很好地逻辑转换。可视化文件的内容将是一个有趣的教育练习,以及比较 .txt 和打印相同文本的可执行文件。

terminal hardware binary xxd

7
推荐指数
2
解决办法
1260
查看次数

使用 xxd 仅十六进制转储文件的开头和结尾

我正在寻找一个命令来.png使用显示三个文件xxd,分别显示十六进制的前两行和最后两行。

我使用下面的命令一次显示一个文件,但我想知道是否有一个命令可以同时显示所有三个文件。到目前为止,这是我的命令:

de@Classbox:/mnt/mountpoint/pics$ xxd albert-grumpy-cat.png |head -n2 && tail -n2
Run Code Online (Sandbox Code Playgroud)

tail head hex xxd

4
推荐指数
1
解决办法
6145
查看次数

Unix:在 ppm 文件上使用 xxd 命令

我对 unix 相当陌生,并且无法理解某些命令的作用。例如,当我xxd在 ppm 文件(即xxd image.ppm)上使用时,我得到如下输出:

00000000: 5036 0a31 3131 2031 3332 0a32 3535 0a55  P6.111 132.255.U
00000010: 6137 5966 3958 6939 566a 3953 6739 5464  a7Yf9Xi9Vj9Sg9Td
00000020: 3b57 643a 5763 3654 6335 5161 334e 5c30  ;Wd:Wc6Tc5Qa3N\0
00000030: 4f5a 3250 5d35 5361 3556 6334 5561 3352  OZ2P]5Sa5Vc4Ua3R
00000040: 5e32 515d 3256 6035 5b64 3856 6136 4a55  ^2Q]2V`5[d8Va6JU
...
...
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这个输出代表什么吗?

files xxd

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

xxd ×8

hexdump ×2

base64 ×1

binary ×1

c ×1

dump ×1

files ×1

hardware ×1

head ×1

hex ×1

nc ×1

netcat ×1

od ×1

shell-script ×1

tail ×1

telnet ×1

terminal ×1