pyc反编译一下
就是…思路很明显,但是为什么反编译出来是'%1f'
…,我纠结了好久,最后翻题解发现应该是'\x1f'
(?)这样就合理了,都是单个字符
反过来写代码:
- code全换成
\x
型的 - 注意异或那里,原代码是从前往后的,逆过来要从后往前
(最后为了防止有人和我一样不熟悉python三步一错
ord()
:字符转ASCII码
chr()
:ASCII码转字符
range(start, stop, step)
:范围是[start, stop - 1]
,以step
为步长跳
code = [
'\x1f',
'\x12',
'\x1d',
'(',
'0',
'4',
'\x01',
'\x06',
'\x14',
'4',
',',
'\x1b',
'U',
'?',
'o',
'6',
'*',
':',
'\x01',
'D',
';',
'%',
'\x13']
for i in range(len(code) - 2, -1, -1):
code[i] = chr(ord(code[i]) ^ ord(code[i + 1]))
for i in range(len(code)):
print(chr((ord(code[i]) - i + 128) % 128), end = '')
得到flag:flag{Just_Re_1s_Ha66y!}