【瑞数3代】药监评审中心逆向分析 | 后缀MmEwMD参数
1.目标
目标网站:aHR0cHM6Ly93d3cuY2RlLm9yZy5jbi9tYWluL25ld3MvbGlzdHBhZ2UvNTQ1Y2Y4NTVhNTA1NzQ2OTliNDZiMjZiY2IxNjVmMzI=
import requestscookies = {'FSSBBIl1UgzbN7N80S': '8sYeMWaC_IHoNl8Ckfx2y9MLiueMCkPr2V3MIoZkrMPUfzMMaXKzAoxpNPvyw4lt','Path': '/','FSSBBIl1UgzbN7N80T': '3js3ygV.St6BvO20CqJJvultwYwAmukdqIPpIgxLzMR6XftO8Uf1_XHz7gFtfZ3BqudXefnJK3q_RtHDmNYbM5OTMaSzOB9G5MtH1Bc2WHs4usnskV5NOGfHsvOwfKPS8R2QUM5WODmFdV8gu6IBXG90EMRy_hQ3HnQoSoGBYWu9DsttOG5S9l8Nf5CL.RzeaOfm7ga7FJtykCM3HdK68gqw.zL6zxBrkLAeRWPaxMeiFu2dYtaJ_wUUEjkYqo.5bfh_ooEdlmgyM5_QF8P60LrUVUJbl_Oc9WDcexuwAo_qm3q',
}headers = {'Accept': 'application/json, text/javascript, */*; q=0.01','Accept-Language': 'zh-CN,zh;q=0.9','Cache-Control': 'no-cache','Connection': 'keep-alive','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Origin': 'https://www.cde.org.cn','Pragma': 'no-cache','Referer': 'https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36','X-Requested-With': 'XMLHttpRequest','sec-ch-ua': '"Chromium";v="136", "Google Chrome";v="136", "Not.A/Brand";v="99"','sec-ch-ua-mobile': '?0','sec-ch-ua-platform': '"Windows"',# 'Cookie': 'FSSBBIl1UgzbN7N80S=8sYeMWaC_IHoNl8Ckfx2y9MLiueMCkPr2V3MIoZkrMPUfzMMaXKzAoxpNPvyw4lt; Path=/; FSSBBIl1UgzbN7N80T=3js3ygV.St6BvO20CqJJvultwYwAmukdqIPpIgxLzMR6XftO8Uf1_XHz7gFtfZ3BqudXefnJK3q_RtHDmNYbM5OTMaSzOB9G5MtH1Bc2WHs4usnskV5NOGfHsvOwfKPS8R2QUM5WODmFdV8gu6IBXG90EMRy_hQ3HnQoSoGBYWu9DsttOG5S9l8Nf5CL.RzeaOfm7ga7FJtykCM3HdK68gqw.zL6zxBrkLAeRWPaxMeiFu2dYtaJ_wUUEjkYqo.5bfh_ooEdlmgyM5_QF8P60LrUVUJbl_Oc9WDcexuwAo_qm3q',
}params = {'MmEwMD': '30VyrbstxVaiIePYi8t7Izk.2hFSezl8gr2avbixYm8KKdJcbxbucaEWVbw.RPIigzgHmdT7XDoMfVEve61oOG9VOVQUZd0kNadlppqaqwBSXsBuBw3ObE0lgDYyLDG0OdRoZT.9bUbEdhd9songV6XL_9pNli_1DIuG3lVP78knP2fIqPifkeWabjo.WJ3Zj3lyaE86hPYM0ICYhycRF9UAjUPrvwo0bQMevkGfjktatXp4g1A8yYiai.NjkT4pzHAqyfoBqiI.Jj8KPLdEM4FIucscxGD3UUbcsaR6qohf8galqgA0Hv3.VPSABnakeqDO7c2eHB3kjl_xxkoJeCKzcnaULXCd9pdLAp0FKRzEzqy',
}data = {'pageNum': '1','pageSize': '10','searchTitle': '','classId': '545cf855a50574699b46b26bcb165f32',
}
url = 'https://www.cde.org.cn/main/news/getList'response = requests.post(url, params=params, cookies=cookies, headers=headers, data=data)
- 目标POST请求:
https://www.cde.org.cn/main/news/getList
- 需要解决:
FSSBBIl1UgzbN7N80T
:瑞数3代cookieMmEwMD加密参数
2.逆向分析
2.1 两套js
https://www.cde.org.cn/4QbVtADbnLVIc/c.FxJzG50F.6152bb9.js?D9PVtGL=6152bb
https://www.cde.org.cn/4QbVtADbnLVIc/d.FxJzG50F.6152bb9.js?D9PVtGL=6152bb
唯一的区别就是变了一个字母,暂且叫它cts
和dts
,都是固定不变的,但是他们是有区别的,在于cts
可以生成cookie,dts
可以生成MmEwMD
参数
直接把两套js代码都下载下来,然后就可以直接导入使用
2.2 Cookie分析
第一次请求页面202
可以看到是用的cts
第一次GET
请求
https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32
返回202
状态码,返回content
和function
函数代码,返回两个cookie
FSSBBIl1UgzbN7N80T
和FSSBBIl1UgzbN7N80S
但是返回的这个FSSBBIl1UgzbN7N80T
没什么用
因为第二次请求携带FSSBBIl1UgzbN7N80T
是瑞数代码生成的,不是返回的这个
cts
和content
和function
函数三者配套使用可以生成FSSBBIl1UgzbN7N80T
content分析
字符串中使用了不合法的 Unicode
转义序列就会
报错"Uncaught SyntaxError: Invalid Unicode escape sequence"
还有HTML
实体编码(如 <
和 >
需要转成 <
和 >
)
第二次请求页面200
需要携带第一次请求返回FSSBBIl1UgzbN7N80S
和瑞数代码生成的FSSBBIl1UgzbN7N80T
第二次GET
请求
https://www.cde.org.cn/main/news/listpage/545cf855a50574699b46b26bcb165f32
返回200
状态码,然后又会返回一个新的content
和function
函数代码,并且是用的dts
dts
和content
和function
函数三者配套使用可以生成MmEwMD
2.3 MmEwMD参数
XHR
断点MmEwMD
可以看到是 XMLHttpRequest.open
方法初始化请求。它不会发送请求,只是设置请求的基本参数
瑞数正是重写了 XMLHttpRequest.open
方法,所以会生成MmEwMD
参数
进入open
方法内部
- 生成的
FSSBBIl1UgzbN7N80T
不对,请二次请求页面仍然会是202
- 生成的
MmEwMD
不对,就获取不到列表页的数据 - 正常情况下返回