如何通过compress.zip读取zip分卷压缩包其余分片的相关信息
分卷压缩包合法分片识别方案
完全可以通过读取主文件compress.zip获取全量合法分片信息,具体依据和操作逻辑如下:
- 标准ZIP分卷的结构规则:拆分后的ZIP分卷从第一个分片开始命名为
.z01、.z02依次递增序号,最后一个分片固定使用.zip后缀,也就是你场景中的compress.zip是整个分卷集的收尾分片,整个压缩包的全局元数据全部存储在这个文件里,不需要依赖目录下其他文件就能确定合法分片范围。 - 核心元数据读取逻辑:
- 从
compress.zip的文件尾部向前搜索签名为0x06054b50的中央目录结尾记录(EOCD),如果是大文件分卷触发Zip64扩展,EOCD会指向签名为0x06064b50的Zip64版本中央目录结尾记录。 - 从上述结构中读取「当前分卷序号」字段:ZIP分卷的序号从0开始计数,
.z01对应序号0、.z02对应序号1,以此类推,主文件.zip的序号值等于总分片数减1。比如读取到compress.zip的分卷序号为4,就说明整个分卷集共5个合法分片,对应文件为compress.z01、compress.z02、compress.z03、compress.z04、compress.zip,超出序号范围的compress.z05 (fake)属于多余伪造文件,直接排除即可。
- 从
- 额外的分片校验能力:除了分片总数,主文件中还记录了标准分片大小参数,除最后一个
.zip分卷的大小可以小于等于该值外,其余所有.zXX合法分片的文件大小必须和该参数完全一致,可以用来识别损坏、被篡改的分片。
实操提示:不需要手动实现EOCD结构解析,大部分成熟的ZIP处理库都内置了分卷元数据读取能力,比如Python标准库
zipfile、7z的SDK都可以直接读取主文件获取分卷集信息,避免遍历目录枚举文件时把伪造分片计入导致解压报错。
内容的提问来源于stack exchange,提问作者ddss6565
相关产品推荐
相关产品推荐

