强网杯爆出三道密码题,题解及 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
                                                            
                                            					        
                 
                     
                                                             
                    