吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 3415|回复: 34
收起左侧

[Web逆向] 某pp视频真实视频地址获取

[复制链接]
djmingge 发表于 2022-1-12 16:48
本帖最后由 djmingge 于 2022-1-13 14:15 编辑

抓包初次分析
  • 使用的工具是谷歌浏览器
  • F12打开开发者工具
  • 打开链接:http://v.pptv.com/show/XLafHYXrW5n8euI.html
  • 切换Network查看抓包
  • 搜索api,找到 http://oneplay.api.pptv.com

图1

图1


我们选择预览,发现里面的就是我们要的真实的视频相关信息

我们继续分析接口,发现传了三个重要参数 cipher, encryptParams,vvId
其余两个参数不重要。
下一步就是要来逆向它的算法了。

接着分析参数加密
发现了接口,我们在看是从哪个js文件发出的请求

图2

图2

很容易发现是http://static9.pplive.cn/corporate/player/v_20210524101320_d88b15/dist/player-major.js这个文件
转到Sources页面 我这里是来源页面,左侧网页文件里找到这个js文件

图3

图3

我们先右键这份文件保存到本地,好处理,在点这个{}格式化一下代码。把美化好的代码复制粘贴到本地这个js文件,保存

图4

图4

在采用的软件是charles抓包软件,目的是把文件映射到本地
具体怎么映射,可以百度,也可以不需要映射,直接在Sources页面分析

我们js文件里按ctrl+f搜索参数cipher或者encryptParams
有三处结果

图5

图5

发现这两个参数都是var g = c.a.get3desKeyRandom(n);算出的
我们在这里打一个断点,在刷新网页,
就会出现n的字符串,为
"type=mhpptv&appId=pptv.web.h5&appPlt=web&appVer=1.0.4&channel=sn.cultural&sdkVer=1.5.0&cid=9053276&allowFt=0,1,2,3&rf=0&ppi=302c37&o=0&ahl_ver=1&ahl_random=464f5c6e224a313c525c7a59424b413a&ahl_signa=b2d0cd91cbcae282fa30e53f0d86795722304eb13cb39ca862db96603a5a61bd&version=1&streamFormat=1&videoFormat=m3u8"
既然拿到了加密的字符串,我们就先分析字串里的参数
我们重复刷新网页几次,发现同一个剧变化的参数只有ahl_random,ahl_signa
那么接下来,我们继续找这个两个参数的加密函数
我们往上滑,找到了参数的加密函数为e.get3rdKeyRandom()

图6

图6


鼠标放在o.type显示mhpptv

图7

图7

我分析它暂时是固定的mhpptv。
在鼠标放在get3rdKeyRandom,它指向了26873行的函数

图8

图8

我们直接进入,经过我的还原,能运行的js就应该为

[JavaScript] 纯文本查看 复制代码
e = "mhpptv";
function get3rdKeyRandom(e){
    var t = e
      , i = getRandomWithLen(16)
      , n = i;
    i += t + "-1V8oo0Or1f047NaiMTxK123LMFuINTNeI";
    var a = getSignatureWithKey(i);
    return {
        random_hex: encodeHex(n),
        signature_hex: a
    }
}


发现里面还有个getRandomWithLen(),getSignatureWithKey(),encodeHex()

图9

图9

图10

图10

图11

图11


进入,经测试还原为
[JavaScript] 纯文本查看 复制代码
e = 16;
function getRandomWithLen (e) {
    for (var t = "", i = 0; i < e; i++) {
        var n = 93 * Math.random() + 33 >> 0;
        t += String.fromCharCode(n)
    }
    return t
}
function getSignatureWithKey(e){
    for (var t = "", i = 0; i < e.length; i++){
        t += e.charCodeAt(i).toString(16);
    }
    i = CryptoJS.SHA256(CryptoJS.enc.Hex.parse(t));
    return CryptoJS.enc.Hex.stringify(i)
}
function encodeHex(e) {
    for (var t = "", i = e.length, n = 0; n < i; ++n) {
        var a = e.charCodeAt(n);
        t += "0123456789abcdef"[a >> 4],
        t += "0123456789abcdef"[15 & a]
    }
    return t
}


图12

图12

图13

图13

图14

图14


这里用到了CryptoJS库。

到目前为止,两个参数的加密就已经处理完毕了。
接下来就是,处理参数cipher和encryptParams,写的有点多,后续会出下一篇,体谅一下。
cipherherciphercipcipherher

免费评分

参与人数 5威望 +1 吾爱币 +24 热心值 +4 收起 理由
mf0051 + 1 + 1 用心讨论,共获提升!
hackysh + 1 我很赞同!
涛之雨 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
walt666 + 1 + 1 我很赞同!
aa530416 + 1 + 1 热心回复!

查看全部评分

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

Hmily 发表于 2022-1-12 17:35
这个内容太少了,补齐到一个帖子里吧。
 楼主| djmingge 发表于 2022-1-15 14:51
nue12138 发表于 2022-1-13 20:52
你这个方法获取的是永久的视频地址吗?不是的话也太麻烦了
直接F12搜m3u8->然后复制,随便找个m3u8下载器 ...

这里探讨的是它的加密算法,如果单纯的拿m3u8地址,就没必要这么麻烦了
huzp 发表于 2022-1-12 18:10
phxi 发表于 2022-1-12 18:22
浏览器的话可以装个插件,可以自动获取视频地址
罗婷 发表于 2022-1-12 19:14
流媒体,你单独的访问这个地址 只是临时的
 楼主| djmingge 发表于 2022-1-12 19:16
Hmily 发表于 2022-1-12 17:35
这个内容太少了,补齐到一个帖子里吧。

下班之前写的,啊哈哈哈
 楼主| djmingge 发表于 2022-1-12 19:17
phxi 发表于 2022-1-12 18:22
浏览器的话可以装个插件,可以自动获取视频地址

我的目的是分析它的加密参数哦
月落丷 发表于 2022-1-12 20:52
我来学习下222
aonima 发表于 2022-1-12 20:52
坐等后续
viply 发表于 2022-1-12 21:00
你这未免也太水了吧
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2022-5-23 12:37

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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