js逆向-某省水信息系统
时间:2022-08-06 18:00:03
目标网站
aHR0cDovL3ljLndzd2oubmV0L2Foc3h4L0xPTC8/cmVmZXI9dXBsJnRvPXB1YmxpY19wdWJsaWM=
打开网站观看,平平无奇
还是先抓包看一下吧,对于爬虫来说能够抓到包就已经成功了一大半了。随便点击左上角就可以抓到包了。
点击一次发送两个包,加密每个包的参数:
time: hourClass: 2.1LDEsMiwzLDYyMQ== name: 2.1ZVNlbHRjYVJuaWFXbnJuSW9m snsw: 2.1bnM= waterEncode: 2.1cnRldQ== random: 0.12693514085889746
name: 2.1ZVNlbHRjYVJuaWFNRHB0YSph btime: 2.1MDIyMjcwNDI4MTAw etime: 2.1MDIyMjcwNzI4MTAw rainlevel: 2.1OkEwMTIsLDUwNTEsMDA= isoline: 2.1Kk4= heatRange: 2.1MDU= stcdtype: 2.1LDEsMCwwLDAsMCow fresh: 2.1KjA= points: waterEncode: 2.1cnRldQ== random: 0.5063968668721999
可见两个包的请求参数都是加密的,有相同的部分,比如waterEncode
的值,random
大概率是随机数。至于其他部分,要慢慢分析。
观察返回结果
{ "respCode": "0", "respMsg": "请求成功", "data": "2.1ImRhdGEO*tETYiOiBbM*geExMiI6IiDU*AiZGF0YoMo*XSwNCiAck*JCJkYXRhBMo*dLA0KICyVm*FtdDQp9W*RaiZGF0YTLy*FyIjogW1gJ*Jew0KICAI*RHgImRhdG*zzh0sDQogI*OrCEiOiBbXVf*qMyI6IFt*DFgSwNCiAg*qdc*QlzWn*XI*RHLy*FVf*q*qdcO*tEgJ*J*OrCBMo**DFgyVm*oMo*M*geck*J*zzhiDU*W*Ra*QlzWn*X" }
{ "respCode": "0", "respMsg": "请求成功", "data": "2.1M4MDAwLDMxLjkyOTAwMCwxMC41LOmrmOWImOmbhiw1MDQyNDkwMCw0LOWQiOiCpee7j a1juaKgOacr W8gOWPkeWMuizpq5jliJjplYcs5ZCI6IKl5rC05paH5bGALOWQiOiCpeW4giwzNDAxNzIxMDAwMDAwMDAs54eV56a5Li4uLi4uLDJ8MTE2Ljg3MTcwMCwz 这里省略1万字=C41NzkxMTEsMzAuNzk3Mzk3LDE2LOmrmOahpSw2Mjk0NzMxNywyLOWuo W3nuWMuizmnajmn7PplYcs6Iqc5rmW5rC05paH5bGALOWuo WfjuW4giwzNDE4MDIxMDkyMDAyMjAs5Y2X6Ieq5omALi4uLi4uLDJ8MTE4LjE0MTYxMSwzMC4yNDE2MTEsNS41LOiAv Wfjiw2Mjk0OTAwNyw1LOm7hOWxseWMuizogL/ln47plYcs6buE5bGx5rC05paH5bGA*Axm*eqTo*swGMe*uc*FAD*J*yYOxh*xhw*mxk*q*jsym*rLf*hEB*bS*dyV*wzZ*VRN*Axm*LCD*eqT" }
两包返回json数据中,data不同的数据,而且是密文,需要解密才能获得明文数据。
逆向分析
通过抓包,我们明确了需求,首先要对URL
加密参数,然后解密返回结果,最后持续到当地完成今天的需求。
废话不多说,开始今天的分析。
不要惊慌,先用搜索法。这里不好用,放弃吧!
对于xhr请求,可以下一个xhr断点,也可以从Initiator找堆栈下断点。这两种方法效果相似。
再次单击左上角点击左上角按钮,断点断开:
接下来,找堆栈,一层一层地看,直到找到可疑的地方,然后断点,然后分析……最后,找到加密逻辑。
这个地方比较可疑,再看js80%以上的注释可能是在这个地方加密参数并验证下上断点:
重新要求,观察断点是否可以断开。
不出所料,可以看到rwData
它是一个对象。看起来和第一个请求参数很像,区别在于这里是明文。现在把它变成密文,用我们的python你可以通过要求得到结果。再观察发现。rwData
重新赋值给rwData
,前面还有一个函数。虽然我们不理解代码,但我们经常从事爬虫paramEncode不是参数加密,直接复制到console看看是什么情况。
果然,这个函数加密并重新赋予了明文参数rwData
对象,然后进行ajax请求,再解密就得到数据了。
第一步的分析结束了(第二个请求参数类似于第一个请求参数,可以自己分析,有问题可以私信给我),代码会放在文章的最后。
在第二步的分析开始时,密文必须通过防止爬虫和其他方式轻松获取网站信息。这些都是为了那些了解技术的人。普通人当然不想看到加密信息,事实上,网站也会在前端页面上显示解密结果。所以只要找到解密函数,呼叫就可以正常显示数据。
经过一番搜索(英语好很重要):
很容易找到解密函数:
已经成功拿到了。
总的来说,这种情况非常适合练手,可以多尝试。
代码
放在了我的gitee需要自取:省水信息
本文仅供学习使用,不得非法使用。如有侵权行为,请联系作者及时删除!