日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

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

發布時間:2025/3/11 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 += iprint(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]breakelse:strFlag += iprint(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。

如果本文對您有所幫助,請關注微信公眾號“捷創源科技”!

總結

以上是生活随笔為你收集整理的CTF【解密】字符串flag被加密成已知新字符串,请解密出flag,可以使用Python解码出WriteUp的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。