一开始把int函数的意思记错了,感觉题目很奇怪,之后才反应过来,这里int函数应该是将一个二进制的字符串转成10进制数. 一道很简单的lfsr题目. 直接逆.
f=open('streamgame2key','rb').read() from Crypto.Util import number f=bin(number.bytes_to_long(f))[2:] pflag='' for i in range(len(f)-2): pflag+=str(int(f[i])^int(f[i+2])) pflag=pflag[:19] flag1=str(int(f[0])^int(pflag[-2])) flag2=str(int(f[1])^int(pflag[-1])) print((flag1 + flag2 + pflag)) #flag{110111100101001101001}