强网杯爆出三道密码题,题解及 python 脚本分享

2024-10-21 19:13:10

问题名称:

操作:

对下载的压缩包进行分析后,给出了脚本和密钥。以十六进制打开时键值为12个数字。该脚本利用标志值和掩码执行一系列加密算法,最终获得12个密钥文件中的数字,而标志内容是一个19位的二进制数,即2^19种可能性。因此,写一个脚本进行爆破,根据给定的算法每次计算12个值。如果这12个值与key值相等,则找到flag。脚本如下:

def lfsr(R,mask):
    output = (R << 1) &0xffffff
    i=(R&mask)&0xffffff
    lastbit=0
    while i!=0:
        lastbit^=(i&1)
        i=i>>1
    output^=lastbit
    return (output,lastbit)
key=[85,56,247,66,193,13,178,199,237,224,36,58]
mask=0b1010011000100011100
for k in range(2**19):
    R=k;
    a=''
    judge=1
    for i in range(12):
        tmp = 0
        for j in range(8):
            (k, out) = lfsr(k, mask)
            tmp = 

标签: Crypto
首页
欧意注册
欧意下载
联系