dmvip 发表于 2024-7-8 10:29

【求助】 关于某网站的web 逆向

本帖最后由 dmvip 于 2024-7-8 10:31 编辑

目标站:http://m.fun.tv/focplay/?mid=331399&vid=1328447&malliance=fs62pxe
视频地址接口:http://papi.funshion.com/api/edgeips?ve=1.1.16&fudid=17198228882aa4a&cp=fs62pxe&infohash=0942CB03142194E9C587F78F5C216B4517994710&cl=mweb

经过测试发现 fudid 和infohash 这两个字段 是必填的

接下来就是获取这两个值了






查看源代码发现在这个地方调用 其中这个 fudid 是通过 cookie 获取的而 infohash是通过计算处理的
json:http://pm.funshion.com/v7/media/play/?id=1328447&ves=1&fudid=17198228882aa4a&cl=mweb&uc=231&user_id=0&malliance=fs62pxe
json 返回的infohash: "21A/KKUF0xAcbZJwXAQZ80zS6nFQaLmJr0EtEFwJTOC+ZavRiZYUotXzY="
来计算infohash
请问下大佬们我 现在通过http 请求发现 拿不到cookie 的FK 这个值
]




请问下 这个cookie 我通过代码 怎么获取   infohash这个值 通过Java 代码 怎么计算














十万菠萝拍黄瓜 发表于 2024-7-8 11:20

fck是生成的
https://i.111666.best/image/4N9RRhdQVc1VJeQHJZw2LF.jpg
那个什么info加密位置都找到了 直接把js抠出来调用

hebeijianke 发表于 2024-7-8 13:18

好像使用IDM可以直接下载

hebeijianke 发表于 2024-7-8 18:01

本帖最后由 hebeijianke 于 2024-7-8 18:03 编辑

fudid 和 fck 是一个值,好像没什么意义,任意一个10位时间戳+随机的5个(数字和小写字母)就行,用python代码就是下面这样
import random
import time

def a():
    # 生成一个介于 0 和 65535 之间的随机整数(包含0,不包含65536)
    # 然后转换为十六进制字符串,并去掉开头的 '0x'
    random_int = int((1 + random.random()) * 65535)
    hex_str = hex(random_int).zfill(4)# 确保至少4位,不足则前面补0
    return hex_str


# 获取当前时间戳(秒)
timestamp = int(time.time())

# 生成两个 a() 字符串,拼接后取前5个字符
e = str(timestamp) + (a() + a())[:5]
infohash 这个的生成机制没有研究通,

FitContent 发表于 2024-7-9 00:07

本帖最后由 FitContent 于 2024-7-9 00:10 编辑

这是抠出来的 js 代码,用于计算 `infohash` 值,楼主可以让 AI 转换成等价的 `java` 代码,我并没有 `java` 环境。

```js
function v(e, t) {
    // document.mozEcName 的值似乎固定
    var i = ['9b0', 'f41', '953', 'a42'],
    o = 256,
    n = ,
    r = i;
    for (var s = 0, d = r.length; d > s; s++)
      n.substr(r.length - 1))] = parseInt(r.substr(0, r.length - 1), 16);
    return {
      z1: (e * n + t * n) % o,
      z2: (e * n + t * n) % o
    }
}
function m(e) {
    return String.fromCharCode(e)
}
function f(e) {
    for (var t = "", i = 0; i < e.length; ) {
      var o = e.charCodeAt(i++),
      n = e.charCodeAt(i++);
      if (t += m(v(o, n).z1),
            t += m(v(o, n).z2),
            i == e.length - 1) {
            t += m(e.charCodeAt(i));
            break
      }
    }
    return t
}
function c(e) {
    // 将原本的代码复制给 GPT 可以得出
    return atob(e);
};
function u(e) {
    var t = "",
    i = "",
    o = "";
    return 28 == e.length && e.lastIndexOf("0") == e.length - 1 ? (t = e.substr(0, 27) + "=",
      i = c(t),
      o = f(i),
      y(o)) : (t = e.substr(2, e.length - 2),
      i = c(t),
      f(i))
}

function get_result(e) {
    return {
      hashid: u(e.infohash).substr(0, 40),
      token: u(e.token),
    }
}

// 这里根据需要填写解密的数据
const arg = {
    "infohash": "21tMVk2rHWHLeD+NqFm5iTaT2NRAsuI0CuC+vaherSMGFPf+95uLtzRDY=",
    "token": "21lliVp6JsGlWUXXQntn00V6QRKglwVUHG3IBO8pOsuWyzOHti6azbz/GVGQ2iW09/llgwYR0Bh+4=",
};

console.log(get_result(arg));
/* 输出{
hashid: '0942CB03142194E9C587F78F5C216B4517994710',
token: '2037FD2A018CF983052ED93240B21830A4AFC057_mweb_1720453952'
}
*/
```

hebeijianke 发表于 2024-7-9 13:56

FitContent 发表于 2024-7-9 00:07
这是抠出来的 js 代码,用于计算 `infohash` 值,楼主可以让 AI 转换成等价的 `java` 代码,我并没有 ` ...

document.mozEcName这个是通过2个mcore_v12_xxxxxxxx.js脚本push进去的,可以通过反混淆mcore_v12_xxxxxxxx.js脚本,提取出来合并成列表模式使用,一个很奇怪的问题是,我用python代码实现了,但是提取出的document.mozEcName最新列表不能正确解码,倒数第二次的却能解码。

FitContent 发表于 2024-7-9 22:00

hebeijianke 发表于 2024-7-9 13:56
document.mozEcName这个是通过2个mcore_v12_xxxxxxxx.js脚本push进去的,可以通过反混淆mcore_v12_xxxxxx ...



似乎这个网站的 `document.mozEcName` 会变化,今天的值是 `[ "830", "b91", "243", "872" ]`,即便清空浏览器中关于该网站缓存数据、换个浏览器访问都是这样的结果。

用 python 提取出来之后,可以先将提取出来的值放入本地的 JS 中进行测试,同时对照网页端的结果,看看是否算法变动还是怎么个情况。

我试过用上述的 `document.mozEcName` 用于计算(就是之前提交的脚本),发现没有问题,可以正常解码。不清楚你是怎么做的,可以对照网页端进行调试。

hebeijianke 发表于 2024-7-13 20:27

FitContent 发表于 2024-7-9 22:00


似乎这个网站的 `document.mozEcName` 会变化,今天的值是 `[ "830", "b91", "243", "872" ]`, ...

document.mozEcName每隔一段时间会变化,我使用python把2个mcore_v12_xxxxxxxx.js读取出来,反混淆后,能提取出来,这个好像是手机端网页特有的,
PC端的网页里面也有段代码,
var ue = function(t, e) {
            return {
                z1: (230 * t + 255 * e) % 256,
                z2: (137 * t + 37 * e) % 256
            }
这段代码不同的时段,t和e的参数也会变化
参数正确才能正确解码
页: [1]
查看完整版本: 【求助】 关于某网站的web 逆向