DASCTF X SU-2022-Crypto-FlowerCipher(利用已知条件爆破)

DASCTF X SU-2022-Crypto-FlowerCipher(利用已知条件爆破)

之前有写过DASCTF X SU-2022-Crypto-FlowerCipher之暴力暴力求解法(z3约束器)

然后虽然很简单粗暴,但我们还是换一种思路来解这道题。

感谢茂霖哥哥的解析

解析也不过再次赘述了,可以看我上一篇文章里面有写.

这里重点提两点

  • (1):flower = random.randint(0, 4096),已告知随机数范围,可以爆破
  • (2):验证爆破的flower是否正确在于:return x * (key ** 3 + flower),将return返回值除以x后减去flower的值是否能开三次方根

基于以上两点以及之前的分析,我们能写出爆破解密脚本:

from Crypto.Util.number import *
from gmpy2 import *

L_k = 15720197268945348388429429351303006925387388927292304717594511259390194100850889852747653387197205392431053069043632340374252629529419776874410817927770922310808632581666181899
R_k = 139721425176294317602347104909475448503147767726747922243703132013053043430193232376860554749633894589164137720010858254771905261753520854314908256431590570426632742469003
flag=[]
while(L_k!=1):
    R_k2 = L_k%R_k
    tmp = L_k-R_k2
    for i in range(0,4096):
        if(iroot((tmp//R_k)-i,3)[1]):
            flag.append(chr(int(iroot((tmp//R_k)-i,3)[0])))
            break
    L_k=R_k
    R_k=R_k2
flag.reverse()
for j in flag:
    print(j,end="")
#3e807b66ef26d38e671ddcbb9c108250

总结

代码看起来简洁了许多许多,爆破条件也很巧妙。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值