[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相关推荐
- CTF竞赛密码学之 LFSR
概述: 线性反馈移位寄存器(LFSR)归属于移位寄存器(FSR),除此之外还有非线性移位寄存器(NFSR).移位寄存器是流密码产生密钥流的一个主要组成部分. GF(2)GF(2)GF(2)上一个n级反 ...
- CTF竞赛密码学 之 LFSR
目录 概述: 解决LFSR问题 Part(1) 2018 强网杯 Streamgame1 第一种方法 第二种方法 第三种方法 Part(1) 2018 强网杯 Streamgame2 Part(3 ...
- [De1CTF2019]xorz
[De1CTF2019]xorz 附件: from itertools import * from data import flag,plainkey=flag.strip("de1ctf{ ...
- De1CTF-2019部分wp
目录 Misc1--We1come Misc2--Mine Sweeping Web1--SSRF Me Crypto1--xorz 去De1CTF划了划水,发现自己是真的菜━┳━ ━┳━ Misc1 ...
- buu [De1CTF2019]babyrsa(rsa基础数论知识点大考察)
题目: import binascii from data import e1,e2,p,q1p,q1q,hint,flagn = [201296153524917654993401129431883 ...
- 2021-07-15
[De1CTF2019]babyrsa 题目 import binascii from data import e1,e2,p,q1p,q1q,hint,flagn = [20129615352491 ...
- REVERSE-PRACTICE-BUUCTF-23
REVERSE-PRACTICE-BUUCTF-23 [2019红帽杯]Snake [BSidesSF2019]blink [De1CTF2019]Re_Sign [ACTF新生赛2020]Splen ...
- RSA之 两组e与φ(n)不互素解法
[De1CTF2019]babyrsa 遇事不慌先拆解 求p 求 e1 e2 求q1 求flag 遇事不慌先拆解 题目源代码有四部分,分析最后一部分与flag有关的未知参数有 p,e1,e2,q1 所 ...
- 2021Vivo千镜杯
VIVO千镜杯writeup 0x21战队WRITEUP 战队信息 战队名称:0x21 解题情况 解题过程 Misc 签到题 签到题有手就行 flag flag{6b92a6a3a8d6d422c78 ...
最新文章
- Anytime项目开发记录0
- ASP.NET2.0_执行页面发送的强类型方法与弱类型方法
- java左移、右移、无符号右移
- SAP标准培训课程C4C10学习笔记(二)第二单元
- 学计算机等级考试电脑版软件,计算机二级考试宝典电脑版
- Spring Data Solr教程:分页
- cookie和session之会话机制: http 协议 ---》 无状态协议
- 监控程序必须要放到服务器上进行吗?_五大最佳开源java性能监控工具,你知道几个?...
- sql server数据集中取第一条记录及保留几位小数的两种做法及前n行写法
- VMware 修复 Workstation、Fusion 和 ESXi中的多个漏洞
- OneNote | 代码高亮插件 NoteHightlight 安装教程(全面)
- 搜索引擎和知识图谱那些事
- mysql ndb安装_MySQL NDB Cluster 安装文档-基于CentOS7搭建
- 什么软件可以拍证件照电子版?分享两种拍证件照小妙招
- 【UCIe】UCIe NOP 介绍
- IEEE T PAMI投稿注意事项
- pageContext对象的用法详述
- origin绘图软件中文版下载安装教程
- 【论文笔记】—毫米波雷达穿雾式高分辨率成像—Supervised—HawkEye系统—2020-CVPR
- 计算 1+2(2次方)+3(3次方)+...+n(n次方)的值
热门文章
- Python之pandas:对pandas中dataframe数据中的索引输出、修改、重命名等详细攻略
- 成功解决TypeError: take() got an unexpected keyword argument ‘fill_value‘
- HighNewTech—2019CES:历史性!百度用自家的自动驾驶物流,把一个快递送到了 2019CES会场
- Algorithm:C++语言实现之SimHash和倒排索引算法相关(抽屉原理、倒排索、建立查找树、处理Hash冲突、Hash查找)
- Maven快速导出maven工程的依赖包
- Hadoop之HDFS(一)HDFS入门及基本Shell命令操作
- RuntimeException与CheckedException
- 【转】BaseAdapter用法
- stm32f103插拔pc端的串口引起的问题及解决办法
- 有关STM32外设配置的几个常见问题