[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相关推荐

  1. CTF竞赛密码学之 LFSR

    概述: 线性反馈移位寄存器(LFSR)归属于移位寄存器(FSR),除此之外还有非线性移位寄存器(NFSR).移位寄存器是流密码产生密钥流的一个主要组成部分. GF(2)GF(2)GF(2)上一个n级反 ...

  2. CTF竞赛密码学 之 LFSR

    目录 概述: 解决LFSR问题 Part(1)  2018 强网杯 Streamgame1 第一种方法 第二种方法 第三种方法 Part(1)  2018 强网杯 Streamgame2 Part(3 ...

  3. [De1CTF2019]xorz

    [De1CTF2019]xorz 附件: from itertools import * from data import flag,plainkey=flag.strip("de1ctf{ ...

  4. De1CTF-2019部分wp

    目录 Misc1--We1come Misc2--Mine Sweeping Web1--SSRF Me Crypto1--xorz 去De1CTF划了划水,发现自己是真的菜━┳━ ━┳━ Misc1 ...

  5. buu [De1CTF2019]babyrsa(rsa基础数论知识点大考察)

    题目: import binascii from data import e1,e2,p,q1p,q1q,hint,flagn = [201296153524917654993401129431883 ...

  6. 2021-07-15

    [De1CTF2019]babyrsa 题目 import binascii from data import e1,e2,p,q1p,q1q,hint,flagn = [20129615352491 ...

  7. REVERSE-PRACTICE-BUUCTF-23

    REVERSE-PRACTICE-BUUCTF-23 [2019红帽杯]Snake [BSidesSF2019]blink [De1CTF2019]Re_Sign [ACTF新生赛2020]Splen ...

  8. RSA之 两组e与φ(n)不互素解法

    [De1CTF2019]babyrsa 遇事不慌先拆解 求p 求 e1 e2 求q1 求flag 遇事不慌先拆解 题目源代码有四部分,分析最后一部分与flag有关的未知参数有 p,e1,e2,q1 所 ...

  9. 2021Vivo千镜杯

    VIVO千镜杯writeup 0x21战队WRITEUP 战队信息 战队名称:0x21 解题情况 解题过程 Misc 签到题 签到题有手就行 flag flag{6b92a6a3a8d6d422c78 ...

最新文章

  1. Anytime项目开发记录0
  2. ASP.NET2.0_执行页面发送的强类型方法与弱类型方法
  3. java左移、右移、无符号右移
  4. SAP标准培训课程C4C10学习笔记(二)第二单元
  5. 学计算机等级考试电脑版软件,计算机二级考试宝典电脑版
  6. Spring Data Solr教程:分页
  7. cookie和session之会话机制:   http 协议  ---》 无状态协议
  8. 监控程序必须要放到服务器上进行吗?_五大最佳开源java性能监控工具,你知道几个?...
  9. sql server数据集中取第一条记录及保留几位小数的两种做法及前n行写法
  10. VMware 修复 Workstation、Fusion 和 ESXi中的多个漏洞
  11. OneNote | 代码高亮插件 NoteHightlight 安装教程(全面)
  12. 搜索引擎和知识图谱那些事
  13. mysql ndb安装_MySQL NDB Cluster 安装文档-基于CentOS7搭建
  14. 什么软件可以拍证件照电子版?分享两种拍证件照小妙招
  15. 【UCIe】UCIe NOP 介绍
  16. IEEE T PAMI投稿注意事项
  17. pageContext对象的用法详述
  18. origin绘图软件中文版下载安装教程
  19. 【论文笔记】—毫米波雷达穿雾式高分辨率成像—Supervised—HawkEye系统—2020-CVPR
  20. 计算 1+2(2次方)+3(3次方)+...+n(n次方)的值

热门文章

  1. Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略
  2. 成功解决TypeError: take() got an unexpected keyword argument ‘fill_value‘
  3. HighNewTech—2019CES:历史性!百度用自家的自动驾驶物流,把一个快递送到了 2019CES会场
  4. Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)
  5. Maven快速导出maven工程的依赖包
  6. Hadoop之HDFS(一)HDFS入门及基本Shell命令操作
  7. RuntimeException与CheckedException
  8. 【转】BaseAdapter用法
  9. stm32f103插拔pc端的串口引起的问题及解决办法
  10. 有关STM32外设配置的几个常见问题