北京环球度假区包含七大主题景区、37处骑乘娱乐设施及地标景点、24场娱乐演出、80家餐饮及30家零售门店, 总面积超4平方千米,一期占地159.57公顷;二期占地165.83公顷,计划建设包含中国元素的主题公园,引入中国文化和孙悟空等IP;三期计划建设水上乐园,是亚洲的第三座,全球的第五座环球影城主题乐园,但是除了要排队,票也是很难买到的,除非上点技术力量和金钱力量!
这次逆向的基础是,已经反编译过了小程序的代码,如何反编译小程序代码,这里就不多说了,不会的自行百度或者联系本人。
下面开始分享逆向接口参数加密的过程,
以添加联系人的接口为例,接口是/v2/guest/save。
参数是id,name,card_type,id_card,guest_type 组成的json对象,其中id_card 是某种加密后的内容,也就是说是密文传输,存储估计也是这个密文,它应该不存储明文的身份证号。
关于Post 接口,它的请求头中是有md5摘要信息的,也是作为请求头验证的一部分,没有魔改的,所以问题不大,不用过多的花费力气。
难点就来到了id_card 的明文转密文上。
打开小程序反编译后的代码,全局搜索id_card
随便点进一个encrypt代码,找到encrypt入口。
接着去找到y方法。
把y方法抠出来,复制到IDE中,我们执行以下。y('aaa','aaaa',1),执行之后报方法c不存在,补充以下c方法。
进一步的发现,都是在一个webpack中。
直接全部复制出来,再次调用后,直接输出了结果
进一步的测试发现它不仅是id_card的加密解密方法,也是apiAppKey和apiAppSecret的加密解密方法。
下一步,就可以科学下单买票了。