日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[De1CTF2019]Babylfsr

發布時間:2025/3/21 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [De1CTF2019]Babylfsr 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[De1CTF2019]Babylfsr

題目

import hashlib from secret import KEY,FLAG,MASKassert(FLAG=="de1ctf{"+hashlib.sha256(hex(KEY)[2:].rstrip('L')).hexdigest()+"}") assert(FLAG[7:11]=='1224')LENGTH = 256assert(KEY.bit_length()==LENGTH) assert(MASK.bit_length()==LENGTH)def pad(m):pad_length = 8 - len(m)return pad_length*'0'+mclass lfsr():def __init__(self, init, mask, length):self.init = initself.mask = maskself.lengthmask = 2**(length+1)-1def next(self):nextdata = (self.init << 1) & self.lengthmask i = self.init & self.mask & self.lengthmask output = 0while i != 0:output ^= (i & 1)i = i >> 1nextdata ^= outputself.init = nextdatareturn outputif __name__=="__main__":l = lfsr(KEY,MASK,LENGTH)r = ''for i in range(63):b = 0for j in range(8):b = (b<<1)+l.next()r += pad(bin(b)[2:])with open('output','w') as f:f.write(r) 001010010111101000001101101111010000001111011001101111011000100001100011111000010001100101110110011000001100111010111110000000111011000110111110001110111000010100110010011111100011010111101101101001110000010111011110010110010011101101010010100101011111011001111010000000001011000011000100000101111010001100000011010011010111001010010101101000110011001110111010000011010101111011110100011110011010000001100100101000010110100100100011001000101010001100000010000100111001110110101000000101011100000001100010

解題
考點是偽隨機LFSR

加密代碼這個網址有:https://www.cnblogs.com/yhsy1002/p/6888895.html

先爆破掩碼:

def test(padding):s = [int(x) for x in '001010010111101000001101101111010000001111011001101111011000100001100011111000010001100101110110011000001100111010111110000000111011000110111110001110111000010100110010011111100011010111101101101001110000010111011110010110010011101101010010100101011111011001111010000000001011000011000100000101111010001100000011010011010111001010010101101000110011001110111010000011010101111011110100011110011010000001100100101000010110100100100011001000101010001100000010000100111001110110101000000101011100000001100010'] + paddingM = matrix(GF(2), 256, 256)T = vector(GF(2), 256)for i in range(len(s) - 256):M[i] = s[i : i + 256]T[i] = s[i+256]try:mask = M.inverse() * Tprint(hex(int(''.join(map(str, (mask))), base=2)))except:returnfor x in itertools.product([0, 1], repeat = 8):test(list(x))

然后解題代碼為

import itertools, hashlib, numpy as npdef int2bin(a, n):assert 0<=n and a < 2**nres = np.zeros(n, dtype = int)for x in range(n):res[n-x-1] = a % 2a = a // 2return res.tolist()def bin2int(a):return reduce(lambda x,y: x*2+y, a)def bitAnd(a, b):assert len(a) == len(b)return list(map(lambda x,y: int(x)&int(y), a, b))def test(padding):s = [int(x) for x in '001010010111101000001101101111010000001111011001101111011000100001100011111000010001100101110110011000001100111010111110000000111011000110111110001110111000010100110010011111100011010111101101101001110000010111011110010110010011101101010010100101011111011001111010000000001011000011000100000101111010001100000011010011010111001010010101101000110011001110111010000011010101111011110100011110011010000001100100101000010110100100100011001000101010001100000010000100111001110110101000000101011100000001100010'] + paddingM = matrix(GF(2), 256, 256)T = vector(GF(2), 256)for i in range(len(s) - 256):M[i] = s[i : i + 256]T[i] = s[i+256]try:mask = M.inverse() * Texcept:returnsuf = []for i in range(256):if bitAnd([0] + suf + s[0:255 - i], mask).count(1) % 2 == s[255 - i]:suf = [0] + sufelse:suf = [1] + sufkey = hex(bin2int(suf))[2:]sha = hashlib.sha256(key.encode()).hexdigest()if sha[:4] == '1224':print(sha)for x in itertools.product([0, 1], repeat = 8):test(list(x))

sage運行得到:1224473d5e349dbf2946353444d727d8fa91da3275ed3ac0dedeb7e6a9ad8619

flag{1224473d5e349dbf2946353444d727d8fa91da3275ed3ac0dedeb7e6a9ad8619}

總結

以上是生活随笔為你收集整理的[De1CTF2019]Babylfsr的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。