本文针对的是2022年6月6日时国税查验平台的js分析,其中版本号为V2.0.10_0220。主要分析内容为key9和flwq39以及fplx这3个参数的算法,其中key9分为获取验证码阶段和查验阶段,算法有所区别,flwq39同理。
教程开始:
一、官方网址
国家税务总局全国增值税发票查验平台
二、请求分析
国税查验平台请求共分为2个,第一个请求获取验证码,第二个请求为输入验证码后查验数据并返回发票详细信息。
第一步:安装证书
基础:谷歌浏览器
首先需要安装证书,建议选择自动安装,在某些教程中可能选择手动安装,以便于使用ast工具挂代理找内存数据,但是这里我们采用一种新的方法来解决js逆向问题,因此那种方便用那种。
第二步:抓包
基础:谷歌浏览器+开发者工具+js基础知识
我们使用开发者工具或按F12打开谷歌浏览器的开发者工具,请注意尽量在网页加载完成后打开开发者工具,界面如下:
官方很给力,直接debug了,至于如何去掉断点,可以参考百度上的其他教程,这里给出一个办法,上图中点击数据1所处位置,使其颜色为蓝色,点击2或者点击上方的debug恢复按钮。此时,我们成功绕过了debug,但是特别注意尽量关闭其他无用软件或者网页,因为在后面的操作中,会感到特别卡顿。
我们在发票代码输入框和发票号码中输入合法的数据,并在开发者工具模块,观察所发送的请求包:
https://fpcy.chongqing.chinatax.gov.cn:80/NWebQuery/yzmQuery?callback=jQuery1102006738545513022554_1655365583879&fpdm=xxxxxxx&fphm=xxxxxx&r=0.5316221831368957&v=2.0.10_020&nowtime=1655365667703&publickey=1655365667703&key9=0a22611cc3f7d2aea89e940737e29df8&_=1655365583883&flwq39=HKq74BneUph1ZnRZcHqCyeCyyK49u0BSj9FiczQDiE0tmVz4ygZh7xEXwkzJb3%2BU1f5Lg7UUTz%2FfU%2Bl%2FW9xGsMa7PylYOvP17AFqfSGXJ5FrZLVjh4x2nvv1asf1abZQZc6esBdc2PFZj4Eug%2FiuO5pF8%2B0E6zQ5P7VtVZHlHdQ%3D
在这个请求中(fpdm和fphm被我屏蔽),分为url的网址前缀部分和尾部参数,其中尾部参数如下:
callback=固定值
fpdm=发票代码
fphm=发票号码
r=随机数
V=版本号
nowtime=当前时间减去1分钟
publickey=当前时间减去1分钟
key9=加密参数
_=可为固定值
flwq39=加密参数
如果你观察过会发现,不同地区的发票,请求的地址不同,如这里是anhui。该请求的前缀部分在一个js文件中,如图:
,也可以硬刚。大多数喜欢硬刚的感觉,不用保存文件。
锁定到key9值的位置,
$[_0x55bc8e(-0x1d9, -0x246, -0x20d, -0x226, -0x22c)][_0x524887(-0x22f, -0x230, -0x20c, '6L!W', -0x24f)](_0x4c4952, _0x5699c9, _0x469bdb)