buu 达芬奇 && ROT

一.达芬奇
百度了下电影简介,发现了斐波那契数列,同时发现密文是由斐波那契数列移动而来的,有点像base64变种

1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309

1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711

写个脚本,移位就好了,注意就是最后的结果会出现a,因为有两个1,手动移回去就好了,index是从前往后找到,会覆盖。

f="1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309"
d="1 233 3 2584 1346269 144 5 196418 21 1597 610 377 10946 89 514229 987 8 55 6765 2178309 121393 317811 46368 4181 1 832040 2 28657 75025 34 13 17711"
a="36968853882116725547342176952286"
b="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
b=list(b)
nf=f.split(" ")
nd=d.split(" ")
for i in range(len(nf)):
    b[nf.index(nd[i])]=a[i]
for j in range(len(b)):
    print(b[j],end="")

二.ROT 也是一种古典密码,左边移某位,或者右边移某位,凯撒算是ROT的一种。
写个脚本跑一下。

a="83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112"
b=a.split(" ")
m="38e4c352809e150186920aac37190cbc"
flag=""
for j in range(0,26):
    flag=""
    for i in range(len(b)):
        flag+=chr(int(b[i])-j)
    print(flag)

在这里插入图片描述
发现有四个字符,未知的,并且给了md5,这值得深思了,是不是在暗示这就是flag经过md5加密后的结果
所以爆破下试试

import hashlib
a="83 89 78 84 45 86 96 45 115 121 110 116 136 132 132 132 108 128 117 118 134 110 123 111 110 127 108 112 124 122 108 118 128 108 131 114 127 134 108 116 124 124 113 108 76 76 76 76 138 23 90 81 66 71 64 69 114 65 112 64 66 63 69 61 70 114 62 66 61 62 69 67 70 63 61 110 110 112 64 68 62 70 61 112 111 112"
b=a.split(" ")
m="38e4c352809e150186920aac37190cbc"
# flag=""
# for j in range(0,26):
#     flag=""
#     for i in range(len(b)):
#         flag+=chr(int(b[i])-j)
#     print(flag)
flag="flag{www_shiyanbar_com_is_very_good_"

for x in range(21,127):
    for y in range(21,127):
        for z in range(21,127):
            for q in range(21,127):
                w=hashlib.md5(str(flag + chr(x) + chr(y) + chr(z) + chr(q) + "}").encode("utf-8"))
                w0=w.hexdigest()
                print(w0)
                if(w0==m):
                    print(flag+chr(x)+chr(y)+chr(z)+chr(q)+"}")
                    break

跑了贼久。flag{www_shiyanbar_com_is_very_good_@8Mu}

posted @ 2020-04-06 11:27  YenKoc  阅读(369)  评论(0编辑  收藏  举报