关于算法:如何确定ZIP / RAR文件的压缩方法

您所在的位置:网站首页 文件压缩参数是什么格式 关于算法:如何确定ZIP / RAR文件的压缩方法

关于算法:如何确定ZIP / RAR文件的压缩方法

2024-07-11 02:19| 来源: 网络整理| 查看: 265

我有一些正在使用的zip和rar文件,我正在尝试分析每个文件的压缩属性(压缩级别,压缩算法(例如deflate,LZMA,BZip2),字典大小,字号) 等等),而我还没有找到一种方法来做到这一点。

是否可以通过软件或其他方式分析文件以确定这些属性?

干杯,谢谢!

这是一个相当老的问题,但是我仍然想投入两分钱,因为上面的某些方法对我来说不那么容易使用。

您也可以使用7-Zip确定这一点。打开档案后,有一列用于压缩的方法:

对于ZIP-是,zipinfo

对于RAR,可以通过7Zip或WinRAR轻松找到标头,请阅读随附的文档

相关讨论 感谢您的提示! 我需要找出MS Word在生成.DOCX文件时使用的ZIP设置。 DOCX文件是一个ZIP存档,其中包含几个XML文件和您的嵌入式媒体文件。 这些都可以使用您选择的工具进行批处理,但是最后您需要使用MS Word接受的设置将其重新打包为ZIP文件! 我使用zipinfo分析了MS Word编写的DOCX文件。 如果我对DOCX ZIP格式有最终结论,我将在此处发布。

我建议hachoir-wx看一下这些文件。如何安装Python软件包,或者在使用Windows时可以尝试将ActivePython与PyPM配合使用。安装必要的hachoir软件包后,可以执行以下操作来运行GUI:

python C:\Python27\Scripts\hachoir-wx

它使您可以浏览RAR和ZIP文件的数据字段。有关示例,请参见此屏幕截图。

对于RAR文件,请查看WinRAR安装目录中的technote.txt文件。这给出了RAR规范的详细信息。您可能会对这些感兴趣:

1234567891011 HEAD_FLAGS      Bit flags: 2 bytes                  0x10 - information from previous files is used (solid flag)                  bits 7 6 5 (for RAR 2.0 and later)                       0 0 0    - dictionary size   64 KB                       0 0 1    - dictionary size  128 KB                       0 1 0    - dictionary size  256 KB                       0 1 1    - dictionary size  512 KB                       1 0 0    - dictionary size 1024 KB                       1 0 1    - dictionary size 2048 KB                       1 1 0    - dictionary size 4096 KB                       1 1 1    - file is directory

字典大小也可以在WinRAR GUI中找到。

1234567 METHOD          Packing method 1 byte                  0x30 - storing                  0x31 - fastest compression                  0x32 - fast compression                  0x33 - normal compression                  0x34 - good compression                  0x35 - best compression

维基百科也知道这一点:

The RAR compression utility is proprietary, with a closed algorithm. RAR is owned by Alexander L. Roshal, the elder brother of Eugene Roshal. Version 3 of RAR is based on Lempel-Ziv (LZSS) and prediction by partial matching (PPM) compression, specifically the PPMd implementation of PPMII by Dmitry Shkarin.

对于ZIP文件,我将从查看规格和ZIP Wikipedia页面开始。这些可能很有趣:

12  general purpose bit flag: (2 bytes)   compression method: (2 bytes) 相关讨论 太好了,谢谢! 通常在偏移量0x2D处找到第一个文件的METHOD字节。

通过7-Zip(或p7zip)命令行:

17z l -slt archive.file

如果专门寻找压缩方法:

17z l -slt archive.file | grep -e '^---' -e '^Path =' -e '^Method =' 相关讨论 我也可以使用grep -E ^((---)|(Path =)|(Method =))。

对于ZIP文件,有一个命令zipinfo。

相关讨论 当我在控制台中输入该命令时,它说没有找到这样的命令。

该类型很简单,只需查看文件头(PK和Rar)即可。

至于其余部分,我怀疑压缩内容中是否包含信息。

相关讨论 是的,它可用(至少对于rar)。 但是,如何获得它显然取决于特定的文件格式。 如果信息不可用,则将无法解压缩数据。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3