Crypto( 12 )
easy_crypto
下载好打开,有点像base64,搜了一下并不是,在网页上看见若base 64出现乱码就用rot 13
之后就没思路了
结果要用base 32
base 64
base 85
flag{so_easy!}
下面是有关base知识点
https://www.cnblogs.com/ruoli-s/p/14206145.html
JJ
用与佛论禅在线工具
base 100
base 64
flag{zhou-jie-lun-zui-niu-bi}
ctfshow
密码2
将ctf转为. 将show转为-,摩斯密码
以为是flag,提交上去竟然不对,看来wp,结果还要进制转换
flag{珍惜眼前人}
BJDCTF2020 签到
有点像16进制,用16进制转字符串在线工具
提交了,不对,结果flag是:
BJD{We1c0me_t4_BJDCTF}
不需要flag{……}
BJDCTF2020 编码与调制
一张图和一个txt文本,无思路,看了大佬的wp
提到了曼彻斯特编码,第一次遇见,先将密文转二进制,在转曼彻斯特编码,最后再转16进制,再用16进制转字符就ok了
二进制转为曼彻斯特编码对应的工具,也没找到,后面16进制转字符串也没得到flag
BJDCTF2020 Polybius
用base 64 解了一下
放上去也不对,看了wp,结果是棋盘密码
翻译一下就是该明文的长度为14,然后再看密文的长度为28,刚好为2倍关系,所以说棋盘密码无疑了,那现在就是有一个问题,不知道顺序。
现在的已知罗列如下:
以及第一行有字符:u,o,e,a,i
第一列有字符:o,a,u,i,e
但是现在不清楚它们的排列方式是怎样的,也就是说现在一共有5!=120种情况,当然如果有耐心的话一个一个是可以试出来的,在这里我们使用脚本
`
import itertools
s="aeoiu"
sumresult=[]
numsumresult=[]
ciper="ouauuuoooeeaaiaeauieuooeeiea"
for i in itertools.permutations(s,5):#因为在这里并不清楚aeoiu的排列顺序,因此调用函数做一个全排列
sumresult.append("".join(i))
"""
下面这行代码是来进行一个棋盘的演示:
首先从上面的全排列先选出一组字符,然后在找到密文的对应的字符
最后我们得到得数字,就是密文各个字符,在表格中排列位置
可以进行调试,第一次调试过后,j为o,此时temp为3,而按照刚才的aeoiu的顺序,o也的确在第三个位置。
"""
for i in sumresult:
temp=""
for j in ciper:
temp+=str(i.index(j)+1)
numsumresult.append(temp)
"""
在进行棋盘演示之后,我们就需要开始自己的表演了:
首先取上面的第一串数字,然后因为在明文中,每一个字符需要用两个字母加密,那在下面的循环结构里,
也是以每两个数字为一个单位进行求解,
后面这个计算式:xx=(int(i[j])-1)*5+int(i[j+1])+96其实就是一个棋盘里找规律
来浅浅验证一下子吧,ou,所以第一个加密的字符是p,ou为3和5,p的字母表位置是第16,所以说用上面那个算式,但是,这么做会有一个问题
表格里i和j放在一起了,也就是说现在等于缺了一个字符,导致i(包括i)前面的字符不受影响,后面的字符少了一位,那就需要加一个判断语句
让后面的数字挨个+1,问题就都解决了,最后输出就好
另外+96是因为要变成ASCLL值,虽然大家都懂,但还是提示一下下。
点击查看代码
import itertools
s="aeoiu"
sumresult=[]
numsumresult=[]
ciper="ouauuuoooeeaaiaeauieuooeeiea"
for i in itertools.permutations(s,5):#因为在这里并不清楚aeoiu的排列顺序,因此调用函数做一个全排列
sumresult.append("".join(i))
"""
下面这行代码是来进行一个棋盘的演示:
首先从上面的全排列先选出一组字符,然后在找到密文的对应的字符
最后我们得到得数字,就是密文各个字符,在表格中排列位置
可以进行调试,第一次调试过后,j为o,此时temp为3,而按照刚才的aeoiu的顺序,o也的确在第三个位置。
"""
for i in sumresult:
temp=""
for j in ciper:
temp+=str(i.index(j)+1)
numsumresult.append(temp)
"""
在进行棋盘演示之后,我们就需要开始自己的表演了:
首先取上面的第一串数字,然后因为在明文中,每一个字符需要用两个字母加密,那在下面的循环结构里,
也是以每两个数字为一个单位进行求解,
后面这个计算式:xx=(int(i[j])-1)*5+int(i[j+1])+96其实就是一个棋盘里找规律
来浅浅验证一下子吧,ou,所以第一个加密的字符是p,ou为3和5,p的字母表位置是第16,所以说用上面那个算式,但是,这么做会有一个问题
表格里i和j放在一起了,也就是说现在等于缺了一个字符,导致i(包括i)前面的字符不受影响,后面的字符少了一位,那就需要加一个判断语句
让后面的数字挨个+1,问题就都解决了,最后输出就好
另外+96是因为要变成ASCLL值,虽然大家都懂,但还是提示一下下。
"""
for i in numsumresult:
ans_=""
for j in range(0, len(i),2):
xx=(int(i[j])-1)*5+int(i[j+1])+96
if xx>ord('i') :
xx+=1
ans_+=chr(xx)
print(ans_)
36D 签到
打开文本就是这样的
题目有提示:用rot有关的工具
应该是用rot 47,解出来是这样的
试试对应着键盘敲
flag{6b6579626f6172645f656e63}
竟然是错的,想到了hex编码
最后flag:
flag{keyboard_enc}
justShow
看见了后面的字符串,大概懂了一点,应该是将密文往后移了移位
所以将hlcgoyfsjqknyifnpd往前移一位得:
gkbfnxeripjmxhemoc
在用上面的密文进行playfair密码解密,密钥为abcdefghijklmnopqrstuvwxyz
解密出来:flagisctfshowicome
flag{ctfshowicome}
飞鸽传书
先用base 64解密,得到
搜了搜%0A
1b08af276dbc7593271f4ee616289324
e2ae3a2350743c516cda412499ba3be9
bde52cb31de33e46245e05fbdbd6fb24
e23e00be39d36f3462e576a67a7f9199
18c79285b514c63fc9035e3f920ae477
da44dd192defd1be79f63c350d2920cf
4251c4c649c7d2f86327efde23992fa7
aae7b2d482382aaad75fde64df8ff86f
296f7ffc2e4545dc7792050ceb4a8711
6107ac1a55f1e0fecb7ddb60fb3bf109
aec2333321d73000161682d3c4ebc009
5005b3bf00050bf4f7e43ac33a0454b8
HEX解码不行,用MD5
flag{36D_me}
easy_base
base 16——base 32——base 64
ctfshow{yu_ren_j1e_haPpy!!!}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理