欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]k r y p t o n 7 笔记

[原创]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')
 
   
   

上传的附件 link.png
ls.png
solution.png
krypton7.png

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功