Python
的逆向,
采用uncompyle6
进行"反编译"
uncompyle6: Github
安装很简单,
直接用pip
安装就可以了(pip
建议先换源)
使用也简单,
比如要反编译test.pyc
输出到decompile.py
文件
1
| uncompyle6 -o decompile.py test.pyc
|
反编译出来的Python
代码有些问题,
还是Python2
的, 不过出题人的意图很明显,
最下面的code
应该是input1
经过两次变换后的结果,
要用它逆推出input1
.
可以对每一位穷举, 照着这个代码里的变换规则来就行, 解密代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #include <cstdio>
using namespace std;
int main() { char arr[] = { '\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':', '\x01', 'D', ';', '%', '\x13' }; char result[64] = { 0 }; for (int i = sizeof(arr) - 2; i >= 0; i--) arr[i] = arr[i] ^ arr[i + 1]; for (int i = 0; i < sizeof(arr); i++) for (int j = 32; j < 127; j++) if (((j + i) % 128 + 128) % 128 == arr[i]) result[i] = j; printf("%s", result); }
|
所以flag就是flag{Just_Re_1s_Ha66y!}