(1) Acerca de PyCodeObject y los archivos pyc: los archivos pyc que se ven en el disco duro, de hecho, PyCodeObject es en realidad el resultado del compilador Python. Cuando el programa Python se está ejecutando, el resultado compilado se guarda en el PyCodeObject ubicado en la memoria. Cuando el programa Python termina, el intérprete de Python escribe el PyCodeObject de nuevo en el archivo pyc. Cuando el programa Python se ejecuta por segunda vez, primero el programa buscará el archivo pyc en el disco duro, si lo encuentra, lo cargará directamente; de lo contrario, repetirá el proceso anterior. Por lo tanto, podemos decir que los archivos pyc son en realidad un método de almacenamiento persistente de PyCodeObject.
1. Obtenga un archivo pyc, vaya a la descompilación de pyc en línea para descompilar
2. Obtenga el código
3. Escriba un script para descifrar
import base64
correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag=base64.b64decode(correct).decode('ISO-8859-1')
s=""
for i in flag:
x=ord(i)
x=x-16
x=x^32
x=chr(x)
s+=x
print(s)
4. Obtenga el resultado
nctf {d3c0mpil1n9_PyC}