文章目录
WIPO全球商标检索接口破解
背景
同事想要把WIPO的查询功能做到程序里,但是接口参数是加密过的,不知如何模拟封包。
过程
进搜索页,打开F12 我们搜索一下奔驰(benz),发现产生了一个POST请求https://www3.wipo.int/branddb/jsp/select.jsp
并携带了一个名为qz的base64加密串,且response里包含了查询结果。
那可以确定刚发送的查询参数benz应该就在这个字符串里。
-
尝试直接解码base64加密串,没有得到明文,说明内容是单独加密后再转base64编码的
-
全局搜索关键字qz定位到如下的脚本位置,发现
this.getCurrentStateString("base64", e)
复制到控制台执行一遍,发现产生的内容就是post请求携带的qz参数,说明参数是该处代码产生的。
-
继续往下找getCurrentStateString方法 发现是jQueryUi里的方法 说明真正的加密源头不在这里,这里只是取了一个预存储的值,继续找qz关键字发现以下可疑的代码
这行代码使用LZString去解码qz,我们在控制台也尝试一下
- (PS:至此我们反向去找LZString.encode加密相关代码也是可以的,但是那样要分析更多代码,不确定性更高,不如直接用decode得到封包内容更快速)
-
控制台执行
LZString.decompressFromBase64()
发现内容是一个json串,里面包含了我们前面搜索的关键字benz,但是json参数中有个关键字qi也是一串加密变量,经过反复尝试后发现该值可以写死不变动。
-
最后只需要多尝试几次搜索并解码对应的qz参数就能知道页面的封包规则了,核心的加解密处理类
LZString
可以在网上找到python版本/Java版本/或者直接用代码调用js来做加解密也是可以的。 -
我在网上找到一份Java版的LZString,并以此解码封包尝试直接调用搜索接口,结果OK.