[afctf][crypto]有趣的题目

2024-01-07 14:28
文章标签 题目 有趣 crypto afctf

本文主要是介绍[afctf][crypto]有趣的题目,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

slove

核心是使用明文字符串自身的元素生成一个“伪随机字符串”与自身异或生成密文。

伪随机字符串的生成规则由i + space < len(plainText) - 1判断

ord(plainText[i + space]),ord(plainText[space])的space的移动由明文对应字符的ascii字符奇偶性决定。

明文长度28字节。

爆破2^28,应至少存在一个bit序列等于当前密文的每字节最后1bit组成的序列。

知道这个bit序列后就知道了space的移动情况,进而可以获得“伪随机字符串”是明文的哪些项的置换。

根据flag的固定格式afctf可以提前获得某些明文部分。经测试至少知道前2个字符即可解密


def encrypt(plainText):space = 10cipherText = ""try:for i in range(len(plainText)):if i + space < len(plainText) - 1:cipherText += chr(ord(plainText[i]) ^ ord(plainText[i + space]))else:cipherText += chr(ord(plainText[i]) ^ ord(plainText[space]))if ord(plainText[i]) % 2 == 0:space += 1else:space -= 1except:return '1'return cipherTextdef brute():for x in range(2**28):print(x)last_bit=bin(x)[2:].zfill(28)assert len(last_bit)==28tostr=''for each in last_bit:tostr+=chr(int(each,2))tmp=encrypt(tostr)tmp2=''for each in tmp:tmp2+=bin(ord(each))[-1]if tmp2=='1010000101101011111111101000':print('found',last_bit)
cipherText = "15120d1a0a0810010a031d3e31000d1d170d173b0d173b0c07060206"
tmp=''
for each in bytes.fromhex(cipherText):tmp+=bin(each)[-1]
print(tmp) #1010000101101011111111101000
brute()# found 1010011010010101111111101001

part2

# 10,9,10,9,10,11,10,9,10,9,10,11,10,11,10,11,10, 9, 8, 7, 6, 5, 4, 3, 4, 3, 4, 5     sapce
# 0 ,1,2 ,3,4 ,5 ,6 ,7, 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27    index
# 10,10,12,12,14,16,16,16,18,18,20,22,22,24,24,26,26,26,26,26,26,26,26,26,4,3,4,5,  real index
# b'\x15\x12\r\x1a\n\x08\x10\x01\n\x03\x1d>1\x00\r\x1d\x17\r\x17;\r\x17;\x0c\x07\x06\x02\x06'
cipherText = "15120d1a0a0810010a031d3e31000d1d170d173b0d173b0c07060206"
print(bytes.fromhex(cipherText))
cipher=bytes.fromhex(cipherText)space=[10,9,10,9,10,11,10,9,10,9,10,11,10,11,10,11,10, 9, 8, 7, 6, 5, 4, 3, 4, 3, 4, 5 ]
pseudo_array=[10,10,12,12,14,16,16,16,18,18,20,22,22,24,24,26,26,26,26,26,26,26,26,26,4,3,4,5,]
origin=[0 ,1,2 ,3,4 ,5 ,6 ,7, 8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27]
for a,b in zip(pseudo_array,origin):print('%2d'%a,end=',')
print()
for a,b in zip(pseudo_array,origin):print('%2d'%b,end=',')w=['ww']*28
know='afctf'
w[:len(know)]=know
# print(w,len(w))
while 'ww' in w:for p,o in zip(pseudo_array,origin):if w[o] !='ww':w[p]=chr(ord(w[o])^cipher[o])if w[p] !='ww':w[o]=chr(ord(w[p])^cipher[o])print(''.join(w))
# afctf{cryptanalysis_is_hard} 

这篇关于[afctf][crypto]有趣的题目的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/580205

相关文章

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

题目1254:N皇后问题

题目1254:N皇后问题 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: N皇后问题,即在N*N的方格棋盘内放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在同一斜线上。因为皇后可以直走,横走和斜走如下图)。 你的任务是,对于给定的N,求出有多少种合法的放置方法。输出N皇后问题所有不同的摆放情况个数。 输入

题目1380:lucky number

题目1380:lucky number 时间限制:3 秒 内存限制:3 兆 特殊判题:否 提交:2839 解决:300 题目描述: 每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然

【408数据结构】散列 (哈希)知识点集合复习考点题目

苏泽  “弃工从研”的路上很孤独,于是我记下了些许笔记相伴,希望能够帮助到大家    知识点 1. 散列查找 散列查找是一种高效的查找方法,它通过散列函数将关键字映射到数组的一个位置,从而实现快速查找。这种方法的时间复杂度平均为(

码蹄集部分题目(2024OJ赛9.4-9.8;线段树+树状数组)

1🐋🐋配对最小值(王者;树状数组) 时间限制:1秒 占用内存:64M 🐟题目思路 MT3065 配对最小值_哔哩哔哩_bilibili 🐟代码 #include<bits/stdc++.h> using namespace std;const int N=1e5+7;int a[N],b[N],c[N],n,q;struct QUERY{int l,r,id;}que

2024 年高教社杯全国大学生数学建模竞赛题目——2024 年高教社杯全国大学生数学建模竞赛题目的求解

2024 年高教社杯全国大学生数学建模竞赛题目 (请先阅读“ 全国大学生数学建模竞赛论文格式规范 ”) 2024 年高教社杯全国大学生数学建模竞赛题目 随着城市化进程的加快、机动车的快速普及, 以及人们活动范围的不断扩大,城市道 路交通拥堵问题日渐严重,即使在一些非中心城市,道路交通拥堵问题也成为影响地方经 济发展和百姓幸福感的一个“痛点”,是相关部门的棘手难题之一。 考虑一个拥有知名景区

力扣 739. 每日温度【经典单调栈题目】

1. 题目 理解题意: 1.1. 给一个温度集合, 要返回一个对应长度的结果集合, 这个结果集合里面的元素 i 是 当前 i 位置的元素的下一个更高温度的元素的位置和当前 i 位置的距离之差, 若是当前元素不存在下一个更高温度的元素, 则这个位置用0代替; 2. 思路 本题用单调栈来求解;单调栈就适用于来求当前元素左边或者右边第一个比当前元素大或者小的元素;【单调栈:让栈中的元素保持单调

msyql执行效率的问题以及常见基础面试题目

SQL被称为结构化查询语言(Structured Query Language )是操作和检索关系型数据库的标准语言 SQL语言包括三种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)。 ※ 数据定义语言(DDL),例如:CREATE、DROP、ALTER等语句。    Data Definition Language ※ 数据

2024 年高教社杯全国大学生数学建模竞赛题目【A/B/C/D/E题】完整论文+代码+结果

编辑 2024国赛A题参考论文https://download.csdn.net/download/qq_52590045/897183672024国赛D题参考论文https://download.csdn.net/download/qq_52590045/897158482024国赛E题参考论文https://download.c

高级数据结构设计--并查集及实现学习笔记(有趣篇)

并查集的程序设计: 为了解释并查集的原理,我将举一个更有趣的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形