[羊城杯 2020]easyre
查壳,64位无壳
主函数这一长串给我的感觉就是base64加密,发现下面有三个加密函数,这一串是密文,那我们思路就是倒着一个个解密了
第三个加密函数,a3是我们已知的密文,我们需要回推a1。加密一言秒了,偏移量为3的凯撒加密
这是第二个函数,将每13个字符替换位置
这是第三个函数,本来以为这是魔改了的,没想到就是标准的base64加密
为了锻炼自己写脚本的能力,本来这基本都是可以在线解密的,全部用一个脚本写出来了。发现把等于号弄丢了。。。算了能出flag就行,这次考虑欠妥了
import base64
enc='EmBmP5Pmn7QcPU4gLYKv5QcMmB3PWHcP5YkPq3=cT6QckkPckoRG'
enc = list(enc)
for i in range(len(enc)):
if ord(enc[i]) >=65 and ord(enc[i]) <=90:
enc[i] = (ord(enc[i])-65-3)%26 + 65
elif ord(enc[i]) >=97 and ord(enc[i]) <=122:
enc[i] = (ord(enc[i])-97-3)%26 + 97
else:
enc[i] = (ord(enc[i])-48-3)%10 + 48
#print(chr(enc[i]),end='')
#BjYjM2Mjk4NzMR1dIVHs2NzJjY0MTEzM2VhMn00zQ3NzhhMzhlOD
tmp=[0]*52
tmp2=''
tmp[26:39]=enc[0:13]
tmp[0:13]=enc[13:26]
tmp[39:52]=enc[26:39]
tmp[13:26]=enc[39:52]
for i in range(len(tmp)):
#print(chr(tmp[i]),end='')
#R1dIVHs2NzJjYzQ3NzhhMzhlODBjYjM2Mjk4NzM0MTEzM2VhMn00
tmp2+=chr(tmp[i])
print(base64.b64decode(tmp2).decode())
#GWHT{672cc4778a38e80cb362987341133ea2}4