【逆向系列】27-某维语影视网站

admin 2024年1月22日14:09:45评论5 views字数 3212阅读10分42秒阅读模式

免责声明

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请在微信公众号【小白逆向】联系作者立即删除!

前言

此次对某维语网站的电影信息进行逆向分析。其中将js算法改写为python类型的算法。

逆向目标-某维语影视网站

逆向首页:aHR0cHM6Ly9tcC5maWxpbXFpLmNuL3BhZ2VzL3Jlc291cmNlcy9yZXNvdXJjZXM=

需要wx小程序登录(可扫码登录)

参数逆向

  1. 打开调试页面,观察抓包记录

【逆向系列】27-某维语影视网站

2.打开请求响应(这就是我们要获取的目标数据)

【逆向系列】27-某维语影视网站

3.观察请求头(token,request-token)是动态更新的 每次更新页面会自动更新还,还有/api/resources?&t=是时间戳也是动态更新的 (这些就是我们逆向的目标)

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

js代码分析

.定位一下接口调用位置 填写地址刷新页面

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

往上看一下就知道调用的函数整体

【逆向系列】27-某维语影视网站

我们看看这函数内容是什么,比如 控制台输入 e 打印结果( 也就是请求内容)

【逆向系列】27-某维语影视网站

我们要分析的内容就这里面 比如 token  ,request-token,和时间戳

如下图

【逆向系列】27-某维语影视网站

继续我们看看其他调用的函数

【逆向系列】27-某维语影视网站

下面是函数整体 看一下 他的返回值  return是 一个 三目表达式 大概意思是 (判断变量f是否是一个函数,如果是函数,则调用e函数并将h作为参数传递给它;如果不是函数,则调用e函数并将f和h作为参数传递给它

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

下面代码可以看出函数形参是可以不指定的 

【逆向系列】27-某维语影视网站

打印看看arguments的内容

【逆向系列】27-某维语影视网站

接着我们看看其他函数,一看就知道这函数里面字符都被混淆了

【逆向系列】27-某维语影视网站

我们随便复制一个被混淆的字符控制台打印一下 果然是请求接口有关

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

如下图这里是接口中的时间戳有关

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

打印n的内容是如下图 request-token有关

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

打印w内容如下图是token有关

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

现在基本上位置和函数变量名都找到了

E是时间戳

Q=M是地址

【逆向系列】27-某维语影视网站

n是request-token

w是token

先看看request-token生成用的函数a

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

现在看看 w是 生成token调用的函数 C,函数n,地址Q和时间戳E

目标明确了 现在 能找出 w调用所有的函数就行

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

如下图是调用C函数的函数内容

【逆向系列】27-某维语影视网站

在这里打印出n的值都是我们需要的数据

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

在这e函数返回值调用的是r函数

【逆向系列】27-某维语影视网站

函数中的A打印一下 看来是个request-token

【逆向系列】27-某维语影视网站

被调用的函数t在上面如下图 在这个函数调用的函数是层次的 C,o,a 这些

【逆向系列】27-某维语影视网站

【逆向系列】27-某维语影视网站

如下图是C函数

【逆向系列】27-某维语影视网站

再网上看一下就有o函数 

【逆向系列】27-某维语影视网站

函数a是生成token有关的函数

【逆向系列】27-某维语影视网站

这些函数都在函数一个里面。

现在所有的函数都找到了可以创建个js文件把用到的函数放在里面

python 用 execjs 库运行js  生成 token,request-token,

时间戳可以直接用python time库来解决

time_stamp = int(time.time() * 1000)

2.由于调用的j函数太多 这里直接给js代码(地址aHR0cHM6Ly9tcC5maWxpbXFpLmNuLw==)

var I = function A(B, g{    ...    return void 0 === i ? (E = A["aXFxPe"](E), A["WgNtEM"][B] = E) : E = i, E}function get_request_token(A) {    ...    return n}//////////////////////////tokenfunction token(A, B, g) {    ...    return o(A, B)}function Q_default(A, B, g) {    // return B ? g ? t(B, A) : function (A, B) {    //     return p(t(A, B))    // }(B, A) : g ? F(A) : function (A) {    //     return p(F(A))    // }(A)    return p(F(A))}function white(time_stamp) {    var request_token = get_request_token(99);    var sign = token(request_token, "https://mp.脱敏处理.cn/api", time_stamp);    return [request_token, sign]}

js算法改写为python代码

基于js改写的算法  地址(L21wLmZpbGltcWkuY24=)

# **************************************# --*-- coding: utf-8 --*--# @Time    : 2024-01-20# @Author  : white# @FileName: a.py# @Software: PyCharm# **************************************import execjsimport timeimport requestswith open("签名.js", encoding="utf-8") as f:    js_file = f.read()sign = execjs.compile(js_file)time_stamp = int(time.time() * 1000)sign_data = sign.call("white", str(time_stamp))print(sign_data, time_stamp)url = f"https://脱敏处理?&t={time_stamp}"headers = {    "Host"              : "地址",    "Connection"        : "keep-alive",    "Content-Length"    : "60",    "Pragma"            : "no-cache",    "Cache-Control"     : "no-cache",    "sec-ch-ua"         : ""Google Chrome";v="107", "Chromium";v="107", "Not=A?Brand";v="24"",    "sec-ch-ua-mobile"  : "?0",    "User-Agent"        : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36",    "content-type"      : "application/x-www-form-urlencoded",    "openid"            : "undefined",    "token"             : sign_data[1],    "request-token"     : sign_data[0],    "sec-ch-ua-platform": ""Windows"",    "Accept"            : "*/*",    "Origin"            : "https://地址",    "Sec-Fetch-Site"    : "same-origin",    "Sec-Fetch-Mode"    : "cors",    "Sec-Fetch-Dest"    : "empty",    "Accept-Encoding"   : "gzip, deflate, br",    "Accept-Language"   : "zh-CN,zh;q=0.9",    # "Cookie"            : "填写自己的"}body = {    "user_id": "填写自己的",    "unionid""填写自己的",    "key"    : "",    "page"   : "3"}res = requests.post(url=url, headers=headers, data=body)print(res.json())

成功示例图:(成功拿到数据)

【逆向系列】27-某维语影视网站

相关代码已开源:
https://github.com/puboop/reverse/

原文始发于微信公众号(律图拟项):【逆向系列】27-某维语影视网站

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月22日14:09:45
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【逆向系列】27-某维语影视网站http://cn-sec.com/archives/2417537.html

发表评论

匿名网友 填写信息