学长发的题
这个题

以上内容都是我经过修改的,便于理解。
我们要解密,我们就要从第三步来开始解题。
以下是函数三内容

解题磨难
加密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=
891

被折叠的 条评论
为什么被折叠?



