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