bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)
下载文件,解压,里面还有个flag压缩包,打开flag压缩包的时候报错:
有winhex打开flag来尝试修复这个文件,这涉及到rar文件的格式编码,详情参考https://blog.****.net/vevenlcf/article/details/51538837。
如果用WinRAR的修复功能,则只能修复rar文件,不能把这个图片复原,rar格式编码中:
每一个块都是由以下域开始的:【译者注:即每一个块的头部都是由以下域(可称之为头域)组成的】
HEAD_CRC 2 bytes CRC of total block or block part
整个块或者块某个部分的CRC(根据块类型而有不同)
HEAD_TYPE 1 byte Block type
块类型【译者注:也可以理解为块头部类型,因为不同的块对应不同的块头部。后文也经常混淆这两种概念。】
HEAD_FLAGS 2 bytes Block flags
块标志
HEAD_SIZE 2 bytes Block size
块大小【译者注:本文中和块头部大小的概念一直混淆。后文中当遇到标志块、结尾块等只有头部的块时,也可理解为块头部大小】
ADD_SIZE 4 bytes Optional field - added block size
添加块的大小(这是一个可选域)
在flag.txt结束的地方就是下一个块开始的地方,png文件的头部类型编码为74,我们修改过来即可:
这样就能解压出secret.png了,但是是个空白的,放到winhex中看到这是个gif文件,然后把后缀修改,并将其分离,得到两个图片,然后用stegslove分别查看,得到一个二维码的上下两个部分:
拼接到一起:
这个时候扫描得不出什么信息,二维码的定位符都不完整,左上角的就不说了,没法补上,右上角可以补上黑方块:
补之后虽不完全,但可能扫出flag。