这题和上一题的思路是一样的,具体方法可以参考我的上一篇博客,我写得很详细了:UNCTF-日常训练-reverse-反编译
先用pyinstxtractor解包,用010editor打开struct.pyc和baby.pyc,将baby.pyc的第一行用struct.pyc的第一行代替
另存为一个123.pyc文件,然后就能正常反编译了,在线工具网站:在线pyc反编译
反编译结果:
代码挺好懂的,libnum库安装及使用可以参考:libnum库的安装及使用以及 如何在Vscode中安装Python库
import os, libnum, binascii
flag = 'unctf{*******************}'
x = libnum.s2n(flag) #将字符串转为整形数字
def gen(x): #将整数转为二进制
y = abs(x)
while y > 0:
yield y % 2
y = y >> 1
else:
if x == 0:
yield 0
l = [i for i in gen(x)] #转成一个列表
l.reverse() #逆序
f = '%d' * len(l) % tuple(l) #转成二进制字符串
a = binascii.b2a_hex(f.encode()) #转换成16进制
b = int(a, 16)
c = hex(b)[2:]
print(c)
os.system('pause'