发表于 2022-9-25 19:09

申请会员ID:12redcircle

1、申 请 I D:12redcircle
2、个人邮箱:liyunheasap@yeah.net
3、原创技术文章:某有声书网站网页端加密资源地址获取过程分享(包含最终可执行代码)

________________________________________



## 2. Web 网站破解前置知识

### 2.1 请求分析、修改
Web 端的资源获取逻辑多数都基于 JavaScript,在打开网页时下载到客户端执行,源码是直接开放的。
打开浏览器的调试工具,就可以看到请求和响应信息(如 Header、URL、请求参数和响应值),并执行重放操作。

如果想替换响应资源,可以使用 Fiddler Classic 和 Charles 等网络分析工具。
通过网络分析工具解析 HTTPS 资源,需要在本机安装可信根证书。分析工具以中间人的方式来查看信息。

### 2.2 常用的加密算法和库

遇到加密参数时,优先考虑以下方式:
1. blueimp-md5:在浏览器端进行 md5 加密
2. Crypto.js:纯JavaScript的加密算法类库,可以方便的在前端进行加解密操作
3. base64(不算加密算法,但是很常见)


## 3. 实例说明

使用 Firefox 进行简单的资源搜索、消息分析。

### 3.1 音频解析

比如说 `https://www.ximalaya.com/sound/36869433` 这段音频,分析网址发现 sound 后面的一串代码似乎是动态变化的,可能是音频资源的 id

访问上述地址,然后点击下面的播放按钮。

!(https://user-images.githubusercontent.com/77133362/192139753-ceebd9bd-6666-421f-bf22-d37b9e75770d.png)


当音频播放时,在浏览器调试工具中搜索 36869433,看到如下结果:


!(https://user-images.githubusercontent.com/77133362/192139758-4a5683d9-d326-4a2d-8d26-1548da0915bd.png)


每个链接都看一下,可以发现在响应数据中 trackInfo.playUrlList 一节能看到下载链接

```
https://mobile.ximalaya.com/mobile-playpage/track/v3/baseInfo/1664096284626?device=web&trackId=36869433&trackQualityLevel=1
```

!(https://user-images.githubusercontent.com/77133362/192139793-fe992e69-d3bd-4999-a652-7e52d14bae4b.png)


列表中发现了四个地址,其中 url 是加密的。


!(https://user-images.githubusercontent.com/77133362/192139818-b4d7a6fd-4e97-41f6-985b-c1fb2ba92420.png)


这时要记得一件事:所有的逻辑解密代码都在 JavaScript 中



查看浏览器的调试器功能,在其中查找网页的 JavaScript 代码地址。找到 s1.xmcdn.com 这一项


!(https://user-images.githubusercontent.com/77133362/192139827-5fccc92a-1d2d-4e41-bc26-82a3cfd09f8e.png)


!(https://user-images.githubusercontent.com/77133362/192139839-8cb6e24b-2ca9-473c-aa2f-f61ecbad3a78.png)

看到有五个文件。直接开始搜索下载地址,根据下载地址定位到调用方法 Mt,直接打断点调试


!(https://user-images.githubusercontent.com/77133362/192139846-36254335-0e5a-472d-a976-793bf7dba160.png)


刷新页面后重新触发方法。点击跳出按钮到达函数外层

!(https://user-images.githubusercontent.com/77133362/192139855-ec30752b-7741-4798-805e-f7ae07432cdb.png)



一个明显的 ajax 请求。看回调部分


!(https://user-images.githubusercontent.com/77133362/192139860-316b0b22-5400-4201-89d2-a010c89974d8.png)


可推测是 Lt 方法解析链接。在控制台中查看 Lt 方法:


!(https://user-images.githubusercontent.com/77133362/192139872-2de05e2e-aaa5-45c1-9f05-a8b9fb0afe5e.png)


![图片](https://user-images.githubusercontent.com/77133362/192140324-690edacc-2d4e-4756-8c54-f7157b39ba05.png)



其中的 Dt 和 Rt 是什么呢?



!(https://user-images.githubusercontent.com/77133362/192139883-067376a6-c252-4f4e-894a-4e5d8c98f5a4.png)

!(https://user-images.githubusercontent.com/77133362/192139888-c15700e6-390a-449e-af77-df76023ff580.png)

看起来是个成品的加密库。拿关键词直接百度,看到一大堆的 Crypto.js



!(https://user-images.githubusercontent.com/77133362/192139896-6293a992-70ac-44e0-9b39-cbab90589a44.png)

直接替换试试


![图片](https://user-images.githubusercontent.com/77133362/192140369-e5561836-fe99-4e1c-824a-858b3881791d.png)


!(https://user-images.githubusercontent.com/77133362/192139908-6724b5cb-bd71-487c-b9be-53a45e50296d.png)

完全一致,解析结束。

### 3.2 解析专辑中链接下载地址

专辑本质上是一组声音列表,只需要获取 trackId,批量调用上一步提到的方法即可。

和上一步的方法一致,找到列表链接:

https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=4615999&pageNum=1

得到如下列表:


!(https://user-images.githubusercontent.com/77133362/192139925-e6bd528a-5568-447a-ab83-1cd34b21aa14.png)


### 3.3 xm-sign 生成

在调用接口时,header 中有一个 xm-sign。这个是如何生成的呢?


!(https://user-images.githubusercontent.com/77133362/192139928-596514e1-e029-4545-b040-bd7a4a55da29.png)

回到文件中,搜索 xm-sign,定位到 getSign 方法


!(https://user-images.githubusercontent.com/77133362/192139934-dae986fc-5530-4df9-bb9f-7f6d619b2a6e.png)


然后打断点,先执行 toString 方法


!(https://user-images.githubusercontent.com/77133362/192139940-0ba130d8-4ed2-481e-a0ee-5ae7db982622.png)


发现静态值 XM_SERVER_CLOCK,猜测是服务器时间的含义。先放在一边,进入函数中调试。


!(https://user-images.githubusercontent.com/77133362/192139952-f7d8a34f-36ba-4097-8986-3a6903e4f8fe.png)


红线上的这些值,可以直接在控制台中执行看结果。比如说 c('0x13'),可以得到下图的结果


!(https://user-images.githubusercontent.com/77133362/192139957-8c831997-6cad-4fe0-8cfe-520d883995b4.png)

最终的代码如下一节 getSign 所示

## 4. 核心代码:


https://github.com/12redcircle/xmly-radio-extractor/discussions/2

Hmily 发表于 2022-9-29 15:24

抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页: [1]
查看完整版本: 申请会员ID:12redcircle