我在Android中使用这个Linux命令
组合了两个文件cat file1.png file2.zip> file3.png
如何再次拆分两个文件?我只想单独检索zip文件。
有没有具体的命令?我已尝试过这些代码:
unzip file3.png
用zip代替png:
解压缩file3.zip
但它们都不起作用。 我可以打开组合的唯一应用程序是Windows上的winrar
此外,我在Android上尝试了几个解压缩和解压缩应用程序,但除了rarlab的RAR app之外,它们都没有工作
我提到的那些应用程序是否有任何来源解压缩/解压缩文件?
答案 0 :(得分:0)
您需要知道的是,PNG文件以十六进制值0x89
开头,后跟文本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
删除该行的结尾
d$
向下移动一行,删除文件的其余部分并保存
j
:.,$ d
ZZ
同样,删除f2中文件的顶部以获取zip文件。
注意:不要将f2命名为f2.zip,因为vim足够聪明,可以像zip文件一样打开它,这不是你想要的。
答案 1 :(得分:0)
严格来说:没有办法。
您可能会在上面的答案中找到PK 0x04 0x03作为分隔符,但您也不保证此char序列不会出现在file1.png的图像数据中。< / p>
总之,这是一个有趣的问题。如果您想定期拆分此类文件,请重新考虑您的策略。如果你需要它来纠正一次性错误或其他什么,你可以拆分找到分离器,并在99%以上的情况下都可以。
答案 2 :(得分:0)
我不确定你想通过将一个zip文件“隐藏”到PNG中来实现什么,但是如果你想让Winrar打开一个单独的文件,那么这是一个奇怪的方法。
当您将.zip
文件{zip}文件的开头或结尾时,您不会生成cat
(或任何其他类型的存档)文件。这只是将两个二进制文件附加在一起。
winrar可以打开“组合”二进制文件的原因是它很可能识别文件头并且可以破译你有2个文件。
我建议您查看zip命令的用法,了解如何添加文件到存档。我快速搜索节目,例如
zip -rv zipfile.zip newfile.txt
将newfile.txt添加到zipfile.zip。