以bugku托马斯.杰斐逊为例
s = ["ZWAXJGDLUBVIQHKYPNTCRMOSFE",
"KPBELNACZDTRXMJQOYHGVSFUWI",
"BDMAIZVRNSJUWFHTEQGYXPLOCK",
"RPLNDVHGFCUKTEBSXQYIZMJWAO",
"IHFRLABEUOTSGJVDKCPMNZQWXY",
"AMKGHIWPNYCJBFZDRUSLOQXVET",
"GWTHSPYBXIZULVKMRAFDCEONJQ",
"NOZUTWDCVRJLXKISEFAPMYGHBQ",
"QWATDSRFHENYVUBMCOIKZGJXPL",
"WABMCXPLTDSRJQZGOIKFHENYVU",
"XPLTDAOIKFZGHENYSRUBMCQWVJ",
"TDSWAYXPLVUBOIKZGJRFHENMCQ",
"BMCSRFHLTDENQWAOXPYVUIKZGJ",
"XPHKZGJTDSENYVUBMLAOIRFCQW"]#给定加密表
first = []
result = []
key = [2,5,1,3,6,4,9,7,8,14,10,13,11,12]#密钥
c = "HCBTSXWCRQGLES"#密文
for i in key:
first.append(s[i-1])#首先得到正确顺序
#print(first)
for i in range(len(key)):
for j in range(len(first[i])):#接着在每一行里找到与密文对应的字母,进行切片
if first[i][j] == c[i]:
text = first[i][j:] + first[i][0:j]
result.append(text)
break
else:
continue
for i in range(len(result)):
print(result[i])
HGVSFUWIKPBELNACZDTRXMJQOY
CPMNZQWXYIHFRLABEUOTSGJVDK
BVIQHKYPNTCRMOSFEZWAXJGDLU
TEQGYXPLOCKBDMAIZVRNSJUWFH
SLOQXVETAMKGHIWPNYCJBFZDRU
XQYIZMJWAORPLNDVHGFCUKTEBS
WATDSRFHENYVUBMCOIKZGJXPLQ
CEONJQGWTHSPYBXIZULVKMRAFD
RJLXKISEFAPMYGHBQNOZUTWDCV
QWXPHKZGJTDSENYVUBMLAOIRFC
GOIKFHENYVUWABMCXPLTDSRJQZ
LTDENQWAOXPYVUIKZGJBMCSRFH
ENYSRUBMCQWVJXPLTDAOIKFZGH
SWAYXPLVUBOIKZGJRFHENMCQTD
竖着看,得到有意义的flag:xsxsbugkuadmin(改成小写)