中国裁判文书网接口解密

中国裁判文书网接口解密

前景提要

最近有个采集中国裁判文书网的需求,做下来觉得接口加密方式还挺有意思的,分享一下解密过程

具体实现

数据解密

首先找到页面上对应数据来源于哪个接口
在这里插入图片描述
很明显是某种加密方式,密钥和密文都在接口中了,直接开搜secret
在这里插入图片描述
找到了JS代码段,看样子是DES3加密,打个断点开始调试
在这里插入图片描述
看起来就是这个了,但是DES3是自己写的var,再step into看看
在这里插入图片描述
说实话看到这一坨代码,头挺痛的(所以把所有JS代码都拥挤在一起不空行也是高效的反爬手段啊),但没办法,要恰饭的嘛,最后梳理出来了关键代码。

CryptoJS.TripleDES.decrypt(b,CryptoJS.enc.Utf8.parse(c),{iv:CryptoJS.enc.Utf8.parse(a||DES3.iv()),mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.Pkcs7

如果不考虑前端兄弟故意命名错误来搞心态的话,应该是标准的DES3加密,CBC方法,填充方式为pkcs7,然后问题就只剩下了a||DES3.iv()了,调试的时候发现a是undefined,只剩下DES3.iv()了,点进去看看,发现是

iv:function(){return $.WebSite.formatDate(new Date(),"yyyyMMdd")}

一目了然,偏移量就是当前日期的yyyyMMdd格式,放到DES3在线解密工具上去看看
在这里插入图片描述

在这里插入图片描述
解密成功,没啥问题,直接开写解密代码就可以了,网上的各种语言的DES3解密代码都有很多,这里给出一个python的

import pyDes
import base64
def decrypt_py(data, secretkey,iv):
    des_obj = pyDes.triple_des(key=secretkey, IV=iv, padmode=pyDes.PAD_PKCS5,mode=pyDes.CBC)

    decodebs64data = base64.b64decode(data)

    s= des_obj.decrypt(decodebs64data).decode('utf-8')
    x=json.loads(s)
    # dict_s=eval(s)
    return x

传参解密

光解密了数据也不够,传参不知道就拿不到数据,总不能selenium+fiddler大法好吧(其实一般情况下确实可以,但是这个数据量太大,用selenium得采到天荒地老)
在这里插入图片描述
一共五个,Cookie太常见了,就不介绍了,docId应该是文章的唯一id,可以不用管,cfg看起来也是固定不变的,直接搜索chipher
在这里插入图片描述
找到了对应的函数,发现只和当前日期有关,可以放着了,再搜索RequestVerificationToken
在这里插入图片描述
发现完全是随机生成,也不用管了。
所以最终发现定时更新cookie和chiphertext,其他三个固定住就可以正常采集了。最后再解析一下或得到的请求就搞定了。

结语

研究的时候遇到了蛮多的问题的,一开始看到那一大堆js代码说实话就不想看,想着直接用python运行js代码直接绕过去,结果发现那段代码引用的jquery,搞了半天没搞出来,硬着头皮去逆向js了,后来发现也没那么难,就是一个简单的3DES而已。所以该逆向还是要逆向啊。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 23
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值