第100篇就不水了,好好写一下
不过牛还是要吹的:
CSDN内容合伙人、2023年新星计划web安全方向导师、
华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、
阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主
原题出自ctfshow
真是太善良了,直接通过谐音把加密方法告诉我们了。
他真的,我哭死
石榴==16
直接16进制转字符串即可
16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具
但这道题在ctfshow上是没有提示的。我们该如何去思考这道题?
这里就要想到16进制的特点:
题目
4142414141414241424142414241414142424142424142424142414141414241424141414141414141424241424142424142414241414141424241414141424141414242414241424142424142414141424241414241414242424142414141
一眼顶真,培根密码,而且题目还给提示了
直接拿工具解密一下
解不出来,想想是差哪了。
培根密码算法如下:
如果是培根的话,应该是AB的形式,那这个就是要再解密才能出来培根的形式
想想题目的提示
是真的6
是6
16
诶嘿
然后直接跑一下培根
ikun{woquannimenlizhi}
题目
oq%2526t%257h%25k5%25h0%258l%25k9%25hh%2591%25k5%25gj%2590%25k6%25g0%2591%25k6%259k%259j666%257j
一眼顶针,两次URL+凯撒,密钥是6
import urllib.parse
# 经过两次URL编码的密文字符串
encoded_str = "oq%2526t%257h%25k5%25h0%258l%25k9%25hh%2591%25k5\
%25gj%2590%25k6%25g0%2591%25k6%259k%259j666%257j"
# 两次URL解码得到原始密文
ciphertext = urllib.parse.unquote(urllib.parse.unquote(encoded_str))
# 密钥
key = 6
# 解密过程:将每个字符向左(或向右)移动6个位置
plaintext = ''
for c in ciphertext:
if c.isalpha():
new_c = ord(c) - key
if c.isupper() and new_c < ord('A'):
new_c += 26
elif c.islower() and new_c < ord('a'):
new_c += 26
plaintext += chr(new_c)
else:
plaintext += c
# 去除明文字符串中的噪音字符
plaintext = plaintext.replace('_and_', ' ').replace('_', '')
# 在明文字符串中添加大括号{}
plaintext = 'ik&n{' + plaintext + '666}'
print(plaintext)