zoukankan      html  css  js  c++  java
  • Monyer's Game 6~10关过关方法

    Monyer's Game开通到现在,已经有50多人通关了。其中绝大部分人,不管是自己独立完成也好,参考别人也罢,都是自己一步一步过去的。像陆羽兄弟甚至已经为游戏做好了整个通关的教程,在此Monyer对他的热心表示感谢。

    但是毕竟通关时只需要一种方法,但通关的思路却有无数种,而我更希望想让大家把该学到的东西学到。所以继续上次的讲解《Monyer's Game 0~5关过关方法》,我们来看一下6~10关的过关方法。而有不同通关思路的朋友,请一定不要吝惜,把思路共享给大家,这样我们都会进步,谢谢!

    6-7关

    进入第六关后,显示出来的是一张google搜索的图片,图片中的关键词即是本关的通关密码,但已经被黑色涂掉了。所以这关的本意即是通过未涂掉的文字去在google中搜索关键词本身,即google hack。

    有些人说即使不通过google搜索亦能猜出来密码是什么,这里Monyer非常佩服其眼力!但我们这里选择按部就班地去寻找蛛丝马迹。

    google列出的搜索结果有三个,第三个是维基百科的结果,并且只能看见一部分(由于截图的撕边效果),这个撕边效果是故意做的——原因就是搜索百科上的内容,是最容易还原关键字的,其中因由不用说吧,呵呵。

    所以这里我们直接瞄准百科上的关键字,Monyer攫取的关键字有“published in 1944、magazine”,我们直接提取到google里去搜索一下,密码关键词立即出现:

    对比game中的图片你可以看到,没有任何怀疑,密码就是seventeen。有人说是因为十七大,呵呵,或许。因为当时确实到这里头脑中出现的单词就是这个。但有些人说,这些密码大都具有一定的可猜性,这点Monyer表示赞同。

    7-8关

    来到第七关,提示有三个:

    提示1:这关需要简单的社会工程学,请联想本关特点进入下一关。

    提示2:不要被你的所见、经验及习惯蒙蔽了你的双眼,看不到的正是你想要的。

    提示3:与社会工程学相仿的是暴力破解,所以Monyer给你MD5:5e023995fb3f5e840ee684784f8f0799(小于10的数字+字母)

    提示给的再清楚不过——你得“猜”,并且你有可能“看不到”。

    至于提示3仅仅是给某些想象力没有发挥出来或者是被“看不到”所迷惑的人一个确定密码的机会。可是另我异常兴奋的是——这个MD5居然被很多人爆破出来了,佩服!

    “猜”这种东西,我们无法给出一个准确的理解,但无论如何,当我看到本关的唯一特点——seventeen7.asp,我都会毫不犹豫地去猜下一关密码为eighteen8的。看了看陆羽兄弟也是这样猜出的,因为再没有别的特点了。

    所以当你提交密码后出现了“找不到网页”的提示错误时,“看不到的正是你想要的”。并且为了防止大家迷糊,我特意将第八关的title很醒目地放在那里。

    8-9关

    依旧查看源文件,直拖到底,你将看到第九关的提示:10000以内所有质数和.asp。

    所以这关你甭想使巧劲过去,只能老老实实地编码吧!

    陆羽兄用的是JS:(由于陆羽兄仅仅是做POC,所以代码没有规格化。这里Monyer对源代码进行适当更改,对于编程初学者来说,编程的格式甚至比编程本身更重要。

    <script>
    b=0;
    for(i=1;i<10000;i=i+1){
        pd=false;
        if(i==2) pd=true;
        else{
            for(j=2;j<i;j=j+1){
                if(i%j==0){
                    pd=false;
                    break;
                }else pd=true;
            }
        }
        if(pd) b=b+i;
    }
    document.write(b+".asp");
    </script>

    如果你的CPU够强劲,在浏览器崩溃之前,你会看到运算结果:5736396.asp

    当然你也可以编出更优化的代码来(红粟):

    <script>
    var sum=2;
    for(var x=3;x<10000;x++){
    flag=true;
    for(var temp=2;temp<=Math.sqrt(x);temp++)
    if (x%temp==0){flag=false;break;}
    if(flag) sum+=x;
    }
    alert(sum);
    </script>

    由于编写这关时正好开着eclipse,所以索性就用java编写的函数,但和用C编写几乎没有区别,事实上这么简单的算法,大虾们用十种八种编程语言编出来也没丝毫问题。

    class Test{
    public static void main(String[] args){
       int a = 10000;
       int[] b = new int[a/2];
       int bp=0;
       for(int i=2;i<=a;i++){
        for(int j=2;j<=i;j++){
         if(i%j==0 && j!=i) 
          break;
         if(j==i){
          b[bp]=j;
          bp++;
         }
        }
       }
       bp=0;
       for(int i=0;i<b.length;i++){
        if(b[i]!=0) bp+=b[i];
       }
       System.out.println(bp);
    }
    }

    结果会在毫秒级显示出来,估计C会更快(horseluke的代码)。但如果你仔细看代码,你也会发现这个算法同样不够好,甚至很差。你可以开发出更快的算法来,譬如i无须等于2的倍数,j取值b[i]中已存在元素,j小于i的平方根即可等等,这里不深入研究了。

    9-10关

    进入第九关,居然又是一张图片,美女哦!有些人问我:已经把RF放大十多倍了,还是没看到密码!

    :-)!无语!但经常浏览我博客的好友会发现这关过起来异常简单。

    我们先假设这关是图片与RAR的COPY吧,下载图片后winrar打开发现数据错误;那么再假设是图片与TXT的COPY吧,用NOTEPAD打开,直拖到底,即可看到密码。

    所以到现在你几乎没费什么力气,无须什么特殊的工具就直接来到了第十关。

    在自己明白原理的情况下直冲十关,是不是有些莫名的兴奋呢?

    如果来到这里,不妨在没有提示的情况下通过剩余的关卡,虽然涉及的知识点很多,但都是各个知识点中的初级。100度一下你就知道,如果还不知道,就360度一下,哈哈!

    Monyer!

  • 相关阅读:
    BZOJ 1001: [BeiJing2006]狼抓兔子
    BZOJ 1031: [JSOI2007]字符加密Cipher
    BZOJ 1083: [SCOI2005]繁忙的都市
    BZOJ 1034: [ZJOI2008]泡泡堂BNB
    BZOJ 1040: [ZJOI2008]骑士
    BZOJ 1026: [SCOI2009]windy数
    BZOJ 1022: [SHOI2008]小约翰的游戏John
    BZOJ 1018: [SHOI2008]堵塞的交通traffic
    BZOJ: 2819 Nim
    bzoj 3144
  • 原文地址:https://www.cnblogs.com/daban/p/3778332.html
Copyright © 2011-2022 走看看