学长发的题
这个题
以上内容都是我经过修改的,便于理解。
我们要解密,我们就要从第三步来开始解题。
以下是函数三内容
解题磨难
加密3
这个解密我,我刚开始的想法是爆破,但是经过我爆破之后,他呈现的答案非常多,因为我的那个v8_这个我从0-256范围,然后他会有好几个结果是可以呈现的。所以遇到求余,我们不要直接开始爆破。
经过我在网上查找,他这个加密属于凯撒加密。但是我并不清楚这个加密的原理,所以解密我也不懂。然后这个解密很简单,不需要爆破。只需要改个符号。
例如:
*a3 = (v8_ - 65 + 3) % 26 + 65; 解密:*a3 = (v8_ - 65 - 3) %26 + 65;
我们只需要把后面的+改成-然后求出的a3就是我们的v8_
加密2
以上就是改变顺序,我们直接在Python里面直接用切片直接就可以解出
加密1
以上这个代码,在刚开始,我写了一部分代码,但是实在实在不会写,因为我理解但动手能力弱。也有个原因是我对base64的原理遗忘了。看到这个没想到base64,在之后的求解中我才发现这个是base64.所以就直接用python就解开了。
代码
import array import base64 def decode_three(enc3): enc2 = '' for k in range(len(enc3)): current_char = enc3[k] code = ord(current_char) # 条件判断 if code <= 64 or code > 90: if code <= 96 or code > 122: if code <= 47 or code > 57: enc2 += current_char else: decoded = (code - 48 - 3) % 10 + 48 enc2 += chr(decoded) else: decoded = (code - 97 - 3) % 26 + 97 enc2 += chr(decoded) else: decoded = (code - 65 - 3) % 26 + 65 enc2 += chr(decoded) return enc2 def decode_two (enc2): enc1=[0] * 52 enc1[26:39]=enc2[:13] enc1[0:13]=enc2[13:26] enc1[39:52]=enc2[26:39] enc1[13:26]=enc2[39:52] return enc1 base='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/A' enc3='QmBmT3CWB5PpTT58Le58qV5Y0B3PcfcBWT4Bq3=WgnCmD8PcP7PG' enc2 = decode_three(enc3) enc1=decode_two(enc2) enc=''.join(enc1) flag=base64.b64decode(enc) flag=flag.decode() print(flag) #print(enc2) #print(''.join(enc1)) #enc2=NjYjQ0ZTY2MmQQ25Ib25nS2V7Y0MzczYTQ1Yn0=TdkZjA5MzM4MD #enc1=Q25Ib25nS2V7YTdkZjA5MzM4MDNjYjQ0ZTY2MmQ0MzczYTQ1Yn0=