吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 10013|回复: 231
收起左侧

[Web逆向] 手把手分析虾m视频真实地址

    [复制链接]
leospring 发表于 2024-7-27 02:21
本帖最后由 leospring 于 2024-7-27 02:51 编辑

声明

本文内容为小白入门实战教程,大神请忽视;本文仅供学习交流,请勿用于商业和非法用途,否则由此产生的一切后果均与作者无关;若有侵权,请联系立即删除!

接口地址

aHR0cHM6Ly9qeC54bWZsdi5jb20vP3VybD1odHRwczovL3YucXEuY29tL3gvY292ZXIvbXpjMDAyMDB1OHZmemN6Lmh0bWw=

实战开始

  1. 浏览器打开开发者模式,输入网站请求
    截图.png
    直接就请求完成了,没有复杂的无限debugger;省了很多事情;

  2. 观察ur请求
    上面的请求不多,都点点看看,注意请求的参数与响应体
    截图1.png
    细心的同学会发现,这个xmflv.js的请求很诡异,居然是个post请求,响应体是个图片,图片还是裂图,这里边绝逼有鬼,看看这个请求结果到底是什么。

  3. 分析怀疑的请求
    这个请求提供两种方式

    • 将图片下载本地,然后以文本打开该文件
      截图2.png
      截图3.png
    • 复杂请求的url,在控制台查看请求响应结果
      截图4.png
      截图5.png
      可以发现,加密结果和加密方式 key iv都出现了,解密看看结果,正是最终的直链地址(这里就不贴图了)
  4. 分析算法
    截图6.png
    现在目标很明确了,就是获取上述接口的4个请求参数
    wap:是固定的 1
    url:是需要解析的官网地址url
    time:一眼就看出是时间戳
    就剩下 key 参数了,接下来要进行断点跟踪了,这里提供两种方式

    • 关键字搜索
      尝试 key:   "key":  'key':进行全局搜索,最终发现 'key': 能跟到目标代码处
      截图14.png
    • XHR接口断点
      我们知道请求的url,可以添加url断点,再重新请求
      截图7.png
      截图8.png
      点击请求的上游调用栈,很快就找到了请求参数生成地方
      截图9.png
      key 的生成算法是:
      sign(ll1lIl1l['KKVzz'](hex_md5, ll1lIl1l[IliIiIi(0x7c7, 'Sx)X')](I111ill, url)))

      算法混淆比较简单,我们在console打印每一步参数与function
      Snipaste_2024-07-27_02-47-30.png
      转换下 key = sign(hex_md5(time + url))
      在追踪sign跟 hex_md5方法
      截图11.png
      sign是标准AES CBC加密
      截图12.png
      好复杂,根据方法名,盲猜是MD5后再hash,随便找个参数验证一下
      截图13.png
      晕, 直接就是MD5呀,分析结束。

  5. 全局关键字搜索
    通常在上面第2步分析url没有头绪时,可以直接全局搜索关键字,最常用关键字:decrypt
    Snipaste_2024-07-27_01-47-53.png
    再跟踪调用栈,也找到目标解密代码处
    Snipaste_2024-07-27_01-51-10.png


免费评分

参与人数 57吾爱币 +51 热心值 +52 收起 理由
Wanglijun11 + 1 + 1 用心讨论,共获提升!
chao0927 + 1 我很赞同!
sixnology233 + 1 + 1 感谢分析,有学习到了,正好可以补一补ast这方面的知识
笙若 + 1 + 1 谢谢@Thanks!
Zeruak + 1 + 1 谢谢@Thanks!
wangjujun0321 + 1 + 1 谢谢@Thanks!
imrobt + 1 致敬大牛
lqt8956 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
HuaHuoCG + 1 + 1 我很赞同!
Aa1843796 + 1 + 1 我很赞同!
ioyr5995 + 1 + 1 我很赞同!
twqdev + 1 + 1 用心讨论,共获提升!
tianluo + 1 + 1 用心讨论,共获提升!
a927 + 1 + 1 我很赞同!
godotttt + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xuanle6 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
sunnycandy + 1 + 1 我很赞同!
永远De公爵 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
clemmenson + 1 热心回复!
ahxxk + 1 + 1 我很赞同!
KONKAv983 + 1 + 1 用心讨论,共获提升!
萌新表示是小白 + 1 我很赞同!
victos + 1 + 1 谢谢@Thanks!
ForCifer + 1 + 1 谢谢@Thanks!
Alrights + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
chadd + 1 + 1 谢谢@Thanks!
toot + 1 + 1 我很赞同!
xzqabcok + 1 谢谢@Thanks!
az5m1 + 1 我很赞同!
alanhays + 2 + 1 用心讨论,共获提升!
52YR + 1 我很赞同!
wumeng + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bypassYing + 1 我很赞同!
yy20240721 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
theStyx + 2 + 1 用心讨论,共获提升!
kegumingxin666 + 1 + 1 我很赞同!
zzccyydd + 1 + 1 我很赞同!
liangkuai + 1 + 1 用心讨论,共获提升!
gouzi123 + 1 + 1 谢谢@Thanks!
Soaimer + 1 + 1 热心回复!
zhijieweiwo + 1 用心讨论,共获提升!
蛋疼王子 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
sophieqd + 1 + 1 谢谢@Thanks!
dxiaolong + 1 + 1 用心讨论,共获提升!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ailisiyyds + 1 + 1 我很赞同!
PastorBonus + 1 + 1 我很赞同!
x7032360 + 1 + 1 热心回复!
抱歉、 + 1 用心讨论,共获提升!
tomanpj + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
zhoushengzhi + 1 + 1 用心讨论,共获提升!
1282155866 + 1 我很赞同!
b6571 + 1 + 1 谢谢@Thanks!
jiafei5331 + 1 + 1 我很赞同!
砺心缘起 + 1 + 1 我很赞同!
wild12 + 1 我很赞同!
0120 + 1 + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

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

hebeijianke 发表于 2024-7-27 23:24
本帖最后由 hebeijianke 于 2024-7-27 23:39 编辑


[Python] 纯文本查看 复制代码
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
import requests
import time
from Crypto.Cipher import AES
from hashlib import md5
from base64 import b64encode
from urllib.parse import unquote, unquote_plus, quote, quote_plus
 
 
def md5_hash(data):
    """对字符串进行MD5散列并返回其十六进制表示"""
    hash_object = md5(data.encode('utf-8')).hexdigest()
    return hash_object.encode('utf-8')
 
 
def aes_encrypt(data, key, iv):
    """使用AES CBC模式加密明文"""
    cipher = AES.new(key, AES.MODE_CBC, iv)
    encrypted_text = cipher.encrypt(data.encode())
    return b64encode(encrypted_text).decode('utf-8')
 
 
def sign(data):
    plaintext = md5(data.encode('utf-8')).hexdigest()
    key = md5_hash(plaintext)
    iv = b'3cccf88181408f19'
    encrypted = aes_encrypt(plaintext, key, iv)
    return encrypted
 
 
url = quote('https://v.qq.com/x/cover/mzc00200yxnj6nj/n41009m0vya.html', safe='')
 
headers = {
    'Host': '122.228.8.29:4433',
    'Origin': 'https://jx.xmflv.com',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0',
}
tm = int(round(time.time() * 1000))
payload = {
    'wap': 1,
    'url': url,
    'time': tm,
    'key': sign(f"{tm}{url}")
}
con_url = f'https://122.228.8.29:4433/xmflv.js'
res = requests.post(con_url, headers=headers, data=payload)
 
print(res.status_code)
print(res.text)

可以了

免费评分

参与人数 5吾爱币 +5 热心值 +2 收起 理由
SherlockQIU + 1 用心讨论,共获提升!
imrobt + 1 厉害了
萌新表示是小白 + 1 我很赞同!
fengbolee + 2 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
leospring + 1 用心讨论,共获提升!

查看全部评分

 楼主| leospring 发表于 2024-8-3 15:44
mythe777 发表于 2024-8-3 11:38
已经有m3u8地址 可以直接解析吧

文章目的是逆向分析过程,并不单纯要知道地址;浏览器抓包或安装插件等等三方好多工具都能获取地址。当然学会这个可以自己代码实现

免费评分

参与人数 1热心值 +1 收起 理由
cofeyu + 1 我很赞同!

查看全部评分

zhangxiaoxiao 发表于 2024-7-27 04:08
ghtao 发表于 2024-7-27 06:39
,学习了!多谢分享
37893202812 发表于 2024-7-27 06:57
感谢分享
ionk 发表于 2024-7-27 08:10
厉害,学到了
yfyh 发表于 2024-7-27 08:29
辛苦了~感谢分享
longwuling 发表于 2024-7-27 08:30
分析完后,可以下载吗
 楼主| leospring 发表于 2024-7-27 08:52
zhangxiaoxiao 发表于 2024-7-27 04:08
对我这种菜鸟帮助很大,谢谢楼主分享

共同学习 ,我也是菜鸟
 楼主| leospring 发表于 2024-7-27 08:57
longwuling 发表于 2024-7-27 08:30
分析完后,可以下载吗

借助三方工具,比如idm;或自己通过代码实现分片多线程下载,再合并分片,论坛搜下,有别人python实现的例子。我这只做分析,不提供完成代码
Yuwenyi 发表于 2024-7-27 09:16
感谢分享~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2025-4-6 14:58

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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