exeinfope查看信息
发现py文件转化成的exe文件,则用pyinstxtractor将exe文件转成pyc文件。
pyinstxtractor将exe转为pyc
在网上找到pyinstxtractor.py文件,将此文件放在与目标文件同一文件夹下,打开控制台输入以下命令
python pyinstxtractor.py 平成第四杰.exe
操作后文件夹中生成以下文件夹
在文件夹中找到struct文件和“平成第四杰”文件
将“平成第四杰”文件后缀改为.pyc
打开winhex,打开文件struct和平成第四杰.pyc文件
对比两个文件,发现struct文件比目标文件多了一行16进制字符,我们把这一行复制到目标文件开头。
像这样,然后ctrl+s保存。
python在线反编译
打开python在线反编译网站,选择目标文件后,生成如下代码
table = [
28709,
3454,
16859,
3524,
16876,
8497,
17277,
17152,
4629,
17152]
text = input('平成三杰现向你抛出橄榄枝,希望你能加入他们,但需要你喊出口号:')
if len(text) != 10:
print('你甚至不知道该输几个字!')
else:
cipher = []
for i in range(len(text)):
cipher.append(ord(text[i]))
for i in range(len(cipher)):
if i & 1 == 0:
cipher[i] ^= 4660
continue
cipher[i] ^= 17185
tmp = 0
for i in range(len(cipher)):
if cipher[i] == table[i]:
continue
continue
print("Sorry, maybe you don't have it in you.")
tmp = 1
break
if tmp == 0:
print('Congratulations on becoming the fourth jie!')
上脚本!!!
table = [
28709,
3454,
16859,
3524,
16876,
8497,
17277,
17152,
4629,
17152]
flag=[]
for i in range(len(table)):
if i & 1 ==0:
table[i] ^= 4660
continue
table[i] ^= 17185
flag += chr(table[i])
print(flag)
运行结果如下(脚本写的比较辣鸡,请大佬们海涵)
[25105, 20063, 21487, 20197, 21464, 25104, 20809, 33, 33, 33]
得到的是一串十进制数字。将其通过在线网站转化为ASCII码形式。