2020HXB-CRYPTO-LFSRXOR
每天一题,只能多不能少
LFSRXOR
题目分析
可以说是被LFSR给骗了,其实跟LFSR根本没关系。
- 异或逆向
- 同原文不同密钥循环异或加密逆向
开始
1.题目
给了一个加密算法,两个enc在算法末端注释部分。
import numpy as np
from pylfsr import LFSR
from Crypto.Util.number import *
import random
import string
from secret import flag
assert flag[:6] == "DASCTF"
def xor(a,b):
return str(chr(a^b)).encode('latin1')
def encode(content,key):
tmp=b""
for i in range(len(content)):
tmp += xor(content[i],key[i%len(key)])
return tmp
def shuffle_str(s):
str_list = list(s)
random.shuffle(str_list)
return ''.join(chr(i) for i in str_list).encode('latin1')
ran_str = ''.join(chr(random.randint(1,256)) for _ in range(512)).encode()
content = ran_str+flag
L4 = LFSR(fpoly=[4,3],initstate ='random',verbose=True)
data = L4.runFullCycle()
k4 = b""
for _ in range(len(data)):
a = b''
for _ in range(8):
a += str(L4.next()).encode(