bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

下载文件,解压,里面还有个flag压缩包,打开flag压缩包的时候报错:

bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

 有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,我们修改过来即可:

bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

 这样就能解压出secret.png了,但是是个空白的,放到winhex中看到这是个gif文件,然后把后缀修改,并将其分离,得到两个图片,然后用stegslove分别查看,得到一个二维码的上下两个部分:

bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)   bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

 拼接到一起:

bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

这个时候扫描得不出什么信息,二维码的定位符都不完整,左上角的就不说了,没法补上,右上角可以补上黑方块:

bugku-杂项-一个普通的压缩包(rar格式编码、二维码画图补全)

补之后虽不完全,但可能扫出flag。