|
题目名称:I'M NOT KEY
题目内容:Download
解题思路:
本题是在用python实现的Des加密算法基础上进行了些许改动:
1.des类中的DECRYPT变量应该为0x01;
2.将des类中的__des_crypt函数判断补充完整:
- if crypt_type == des.ENCRYPT:
- iteration = 0
- iteration_adjustment = 1
- else:
- iteration = 15
- iteration_adjustment = -1
复制代码 3.在des类中添加decrypt函数:
- def decrypt(self, data, pad=None, padmode=None):
- data = self._guardAgainstUnicode(data)
- if pad is not None:
- pad = self._guardAgainstUnicode(pad)
- data = self.crypt(data, des.DECRYPT)
- return self._unpadData(data, pad, padmode)
复制代码 题目给出提示当deskey正确时的DES.Kn,又知道Kn的生成全部是移位操作,因此可以直接逐位对出deskey应满足”x1000011x1101111x1100100x1101001x1101110x1000111x1100001x1111001“的形式。
发现x位恰好都为ASCII码最高位,因此另起为0,得出deskey为CodinGay。
通过DES.decrypt(correct)算出code为LafetoborasdileiShelvapelocrana0。
解得最终结果flag{R1p0s4Riposa_1n_p4c3_Nel1_illusi0n3_che_ha1_cr34t0}。
|
|