吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2115|回复: 23
收起左侧

[Web逆向] 【js逆向】爱xx视频逆向分析

  [复制链接]
hj170520 发表于 2025-5-11 05:04
本帖最后由 hj170520 于 2025-5-11 06:49 编辑

本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关.本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
目标网址aHR0cHM6Ly93d3cueWZzcC50di9wbGF5L0U5VFIwSGFQQngw
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


重拾js逆向,请多指教!网站有点简单。f12,输入网址后回车,点击xhr查看数据包:

01.png


可以看到的是,视频输出ts在某一个.m3u8的文件内,并且没有任何的加密方式,也就是视频可以直接下载。那么怎么获得这个.m3u8呢?
定位到.m3u8文件也是在上一个文件中生成的

02.png


然后分析这个文件是怎么生成的,可以看到的是传入了vv和pub两个参数。全局搜索之后可以发现,vv和pub都是同时写入一个参数e.

03.png

直接定位到位置,然后打上断点,可以看到vv是通过md5加密再转字符串;pub就是publicKey。后续我们知道PrivateKey和
publicKey都是在网页打开之初就自动生成的。


04.png

到了这一步我们就把该代码抠出来

[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
function uriSignature(e, n=!1, i=null) {
    if (e) {
        var s = (null != i ? i : this.get_query(e)) || ""
          , o = !0;
        if (-1 == s.indexOf("pub=") && -1 == s.indexOf("vv="))
            return s || (o = !1),
            s = s.toLowerCase(),
            s = t.publicKey + "&" + s + "&" + this.getPrivateKey(),
            n ? (e = e.substring(1)) + (o ? "&" : "") + "vv=" + m.Md5.hashStr(s) + "&pub=" + t.publicKey : e + (o ? "&" : "?") + "vv=" + m.Md5.hashStr(s) + "&pub=" + t.publicKey
    }
    return e
}

进一步地,我们在Node.js里面补充我们需要的元素,缺啥补啥。m.Md5.hashStr函数可以直接调包使用,用函数hashStr() 替代。

[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
const crypto = require('crypto');
 
function hashStr(t) {
  return crypto.createHash('md5').update(t, 'utf8').digest('hex');
}
 
 
function getPrivateKey() {
    return t.privateKey[t.publicKeyInedx % t.privateKey.length]
}
 
function get_query(t) {
    var e = "";
    if (t.indexOf("?") > -1) {
        var n = t.substring(t.indexOf("?") + 1).split("&");
        if (n.length > 0)
            for (var i = 0; i < n.length; i++) {
                n[i] = n[i].split("="),
                e += n[i][0];
                for (var s = 1; s < n[i].length; ++s)
                    e += "=" + decodeURIComponent(n[i][s]).split("+").join(" ");
                e += "&"
            }
    }
    return "" != e && (e = e.substring(0, e.length - 1)),
    e
}
 
 
function uriSignature(e, n=!1, i=null) {
    if (e) {
        var s = (null != i ? i : get_query(e)) || ""
          , o = !0;
        if (-1 == s.indexOf("pub=") && -1 == s.indexOf("vv="))
            return s || (o = !1),
            s = s.toLowerCase(),
            s = t.publicKey + "&" + s + "&" + getPrivateKey(),
            n ? (e = e.substring(1)) + (o ? "&" : "") + "vv=" + hashStr(s) + "&pub=" + t.publicKey : e + (o ? "&" : "?") + "vv=" + hashStr(s) + "&pub=" + t.publicKey
    }
    return e
}
 
e  = ".../masterplaylist/GkNIbX1AnrUvCN6DNfsNU1xyqVtGzCEk1"
 
t = {
    publicKey : 'CJSqDZamEJ4uC2upDJTVJaylc9kS5naPcHSOcPgN6Xglc36ocZ8n6R4Q69WO6XaOCR2o61YpCp8R6Pkoc3CScfmlcJ8QcncSinoOiHWncPmQ61WSchAo6ZCp6fWQcZ4RCPM',
    privateKey : ["SqDZJSqDZamEJ4uC2upD"],
    publicKeyInedx: 0
}
 
console.log(uriSignature(e, n=!1, i=null))



后续的工作省略了,例如全局搜索publicKey或者privateKey,这两个数值可以在视频页面文本中获得。
每个视频网页对应的e的数值不同,但可以通过进一步地分析获得,但“加密方式”是一样的,都需要获得对应的vv和pub数值,聪明的你一定可以发现怎么进一步获取数值e。


以后还得多多跟前辈们学习。

免费评分

参与人数 13威望 +1 吾爱币 +32 热心值 +11 收起 理由
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Issacclark1 + 1 谢谢@Thanks!
wdj500 + 1 + 1 我很赞同!
kuku20009 + 1 + 1 我很赞同!
HUAJIEN + 1 + 1 谢谢@Thanks!
fhlfxtd + 1 + 1 我很赞同!
can1 + 1 + 1 谢谢@Thanks!
Goldeng1ow + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
DRZH + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
liuxuming3303 + 1 + 1 谢谢@Thanks!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ZeLin99 + 1 热心回复!
beihai1314 + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| hj170520 发表于 2025-5-14 13:58
asi7 发表于 2025-5-14 09:10
js逆向需要先学爬虫吗

个人经验,最好是先学python爬虫。
Hmily 发表于 2025-5-11 06:42
 楼主| hj170520 发表于 2025-5-11 06:50
Hmily 发表于 2025-5-11 06:42
图片插入方法错了,看这个尽快修改一下,不然会丢失。https://www.52pojie.cn/misc.php?mod=faq&action=faq ...

已更新!
daoye9988 发表于 2025-5-11 07:38
深入了解学习
dfy167 发表于 2025-5-11 09:26
不错不错
yuppie007 发表于 2025-5-11 10:22
学习了!
takej 发表于 2025-5-11 10:27
这就是逆向吗?之前还以为是通过写代码破解网站,原来从网站上面去寻找漏洞。
greendays 发表于 2025-5-11 11:35
看标题以为是iqy
wsck63304521 发表于 2025-5-11 12:11
之前还以为是通过写代码破解网站
42328669425 发表于 2025-5-11 14:20
网站打不开了吗
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-5-25 21:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表