最近一款小程序可谓是风靡朋友圈,它的功能很简单,就是测试一下左右脑的发育年龄,由于其操作简单,结果明了,对比性强,勾起了很多人的好奇心,都要试一试,晒一晒,以满足大家强烈又空虚的交际需求,于是朋友圈各种刷屏,华丽的、搞笑的、脑残的...
1// 被挑衅
本人对这些东西基本无感(任你狂风暴雨的刷),但是直到朋友圈不断有人分享了下图,
并配以文字“不过是一个随机数,搞得大家各种high,各种晒......哭笑不得”(基本都是这个意思)
仔细看看代码,这让老夫不禁吐槽,这代码没毛病啊!,人家只不过有一行生成随机数的代码,但这个随机数并没有直接影响结果,我们没有充分证据,证明结果就是随机生成的啊!!!(图中还有模有样的标上哪一行.....)
不知道是哪个假程序员发了这个状态,然后就不断有人跟着瞎起哄,是秀智商,秀优越感,还是真的左右脑没发育好....
就好像,路上看到一个美女,由于多看了两眼,就被抓起来认定为“强奸”,这岂能忍!
2// 被调戏
这赤裸裸的挑衅,孰不可忍啊,于是自己也玩了一把。。。
结果如下:
“左脑25,右脑27”,这是多么完美的数据,多么准确的描述,怎么就那么多人说不准呢?!!
我多么希望他是准确的啊.....但是,我又测试了一次(同样的答案),他给我的结果就是这样的了....
“左脑30,右脑49”,这,我吃柠檬,同样的数据,偏差这么大的结果,逗我呢?!
接着,又测试,又不同,又测试,又不同......
非常悲痛的得出一个结论:
结果随机,不准,非常不准!
3// 探究
作为一个头发日渐稀少的程序猿,居然被这么调戏,忍不了,要好好跟他玩一下了...
我就是要看一下,你到底能给出多少种结果,有多少更荒唐的数据!
由于每种结果,都是一副图片展示的,结果集绝对有限,不然你要累死作图的吗?!!! 当然,也可以自动的生成图片,不过我猜这个小程序没达到这种水平(也不至于费那劲)。
解密之路正式开始:
@1
首先得找到一个破解的突破口,微信这边的校验太强,不好测试;但是像这种小测试游戏,网上应该都有,百度搜啊搜,终于还找到了,题目,结果,界面,都是一模一样。
网站如下:http://cn.qinpiam.cn/f/276。
OK,关键的第一步完成!
@2
使用浏览器访问网址,查看源码和资源,看能不能找到关键的JS提交数据的地方。
哎我的妈,几十个js文件,看的眼花缭乱,也没找到有用信息,要不就是被加密,要不就是无关紧要信息。
无奈,这个简洁的道路走不通。
@3
那只有亲自做一遍题目,提交结果。通过浏览器查看这个过程中提交的报文和接受的报文内容。
通过观察发现,当做完最后一道题时,会通过form表单自动提交答案,然后页面跳转。由于整个过程是连贯的,我们通过浏览器能看到的是新页面的内容,无法看到form表单的post请求信息。(工具有限啊,只有一个chrome浏览器)
继续想办法....似乎卡住了...(起身走走,去个WC,思路能开阔些...)
有了,当我们打开做题的页面时,我把网络断开,当做完最后一道题,自动进行post数据提交时,由于没有网络,就没法完成,这时候我们就能通过浏览器,看到post请求的信息了,哈哈哈!
截图如下:
@4
模拟信息提交。
有了数据,有了服务器地址,我们就可以自己写一个form表单,填充数据,来模拟提交。
点击提交按钮,见证奇迹的时刻到了:
我们得到了服务器返回的数据:
{"user_id": "anonymous:ae3cfef1-73de-4cf5-8123-e65832e9cfc8","fr_token":"KbtzHj3aicgP55","hashed_ids":"MRYWb4z4sB2weZ1m","result_wait": 3,"answer_id": 3123,"user_upload_img_url": ""}
看到了一个关键字:answer_id=3123。这个应该就是本次测试的结果。
再重复提交几次,分别得到如下结果:
{"user_id": "anonymous:ae3cfef1-73de-4cf5-8123-e65832e9cfc8", "hashed_ids": "P1mBdJNlcq9Wd0J6", "fr_token": "Qo8HVqbwhZ8bDBgF", "user_upload_img_url": "", "result_wait": 3, "answer_id": 3062}
{"user_id": "anonymous:ae3cfef1-73de-4cf5-8123-e65832e9cfc8", "hashed_ids": "P3RBe3yOupgybLJr", "fr_token": "pgldNbqLm9nJ7rD", "user_upload_img_url": "", "result_wait": 3, "answer_id": 3122}
{"user_id": "anonymous:ae3cfef1-73de-4cf5-8123-e65832e9cfc8", "hashed_ids": "P1mBdJNlcq9Wd0J6", "fr_token": "frmK02UkSVwYqeGQ", "user_upload_img_url": "", "result_wait": 3, "answer_id": 3062}
果然,结果就是随机的!!!
@5
分析结果
这个结果数据有什么用呢??
{
"user_id": "anonymous:ae3cfef1-73de-4cf5-8123-e65832e9cfc8",
"fr_token": "KbtzHj3aicgP55",
"hashed_ids": "MRYWb4z4sB2weZ1m",
"result_wait": 3,
"answer_id": 3123,
"user_upload_img_url": ""
},
带着这样的疑问,我又做了一遍题,看看结果页面的地址,和这个数据有什么关系。
看到浏览器结果页面的地址如下:
http://cn.qinpiam.cn/f/VyBXdLvnTRByaJZY/r/CbiDtjusjNV68rM7
发现这两个字符串与结果数据中的fr_token和hashed_ids对应的字符串长的好像,
于是尝试着替换一下,得到地址:
http://cn.qinpiam.cn/f/KbtzHj3aicgP55/r/MRYWb4z4sB2weZ1m
访问结果:
好像不行。
再交替替换一下:
http://cn.qinpiam.cn/f/MRYWb4z4sB2weZ1m/r/KbtzHj3aicgP55
居然真的可以了,功夫不负有心人啊!!
到这一步,我们已经可以模拟访问服务器,并分析返回结果,得到结果页面。
@6
那我就开始暴力访问吧,到底有多少种结果。
编写java代码,模拟post请求,循环500次,看究竟有多少种结果!!
代码片段:
打印日志:
从结果可以看出来,一共有10组答案(话说设计师太懒了吧,才10张图片啊......)
,其实我们的内心是崩溃的,这tm也太少了,开始的时候多试几次不就行了吗,需要花这功夫啊.......
answer_id分别为 [3066, 3120, 3064, 3121, 3068, 3070, 3062, 3123, 3124, 3122],
500次访问,他们出现的概率基本一样,可以得出,我们每种结果的出现概率是一样的(纯随机啊....)
分别访问对应的结果页面,我们可以得到这些大脑发育图(10张):
@7
至此,我们终于得到结论:
该测试确实是随机的,没有参考价值,仅供娱乐;结果无非就这10种,分别是:
编号 左脑 右脑
1 19 20
2 46 19
3 9 26
4 33 5
5 25 27
6 35 8
7 30 49
8 11 33
9 39 22
10 27 43
最后我有翻看了这几天朋友圈晒的测试结果,果不其然,都包含在这10个结果之中。
夜已深,该睡了,boboma于2017-10-27 01:39