栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

CTF【解密】字符串flag被加密成已知新字符串,请解密出flag,可以使用Python解码出WriteUp

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CTF【解密】字符串flag被加密成已知新字符串,请解密出flag,可以使用Python解码出WriteUp

CTF-解密: 找出flag

task.py

# -*- coding: utf-8 -*-

assert flag[0:5] == 'flag{'

strAlphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'


def encode(strOld, x, y, n):
    strNew = ''

    for i in strOld:
        if i in strAlphabet:
            num = strAlphabet.index(i)  # 返回索引值
            strNew += strAlphabet[(x*num - y) % n]
        else:
            strNew += i

    print(strNew)


if __name__ == '__main__':
    encode(flag, 29, 30, 52)
    # strNew = 'lDwO{kIDCmgI_bm_brI_cBL_crwDDIJOI}'

WriteUp:
由上述加密代码可知,我们要找的flag是以'flag{'开始的字符串,flag和加密后strNew中的字符都在strAlphabet中,不在的都原字符添加到strNew中,下标存在对应关系。

f对应l
l对应D
a对应w
g对应o

(29*num -30) % 52是对52取余数,取得整数可能是0, 1, 2, …

因此,解码如下:

main.py

# -*- coding: utf-8 -*-

strAlphabet = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
strNew = 'lDwO{kIDCmgI_bm_brI_cBL_crwDDIJOI}'


def decode(strEncode, x, y, n):
    strFlag = ''

    for i in strEncode:
        if i in strAlphabet:
            index = strAlphabet.index(i)  # 返回索引值

            for nTemp in range(0, 28):
                if ((index + n*nTemp + y) % x) == 0:
                    strFlag += strAlphabet[(index + n*nTemp + y) // x]
                    break
        else:
            strFlag += i

    print(strFlag)


if __name__ == '__main__':
    decode(strNew, 29, 30, 52)

运行结果如下:

flg{Welcome_to_the_CTF_Chllenge}

由于a对应w,所以

加密后字符串:'lDwO{kIDCmgI_bm_brI_cBL_crwDDIJOI}'
加密前字符串:'flag{Welcome_to_the_CTF_Challenge}'

则,flag就是'flag{Welcome_to_the_CTF_Challenge}'

为什么for nTemp in range(0, 28):中nTemp最大取值是27,这是因为
strAlphabet字符串最大索引值是51,(index + 52*nTemp + 30) // 29 =51
,那么nTemp=(1449-index)//52,可以看出index最小值是0,nTemp最大可以取值27。

如果本文对您有所帮助,请关注微信公众号“捷创源科技”!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/753763.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号