悟夜叉个人博客 比赛解析 萌新密码学指南:栅栏/培根/base64解密

萌新密码学指南:栅栏/培根/base64解密

我的记忆能力可能属于比较差的,所以才会做这个博客来记录一些技术点。不管是简单的还是难一点的题目,我长时间不回顾真的就完全不会了。之前光研究做题就没写 Write-up,这个类别也能写个十几篇,也是弥补最近实在不知道写什么。

1、密文解密(一)

53316C6B5A6A42684D3256695A44566A4E47526A4D5459774C5556375A6D49324D32566C4D4449354F4749345A6A526B4F48303D

也没什么提示,题目给出了几个解密工具:

16进制编辑器?我们来看一下这段密文只有A-F这几个字母,大家要能初步判断这段是16进制字符串。不懂的直接查看wiki:十六进制组成

base64编码的字符串只包含大消息字母(A-Z,a-z)、数字0-9、+、/、=这64个字符。你看到字符串后面带 = 号,直接就去base64解密。

如果你要搜索一个文本里是否有base64的编码,可以通过正则来匹配:

^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$

base64解码后的结果:KYdf0a3ebd5c4dc160-E{fb63ee0298b8f4d8}

最后还剩一个“栅栏密码加解密”工具没有使用,栅栏密码就是简单的字符移动,直接用工具解密即可。单纯用文字演示可能不好理解,可移至“ 栅栏密码加解密详解 ”视频学习。

2、密文解密(二)

出题人已累,随便敲了几下键盘。。。 rdcvbg 2qase3 6tghu7

想了半天想不出来,这是个什么加密?看了其他人写的WP,直接上图吧!出题思路 + 1

3、密文解密(三)

题目名称:我想吃培根

题目描述: — — .-. … . ..–.- .. … ..–.- -.-. — — .-.. ..–.- -… ..- – ..–.- -… .- -.-. — -. ..–.- .. … ..–.- -.-. — — .-.. . .-. ..–.- — — -.. -.. — -.. — -.. — — — -.. -.. -.. /– -.. — -.. -.. –/ — — — — — /– -.. -.. — -.. — /– -.. -.. —

先给这段莫斯密码解码(记得删除无用符号 “ / ” ),推荐 –> 摩尔斯电码在线解密

后面跟了很多md这两个字母,再根据题目名称“培根”来推断该字符串是由培根密码加密。需要注意的是,培根密码只有A和B两个字母(也可以理解为计算机二进制的0和1)

将 m –> a,d –> b,培根密码详解请移步 培根密码百度百科 查看。

转换成:aabbababaaabbbababbaaaaaaabbabaabba,使用 培根密码在线解密 工具即可。

附:培根密码解密 python 脚本

CODE_TABLE = { #培根字典
'aaaaa':'a','aaaab':'b','aaaba':'c','aaabb':'d','aabaa':'e','aabab':'f','aabba':'g',
'aabbb':'h','abaaa':'i','abaab':'j','ababa':'k','ababb':'l','abbaa':'m','abbab':'n',
'abbba':'o','abbbb':'p','baaaa':'q','baaab':'r','baaba':'s','baabb':'t','babaa':'u',
'babab':'v','babba':'w','babbb':'x','bbaaa':'y','bbaab':'z'
}
choose = input('Input E(encode) or D(decode)\n\t') #输入E或D,选择加密或解密
if choose == 'E':
str = input('input your string:\n\t').lower()
listStr = ''
for i in str:
if i in CODE_TABLE.values():
# 将键、值各化为一个列表,取出i在value的位置后根据下标找到对应的键
listStr += list(CODE_TABLE.keys())[list(CODE_TABLE.values()).index(i)]
print(listStr)
print(listStr.upper())#大写输出
if choose == 'D':
bacon = input("input your bacon:\n\t").lower()
listBacon = []
for i in range(0,len(bacon),5):#5位为一组做一个列表
listBacon.append(bacon[i:i+5])
for i in range(len(listBacon)):#根据下标找值
listBacon[i] = CODE_TABLE[listBacon[i]]
print(''.join(listBacon))
print(''.join(listBacon).upper())

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

站长QQ/VX:82794

在线咨询: QQ交谈

邮箱: 82794@qq.com

任何技术问题请联系QQ,非特殊行业请勿加微信!龙信小伙伴请联系微信群找我。
关注微信
非商务合作请勿添加

非商务合作请勿添加微信

返回顶部