下载好文件一看是个pyc文件,找个python的在线解密
在线解密python的网址:https://tool.lu/pyc/
#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
print "Welcome to Re World!"
print "Your input1 is your flag~"
l = len(input1)#输入字符串的长度
for i in range(l):#遍历字符串
num = ((input1[i] + i) % 128 + 128) % 128#元素+下标,与128求余,确保在128范围内其中第二个%128没什么用,干扰作用
code += num
for i in range(l - 1):
code[i] = code[i] ^ code[i + 1]#每一个依次与后面的一个异或
print code
code = [
"\x1f",
"\x12",
"\x1d",
"(",
"0",
"4",
"\x01",
"\x06",
"\x14",
"4",
",",
"\x1b",
"U",
"?",
"o",
"6",
"*",
":",
"\x01",
"D",
";",
"%",
"\x13",
]
注释已经写在代码上了,那接下就是对写脚本对代码进行反操作一波,首先是到着读它,两次异或等于不异或。
code = [
'\x1f',
'\x12',
'\x1d',
'(',
'0',
'4',
'\x01',
'\x06',
'\x14',
'4',
',',
'\x1b',
'U',
'?',
'o',
'6',
'*',
':',
'\x01',
'D',
';',
'%',
'\x13']
i=len(code)
for j in range(i-2,-1,-1):#要倒着异或,,从倒数第二个开始,到0,(因为前面是正序的)
code[j]=chr(ord(code[j])^ord(code[j+1]))
for j in range(i):
print(chr((ord(code[j])-j)%128),end='')
然后得到结果GWHT{Just_Re_1s_Ha66y!}
记得改为flag{}格式!
这是我第一次写出来python的逆向题,之前在V&N线上赛的见过但是比这个难得多,没写出来,没有对应的插件
此篇由于是第一次写python的逆向题,有借鉴其他人的wp,
下次一定回更好!!