拿到题目是PYC文件,在网上进行反编译的得到py代码
# uncompyle6 version 3.2.4
# Python bytecode 2.7 (62211)
# Decompiled from: Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (AMD64)]
# Embedded file name: secend.py
# Compiled at: 2019-02-01 21:18:58
print "Welcome to Processor's Python Classroom Part 2!\n"
print "Now let's start the origin of Python!\n"
print 'Plz Input Your Flag:\n'
enc = raw_input()
len = len(enc)
enc1 = []
enc2 = ''
aaa = 'ioOavquaDb}x2ha4[~ifqZaujQ#'
for i in range(len):
if i % 2 == 0:
enc1.append(chr(ord(enc[i]) + 1))
else:
enc1.append(chr(ord(enc[i]) + 2))
s1 = []
for x in range(3):
for i in range(len):
if (i + x) % 3 == 0:
s1.append(enc1[i])
enc2 = enc2.join(s1)
if enc2 in aaa:
print "You 're Right!"
else:
print "You're Wrong!"
exit(0)
思路已经很清晰,
enc为input,for循环进行奇偶不同的加密 ,奇数位+2 偶数位+1 ,之后再进行如果整除3提取出来加到末尾(例如0123456,加密过后就是0362514) 最后与aaa里的字符进行对比.
写出exp
# -*- coding: UTF-8 -*-
aaa ="ioOavquaDb}x2ha4[~ifqZaujQ#"
aa = []
for i in aaa:
aa.append(i)
a = []
for i in range(3):
for x in range(27):
if(i+x)%3==0:
a.append(x)
for i in range(len(aa)):
aa[a[i]] = aaa[i]
flag = ""
for y in aa:
flag += y
flags = ""
for i in range(27):
if i % 2 == 0:
flags+=(chr(ord(flag[i]) - 1))
else:
flags+=(chr(ord(flag[i]) - 2))
print (flags)
#out :hgame{Now_Y0u_got_th3_PYC!}