UNCTF-日常训练-reverse-babypy

"本文详细介绍了如何通过pyinstxtractor和010editor工具,对pyc文件进行逆向分析,解密flag。步骤包括替换baby.pyc头部、反编译并转换为二进制,最后通过特定算法还原出flag:unctf{Th@t_is_rea11y_c001}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

这题和上一题的思路是一样的,具体方法可以参考我的上一篇博客,我写得很详细了: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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ofo300

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值