666
下载题目
是一个命名为666的未知文件
小白不懂,找了几篇逆向的教程普及了一下基础知识
用IDA打开,在IDA View-A窗口按F5查看伪代码
代码操作是对输入调用encode函数加密,然后与enflag比较。
encode加密函数:
在代码中定位key,长度限制为12h(需要注意12h是十六进制,将其转换成10进制是18,转换时不要带h)。
enflag的值为:izwhroz"“w"v.K”.Ni,转换为ASCII码
x = "izwhroz\"\"w\"v.K\".Ni"
r = ""
for i in x:
r = r +"\\"+ str(ord(i))+' '
print(r)
encode函数中,for循环里每三个一组进行加密,前三行是加密算法,后面是指针赋值。
key等于输入字符串的长度,要使输入的字符串等于enflag,所以key等于18。
代码中的^是按位异或运算符,数值化成二进制按位异或,即为对应的二进制位相异时数值为1,相同则为0。
编写解密脚本:
enflag=[105,122,119,104,114,111,122,34,34,119,34,118,46,75,34,46,78,105]
flag=''
for i in range(0,17,3):
flag+=chr((18^enflag[i])-6)
flag+=chr((18^enflag[i+1])+6)
flag+=chr(18^enflag[i+2]^6)
print(flag)