前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >IK&N内部密码学练习(1)

IK&N内部密码学练习(1)

作者头像
吉师散养基地
发布2023-04-07 18:39:16
2560
发布2023-04-07 18:39:16
举报
文章被收录于专栏:我奏是太阳我奏是太阳

前言

第100篇就不水了,好好写一下

不过牛还是要吹的:

代码语言:javascript
复制
CSDN内容合伙人、2023年新星计划web安全方向导师、
华为MindSpore截至目前最年轻的优秀开发者、IK&N战队队长、
阿里云专家博主、华为网络安全云享专家、腾讯云自媒体分享计划博主

第一题:我爱吃石榴

原题出自ctfshow

真是太善良了,直接通过谐音把加密方法告诉我们了。

他真的,我哭死

石榴==16

直接16进制转字符串即可

16进制转换,16进制转换文本字符串,在线16进制转换 | 在线工具

 但这道题在ctfshow上是没有提示的。我们该如何去思考这道题?

这里就要想到16进制的特点:

  • 基数:16进制数的基数为16,即每个位置上可以有0~15之间的任意数字。
  • 数字表示:16进制数使用0~9和A~F(或a~f)共计16个字符来表示数字,其中A~F(或a~f)代表10~15。举个例子,16进制数中的B6C3相当于10进制数的46723。

第二题:红中天天吃培根是真的6

题目

代码语言:javascript
复制
4142414141414241424142414241414142424142424142424142414141414241424141414141414141424241424142424142414241414141424241414141424141414242414241424142424142414141424241414241414242424142414141

一眼顶真,培根密码,而且题目还给提示了

直接拿工具解密一下

 解不出来,想想是差哪了。

培根密码算法如下:

  1. 明文处理:将明文字符串中的字母转换为大写字母,并去除空格和标点符号等非字母字符。
  2. 二进制编码:将每个字母转换为5位的二进制数,其中A表示00000,B表示00001,C表示00010,以此类推,直到Z表示11010。例如,字母A的二进制编码为00000,字母B的二进制编码为00001。
  3. 密文生成:将每个字母的二进制编码用A和B来表示,其中0表示A,1表示B。例如,字母A的二进制编码00000可以表示为AAAAA,字母B的二进制编码00001可以表示为AAAAB。
  4. 密文输出:将密文字符串输出,其中每五个字母对应一个明文字母的二进制编码。

如果是培根的话,应该是AB的形式,那这个就是要再解密才能出来培根的形式

想想题目的提示

是真的6

是6

16

诶嘿

 然后直接跑一下培根

代码语言:javascript
复制
ikun{woquannimenlizhi}

第三题:小黑子打网站

题目

代码语言:javascript
复制
oq%2526t%257h%25k5%25h0%258l%25k9%25hh%2591%25k5%25gj%2590%25k6%25g0%2591%25k6%259k%259j666%257j

一眼顶针,两次URL+凯撒,密钥是6

代码语言:javascript
复制
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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-04-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 第一题:我爱吃石榴
  • 第二题:红中天天吃培根是真的6
  • 第三题:小黑子打网站
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档