光棍节程序员闯关秀--日记

    晚上本来想继续学习Entity Framework 5, 结果一哥们发来个链接:http://segmentfault.com/game/ 打开后就开始玩,本来以为很简单,结果折腾了半天才弄出来,这里简单记录一下。

第一关:看源码。

第二关:还是看源码。

第三关:看源码好像什么都没有,想着抓包分析一下。打开fiddler2,刷新了好几次页面后发现response头里面有一行包含了key。

光棍节程序员闯关秀--日记

第四关:这个蛋疼了,死活不知道改怎么办,因为对比了三个key确实好像没什么规律。最后总算想到了md5,搜了个网站解码发现上一个key是4,
那就简单了,将5用md5加密后作为key,pass。

第五关:看到了神奇的二维码,立马想到了解码,搜了个网站上传了下载的二维码图片来解码,发现还是不行。最后实在蛋疼就用记事本打开图片看了看,发现key竟然就在眼前。

第六关:这关很坑爹,想了好久也不知道是啥意思,把页面上的那个破编码搞了个死去活来也不行。最后只好google和百度了,没想到百度里面搜到了游戏开发者的博客,上面给出了key: http://t.qq.com/p/t/169307017338921

第七关:这关更加坑爹,想起上一次是搜出来的就拼命搜,结果什么搜索引擎都搜不着,结果直接复制上去就好了,你大爷啊。

第八关:想起了上次的复制,结果当然不行,然后继续看源码。看啊看,看啊看,发现这个表单应该提交一把。本来想用程序搞,最后想起了chrome可以直接改源码,然后很幸福的加了个submit按钮,点了不行。想了半天,只能乱改表单,把get改成post成功。

第九关:这一关一看就知道不写代码是肯定不行了。至于下划线不是0就是1,作为一个光棍,当然变成1了。将二进制文本复制到记事本,全局替换将下划线变成1.然后开始用C#写代码,将8位二进制变成byte后直接写成文件,结果无论是改成文本还是图片都不行,当然各种压缩格式也都解压不了。没办法,把二进制变成ASCII代码打印出来分析,看了半天发现原来是base64. 我勒个去,立马将base64转化成byte字节写入文件。这次改文本图片还是不行,用zip解压竟然过了。可是解压后改文本图片还是看不出是什么东西。想起了可能二次压缩,然后就继续用各种格式尝试解压,最后tar成功。下面的就没啥可说的了,看到了苍老师的图片,直接输入就行了。
下面是C#的字符转换代码:

    StringBuilder sb = new StringBuilder();

    foreach (string line in File.ReadAllLines("tt.txt"))

    {                

        string[] datas = line.Split(' ');

        byte[] bytes = new byte[datas.Length];

        for (int i = 0; i < datas.Length; ++i)

        {

            bytes[i] = Convert.ToByte(datas[i], 2);

        }

        string newLine = Encoding.ASCII.GetString(bytes);

        sb.Append(newLine);

    }



    using (FileStream writer = new FileStream("result.txt", FileMode.Create))

    {                

        byte[] result = Convert.FromBase64String(sb.ToString());

        writer.Write(result, 0, result.Length);

    }    

你可能感兴趣的:(程序员)