[原创]k r y p t o n 7 笔记
题目
首先利用前一关获取的口令登陆上去.
ssh krypton6@krypton.labs.overthewire.org
登录口令: RANDOM
找到要解密的文件并显示其内容:
krypton6@melinda:~$ cat /games/krypton/krypton6/krypton7
PNUKLYLWRQKGKBE
密文字符串是:PNUKLYLWRQKGKBE

下载encrypt6文件到本地临时目录
root@kali:~# scp krypton6@krypton.labs.overthewire.org:/games/krypton/krypton6/encrypt6 /tmp
你可以用64位的ida看看算法,可以大致看出来,但是里面的 ‘random’ numbers你必须动态调试才能看出来.这不是一篇科普文章,笔记而已.
,google不到的东西,度娘能找到,那以后老外也不能小瞧国人了.
直接给出解题代码,很丑陋请谅解:
lfsr=[8,4,2,9,12,6,11,5,10,13,14,15,7,3,1]
pp='aaaaaaaaaaaaaaa'
cc='EICTDGYIYZKTHNS'
def getKey(pp,cc):
t=list(pp)
pls=[]
for i in xrange(len(t)):
pls.append(ord(t[i])-0x41)
ss=''
for i in xrange(len(cc)):
key=32
while key <127:
tmp=key+lfsr[i%15]+pls[i]-0x41
while tmp>0x19:
tmp-=0x1a
if tmp==(ord(cc[i])-0x41):
ss+=chr(key)
break
key=key+1
return ss[0:10]
def enc(key,pp):
ss=''
pp=pp.upper()
for i in xrange(len(pp)):
tmp=ord(key[i%len(key)])+lfsr[i%15]+ord(pp[i])-0x41-0x41
while tmp>0x19:
tmp-=0x1a
ss+=chr(tmp+0x41)
return ss.upper()
def dec(key,cc):
ss=''
cc=cc.upper()
for i in xrange(len(cc)):
tmp=ord(cc[i])-0x41
p=''
while tmp<=0x19:
tmp+=0x1a
t=(tmp-ord(key[i%len(key)])-lfsr[i%15]+0x41)+0x41
if t>=ord('z'):
p=chr(t-0x1a)
else:
p=chr(t)
ss+=p
return ss.upper()
key=getKey(pp,cc)
print dec(key,'PNUKLYLWRQKGKBE')

