zoukankan      html  css  js  c++  java
  • 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}

  • 相关阅读:
    js验证身份证号,超准确
    ORACLE 日期加减操作
    powerdesigner中将表的name在生成建表sql时生成注释
    使用Lucene-Spatial实现集成地理位置的全文检索
    MyEclipse + Maven开发Web工程的详细配置过程
    tomcat虚拟目录配置
    在jsp的js和css里面使用EL表达式取值|style里面用$取值
    JS禁用键盘浏览器退格键
    Am335x SD卡刷eMMC二
    Linux-UDP-Socket编程
  • 原文地址:https://www.cnblogs.com/YenKoc/p/12779891.html
Copyright © 2011-2022 走看看