Big-Endian Linux 机器上的 CPIO Archive Hexdump

Big-Endian Linux 机器上的 CPIO Archive Hexdump

我在一台小端 Linux 机器上,希望查看大端 Linux 机器上 cpio 存档的规范十六进制转储。

有人可以在大端 Linux 上运行这些命令并发布输出吗:

echo TESTING > /tmp/test
cpio -o <<< "/tmp/test" > /tmp/test.cpio
hexdump -C /tmp/test.cpio

如果您好奇,我需要这个,因为 libmagic 执行以下操作来确定 cpio 存档类型:

# same byteorder machine
0   short       070707
26  string      >\0     cpio archive

# opposite byteorder machine
0   short       0143561     byte-swapped cpio archive

我想看看 libmagic 是否有原因不检查相反字节序机器的存档的第 26 个字节。

在我的小端机器上该命令的输出:

1 block
00000000  c7 71 1b 00 57 01 a4 81  e8 03 e8 03 01 00 00 00  |.q..W...........|
00000010  ff 65 ce a4 0a 00 00 00  08 00 2f 74 6d 70 2f 74  |.e......../tmp/t|
00000020  65 73 74 00 54 45 53 54  49 4e 47 0a c7 71 00 00  |est.TESTING..q..|
00000030  00 00 00 00 00 00 00 00  01 00 00 00 00 00 00 00  |................|
00000040  0b 00 00 00 00 00 54 52  41 49 4c 45 52 21 21 21  |......TRAILER!!!|
00000050  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000200

答案1

我找到了一个示例 big-endian cpio 存档(它已在 libmagic 文件中注释):

# https://sembiance.com/fileFormatSamples/archive/cpio/skeleton2.cpio

路径条目从与小端存档相同的位置(第 26 个字节)开始。所以回答我自己的问题:

不,没有理由不是检查字节交换 cpio 存档的第 26 个字节。

相关内容