1. 題目信息
附件是一個文本文件,里面是一段長34的字符串。
2. 分析
文本中的字符串看上去像base32編碼,加填充后解碼得亂碼;很多時候比賽的名稱是解密的謎面,對字符串BITSCTF進行base32編碼得字符串IJEVIU2DKRDA====,與文本中的字符串MZYVMIWLGBL7CIJOGJQVOA3IN5BLYC3NHI進行對比,發現字符I兩次對應M,猜測是移位密碼或仿射密碼,加密運算的有限集為{A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,2,3,4,5,6,7},不理解的可以參見對base編碼的介紹,嘗試之后得加密方式為仿射密碼,求得解密式為\(x=5y+12\ \textrm{mod}\ 32\)。
3. 解題
實現的Python腳本如下:
from base64 import b32decode
def solve():
s='MZYVMIWLGBL7CIJOGJQVOA3IN5BLYC3NHI'
dic='ABCDEFGHIJKLMNOPQRSTUVWXYZ234567'
msg=''.join([dic[(5*dic.find(x)+12)%32] for x in s])
return b32decode(msg+'='*(8-len(msg)%8))
if __name__=='__main__':
#python solve.py
print solve()
運行程序得如下結果:
$ python solve.py
BITSCTF{S2VyY2tob2Zm}