本文针对的是2022年6月6日时国税查验平台的js分析,其中版本号为V2.0.10_0220。主要分析内容为key9和flwq39以及fplx这3个参数的算法,其中key9分为获取验证码阶段和查验阶段,算法有所区别,flwq39同理。
教程开始:
一、官方网址
国家税务总局全国增值税发票查验平台
二、请求分析
国税查验平台请求共分为2个,第一个请求获取验证码,第二个请求为输入验证码后查验数据并返回发票详细信息。
第一步:安装证书
基础:谷歌浏览器
首先需要安装证书,建议选择自动安装,在某些教程中可能选择手动安装,以便于使用ast工具挂代理找内存数据,但是这里我们采用一种新的方法来解决js逆向问题,因此那种方便用那种。
文章图片
【js|逆向日记之发票查验平台网站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文件中,如图:

文章图片

文章图片
堆栈已经表明了,来自eab23.js这个文件里。

文章图片
一看。哦豁是ob加密的,可以使用解密工具(http://tool.yuanrenxue.com/decode_obfuscator),也可以硬刚。大多数喜欢硬刚的感觉,不用保存文件。
锁定到key9值的位置,
$[_0x55bc8e(-0x1d9, -0x246, -0x20d, -0x226, -0x22c)][_0x524887(-0x22f, -0x230, -0x20c, '6L!W', -0x24f)](_0x4c4952, _0x5699c9, _0x469bdb)
接下来就是逆向的一天。

文章图片
其他步骤都是相差无几的。
结束第一次写文章,拜拜各位。
推荐阅读
- python|记一次js逆向解析学习-02
- android逆向|第一次进行android逆向的过程记录
- python|python群发邮件
- 程序人生|程序员都想去国企(技术落后薪资低,躺平几年出来都找不到工作...)
- 前端|浏览器安全——Web页面安全&浏览器网络安全(HTTPS)&浏览器系统安全
- Vulnhub|vulnhub之darkhole_2
- go语言|Go mod 使用私有git仓库依赖包
- 调用华为游戏多媒体服务的创建引擎接口返回错误码1002,错误信息(the params is error)
- 面经|java基础(面向对象,异常,类,抽象类,继承类,构造方法,接口,string类,==和equals,修饰符final,static,重写和重载)