这道题给了两个文件,一个是加密用的程序,另一个是加密后的文件。加密的方法很简单,就是读plaintext和8 bytes的密码,然后
cipher[i]=key[i%8] ^ (~plain[i])
从文件后缀知道加密的文件是tar.Z格式,但.Z格式搜了下似乎最多3个bytes可以知道,但提示说了密码有8bytes,所以要暴力破解还是有点多……
后来试了下压缩vortex15,这其中compress居然还不在官方源里,要从AUR装ncompress。用
$ tar cf 15.tar vortex15
得到TAR包,然后压缩
$ compress 15.tar
之后我们假定tar.Z文件的起始部分内容应该接近,于是通过XOR得到key的可能值,而且要求key不包含A-Z以外的字符。通过python大概比较了下
由magic number of .Z files,前2个bytes确定是ZQ,然后后面的是
['S', 'B', 'K', 'T']
['Q', 'E', 'D']
['A', 'Q']
['D']
['C', 'B', 'S']
['A', 'Z', 'J']
这次暴力破解的计算量就小得多了
得到密码,用这个运行vortex15,得到压缩文件,解压后得到congrats.txt