TJCTF之Python Reversing

本文介绍了作者在TJCTF中遇到的一道Python逆向分析题目。通过逐步解析代码,发现了一个未知库中的函数,并通过调试理解了程序逻辑。通过计算得出每个字符可能对应的位数,并利用提示进行爆破。最终,作者分享了简化版的解决代码,强调理解逻辑的重要性,并提供了题目链接供读者实践。
摘要由CSDN通过智能技术生成

博客已经转移

https://noone-hub.github.io/

这个题目先做出来,晚发布,因为做着下一道题卡住了,忘了来写博客记录了,现在补上,这道题其实不难,就是我语文水准不好

贴上代码先

import numpy as np #取随机库

flag = 'redacted'

np.random.seed(12345)#给个seed取随机数
arr = np.array([ord(c) for c in flag])#创建一个数组 为字符转数字的
other = np.random.randint(1,5,(len(flag)))#生成范围为1-5,长度为flag的数组
arr = np.multiply(arr,other)#将两个数组相乘

b = [x for x in arr]
lmao = [ord(x) for x in ''.join(['ligma_sugma_sugondese_'*5])]
c = [b[i]^lmao[i] for i,j in enumerate(b)] #这是生成带序号的一个list
print(''.join(bin(x)[2:].zfill(8) for x in c))#zfill是填充0如果没8位,bin(x)[2:]是去掉0b的前缀,这都是调试过后得到的,自己也可以做

# original_output was 10011000010111101101000011000010100000111101010011001000111011111101000111110
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值