1

我使用这个 Linux 命令在 android 中合并了两个文件

猫文件1.png 文件2.zip > 文件3.png

如何再次拆分两个文件?我只想单独检索 zip 文件。

有没有具体的命令?我试过这些代码:

解压文件3.png

将 png 替换为 zip:

解压文件3.zip

但它们都不起作用。我可以打开组合的唯一应用程序是 windows 上的 winrar

而且我在android上尝试了几个解压缩和解压缩应用程序,但除了rarlab的RAR应用程序之外,它们都不起作用

我提到的那些应用程序是否有任何来源可以解压缩/解压缩文件?

4

3 回答 3

0

严格来说:没有办法。

您可能会在上面的答案中寻找 PK 0x04 0x03 作为分隔符,但您不能保证这个字符序列也不会出现在 file1.png 的图像数据中。

总而言之,这是一个有趣的问题。如果您想定期拆分这样的文件,请重新考虑您的策略。如果您需要它来纠正一次性错误或其他问题,您可以拆分查找分隔符,并且在 99% 以上的情况下都可以。

于 2015-12-27T22:12:15.050 回答
0

您需要知道的是 PNG 文件以 hex 值0x89开头,后跟 text PNG。Zip 文件以PK 0x04 0x03. 您可以编写一个实用程序来读取文件并将读取的字节输出到新文件,当检测到某个文件签名时使用新的输出文件。

对于一个解决方案,您可以使用vim,但您必须小心不要vim在行尾添加换行符。

复制您的输入文件以确保安全

cp file3.png f1
cp file3.png f2

vim -b f1

在 vim 类型中

:set noeol

搜索 zip 文件的开头

/PK

检查找到的序列是PK^C^D. 如果没有,请寻找下一场比赛。

PK从with中删除行尾

d$

下移一行,删除文件的其余部分并保存

j
:.,$ d
ZZ

同理,在f2中删除文件顶部,得到zip文件。

注意:不要将 f2 命名为 f2.zip,因为 vim 足够聪明,可以将它作为 zip 文件打开,这不是你想要的。

于 2015-12-27T20:31:30.613 回答
0

我不确定你试图通过将 zip 文件“隐藏”到 PNG 中来完成什么,但如果你试图制作一个 Winrar 可以打开的文件,那么这是一种奇怪的方法。

当您将文件放在 zip 文件的开头或结尾时,您不会制作.zip(或任何其他类型的存档)文件。cat这只是将两个二进制文件附加在一起。

winrar 可以打开您的“组合”二进制文件的原因是它很可能识别文件头并可以破译您有 2 个文件。

我建议您查看 zip 命令的用法,了解如何文件添加到存档中。我快速搜索节目,例如

zip -rv zipfile.zip newfile.txt

将 newfile.txt 添加到 zipfile.zip。

于 2016-01-03T11:48:34.793 回答