原理这里不再重复了 自行google

需要注意的自行修改flag格式,因为加密过程对{}不加密所以解密时我自动过滤了{},这点跟凯撒类似,你自己加上就可以了

脚本如下:

# -*- coding: UTF-8 -*-
key='The quick brown fox jumps over the lazy dog!'
str1='ihxosmzdodcikmodcismzd'
#获取字符串
def getstr(s):
s=s.replace(' ','').lower()
temp=''
for i in s:
if 97<=ord(i)<=122 :
temp+=i
return temp
#获取坐标内容
def getxy(li,xy):
str3=''
for i in xy:
str3+=li2[i[1]-1][i[0]-1][0]
return str3
#获取元素坐标
def findxy(li2,k):
print li2
for y in li2:
for ii in y:
if k in ii:
res=[y.index(ii)+1,li2.index(y)+1]
print res
return res
#删除ij
def rmstr(s):
t=list(s)
if t.index('i')> t.index('j'):
t.remove('i')
else:
t.remove('j')
tstr=''.join(t)
return tstr

templist=[]
temp=getstr(key)
for i in temp:
if i  not in templist:
templist.append(i)
tempkey=rmstr(''.join(templist))

templist=[]
flag=''
li2=[]

for i in range(0,len(tempkey),5):
li2.append(list(tempkey[i:i+5]))
#关于ij问题
for i in li2:
for ii in i:
if ii=='i'or ii=='j':
if ii=='i': li2[li2.index(i)][i.index(ii)]='ij'
if ii=='j': li2[li2.index(i)][i.index(ii)]='ji'
break

for n in range(0,len(str1),2):
tempxy=[]
for s in str1[n:n+2]:
tempxy.append(findxy(li2,s))


# 同一行
if tempxy[0][1]==tempxy[1][1] :
tempxy[1][0]=tempxy[1][0]-1
tempxy[0][0]=tempxy[0][0]-1
a=[tempxy[0],tempxy[1]]
#同一列
elif tempxy[0][0]==tempxy[1][0]:
tempxy[1][1]=tempxy[1][1]-1
tempxy[0][1]=tempxy[0][1]-1
a=[tempxy[0],tempxy[1]]
#不是同一行也不是同一列
else:
a=[[tempxy[1][0],tempxy[0][1]],[tempxy[0][0],tempxy[1][1]]]
print a
flag+=getxy(li2,a)

print flag

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Writeup请点击这里查看索引

查看所有Flag需要付费,需要获取所有Flag的童鞋请访问这里成为付费用户,可以自助把自己的注册邮箱加入网站白名单,即可免回复看到本站所有Flag

Flag大全地址:所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜,如果喜欢我的博客,愿意捐赠的,可以扫描下面的二维码

微信二维码:
支付宝二维码: