编辑“︁
ZIP格式
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== CRC32 === ==== 原理 ==== <code>CRC</code> 本身是「冗余校验码」的意思,<code>CRC32</code> 则表示会产生一个 <code>32 bit</code> ( <code>8</code> 位十六进制数)的校验值。由于 <code>CRC32</code> 产生校验值时源数据块的每一个 <code>bit</code> (位)都参与了计算,所以数据块中即使只有一位发生了变化,也会得到不同的 <code>CRC32</code> 值。 <code>CRC32</code> 校验码出现在很多文件中比如 <code>png</code> 文件,同样 <code>zip</code> 中也有 <code>CRC32</code> 校验码。值得注意的是 <code>zip</code> 中的 <code>CRC32</code> 是未加密文件的校验值。 这也就导致了基于 <code>CRC32</code> 的攻击手法。 * 文件内内容很少(一般比赛中大多为 <code>4</code> 字节左右) * 加密的密码很长 我们不去爆破压缩包的密码,而是直接去爆破源文件的内容(一般都是可见的字符串),从而获取想要的信息。 比如我们新建一个 <code>flag.txt</code>,其中内容为 <code>123</code>,使用密码 <code>!QAZXSW@#EDCVFR$</code> 去加密。 [[File:./figure/2.png]] 而我们去计算文件的 <code>CRC32</code> 值发现和上图中的 <code>CRC32</code> 值吻合。 <syntaxhighlight lang="shell">文件: flag.txt 大小: 3 时间: Tue, 29 Aug 2017 10:38:10 +0800 MD5: 202cb962ac59075b964b07152d234b70 SHA1: 40bd001563085fc35165329ea1ff5c5ecbdbbeef CRC32: 884863D2</syntaxhighlight> !!! note 在爆破时我们所枚举的所有可能字符串的 <code>CRC32</code> 值是要与压缩源文件数据区中的 <code>CRC32</code> 值所对应 <syntaxhighlight lang="python"># -*- coding: utf-8 -*- import binascii import base64 import string import itertools import struct alph = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=' crcdict = {} print "computing all possible CRCs..." for x in itertools.product(list(alph), repeat=4): st = ''.join(x) testcrc = binascii.crc32(st) crcdict[struct.pack('<i', testcrc)] = st print "Done!" f = open('flag.zip') data = f.read() f.close() crc = ''.join(data[14:18]) if crc in crcdict: print crcdict[crc] else: print "FAILED!"</syntaxhighlight> ==== 例题 ==== <blockquote>题目:<code>Abctf-2016:Zippy</code> </blockquote> 根据每个压缩包内的文件大小可以推断使用 <code>CRC32</code> 攻击手法,获得每个压缩包内的内容后连在一起 <code>Base64</code> 解码后是一个加密的压缩包,爆破获得 <code>flag</code>。
摘要:
请注意,所有对gamedev的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Gamedev:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
不转换
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息