2021-09-15

博客内容讲述了参与一个CTF比赛时遇到的PDF文档加密问题,文档通过ROT13编码进行加密,并且在解密过程中遇到了编码格式的困扰。最终,通过了解PoemCode加密方式并使用特定工具成功解密,获取了隐藏的flag。解密后的信息是一段诗和一段密文,经过翻译和进一步解密,得到了最终的解密消息。
摘要由CSDN通过智能技术生成

banana-princess

题目给了一个pdf文档,却不能打开,换后缀名txt打开
在这里插入图片描述
如果是pdf文件,开头应该是pdf,但是这个开头是CQS,所以推测发生了移位

从C到P,从Q到D,从S到F,都是移动了13位,也就是ROT13

写个代码解密

import string
def rot(c, n):
    if c.isupper():
        start = ord('A')
    elif c.islower():
        start = ord('a')
    else:
        return c
    m = ord(c) - start
    i = (m + n) % 26 + start
    return chr(i)

f = open('b.txt','r',errors='ignore').read()
m = ''

for i in f:
    m += rot(i,13)

open('b2.pdf','w').write(m)

但是打开文件用的编码好几个都不对,默认是gbk不对,改成utf-8不对,改成gb18030还是不行,最后强制忽略错误才运行成功,但是打开了确是一片空白

搜了大佬们的解题方法发现他们直接用了工具

cat b.pdf | tr 'A-Za-z' 'N-ZA-Mn-za-m' > new.pdf

然后就得到了

在这里插入图片描述

flag在的地方被遮住了

在无数次尝试之后,发现PS才是正确打开方式,管他什么pdf呢

有两层,不看上面那层就出来了
在这里插入图片描述
看到了flag:BITSCTF{save_the_kid}

Decrypt-the-Message

The life that I have
Is all that I have
And the life that I have
Is yours.

The love that I have
Of the life that I have
Is yours and yours and yours.

A sleep I shall have
A rest I shall have
Yet death will be but a pause.

For the peace of my years
In the long green grass
Will be yours and yours and yours.

decrypted message: emzcf sebt yuwi ytrr ortl rbon aluo konf ihye cyog rowh prhj feom ihos perp twnb tpak heoc yaui usoa irtd tnlu ntke onds goym hmpq

翻译得到:

我的生活
这就是我的全部
还有我的生活
这是你的。
我拥有的爱
我所拥有的生活
是你的,你的,你的。
我要睡一觉
我要休息一下
然而,死亡只是一个停顿。
为了我晚年的安宁
在长长的绿草中
将是你的,你的,你的。
解密消息: emzcf sebt yuwi ytrr ortl rbon aluo konf ihye cyog rowh prhj feom ihos perp twnb tpak heoc yaui usoa irtd tnlu ntke onds goym hmpq

可以明显看出密文是: emzcf sebt yuwi ytrr ortl rbon aluo konf ihye cyog rowh prhj feom ihos perp twnb tpak heoc yaui usoa irtd tnlu ntke onds goym hmpq

而这题的加密方式叫:Poem Code

大概了解一下解密方式,

有大佬的解密代码:https://github.com/abpolym/crypto-tools/blob/master/poemcode/poemcode.py

然后输入python poemcode.py poem msg

poemcode.py是代码名称,poem是那个诗歌,msg是要解密的信息

但是代码需要改一些,因为原代码是python2

运行得到
在这里插入图片描述
有一行:ifyouthinkcryptographyistheanswertoyourproblemthenyoudonotknowwhatyourproblemisabcdefghijklmnopqrstu
就是flag了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值