调用博主最近登录时间
生活中的HYGGE
Js解密学习通视频秒过请求

Js解密学习通视频秒过请求

hygge
2022-08-28 / 16 评论 / 2,357 阅读 / 正在检测是否收录...

前言

之前在github找到一个python selenium刷视频和做测验的源码,挂服务器上问题太多了,最近闲下来破解一下网络请求版的刷视频和做测验。
效果图:
l7dcscvl.png
学习通担心的主要是秒过视频会造成学习时长过短的情况,为此没有使用秒过 而是持续请求模拟真实进度,虽然和selenium版的时长差不多,但是更稳定和便捷。
l7dd3xpy.png
视频时长都是完整的有计算的。

视频播放解密

先抓到记录视频播放的请求
l7dd7vhy.png

GET 请求
参数全在URL里,rt,isdrag,_t 这几个参数没什么作用,不发送也可以获得响应
除了enc外的参数都可以在其他请求中获得,本文重点分析enc

首先找切入点,这个请求的构造是由播放器产生的,就会存在参数拼接的情况。
我选择参数名isdrag全局搜索(当然要选特殊的啦,越特殊重复的结果就越少)
l7ddgltb.png

_0x473cb3 = [_0x16dd5d[_0x5d818d(0x242)], '/', _0x16dd5d[_0x5d818d(0x1ee)], _0x5d818d(0x44c), _0x16dd5d[_0x5d818d(0x3af)], _0x5d818d(0x26d), _0x1d0594, _0x5d818d(0x396), _0x16dd5d[_0x5d818d(0x2e2)], _0x5d818d(0x20e), _0x8e40c2, _0x5d818d(0x437), _0x16dd5d['objectId'], _0x5d818d(0x36a), _0x16dd5d[_0x5d818d(0x20c)], _0x5d818d(0x3b1), _0x16dd5d[_0x5d818d(0x3ba)], _0x5d818d(0x1ca), _0x16dd5d[_0x5d818d(0x3bd)], '&isdrag=', _0x9aa55, '&view=pc', _0x5d818d(0x1ef), md5(_0x5dcd20), _0x5d818d(0x1ff), _0x16dd5d['rt'], _0x5d818d(0x2d3), _0x5d818d(0x2ab), new Date()[_0x5d818d(0x1d6)]()][_0x5d818d(0x3d8)]('');

按照对应位置的话更直观一点

'&isdrag=', _0x9aa55, '&view=pc', _0x5d818d(0x1ef), md5(_0x5dcd20),
'&isdrag=',    3    , '&view=pc',       '&enc',     md5(_0x5dcd20),
// enc = f60c04f7cf2820976479ba3758b7d142,  
// 32位,典型的md5加密,所以enc=md5(_0x5dcd20)

继续查看_0x5dcd20

var _0x5dcd20 = Ext[_0x5d818d(0x2a0)][_0x5d818d(0x3ae)](_0x56986f, _0x16dd5d[_0x5d818d(0x3af)], _0x16dd5d[_0x5d818d(0x3bd)], _0x16dd5d[_0x5d818d(0x3ba)] || '', _0x16dd5d[_0x5d818d(0x246)], _0x3a88e3, _0x5d818d(0x24b), _0x16dd5d[_0x5d818d(0x2e2)] * 0x3e8, _0x8e40c2)
// 分析: Ext的二维对象里面是一个方法 小括号后面全是参数

打个断点看一下
l7ddsj9l.png
在511行停下后转去控制台打印一下坐标和索引分别是什么
l7ddtopv.png

String format [{0}][{1}][{2}][{3}][{4}][{5}][{6}][{7}] 59831731 199369846 154762960473479 85bf18fc7d1a0e4707c8b4c771580a53 0 d_yHJ!$pdA~5 767000 0_767
// 这里就很明显了,_0x5dcd20就是将一些参数填充到这个字符串的占位符中
// 如下:
Ext[_0x5d818d(0x2a0)][_0x5d818d(0x3ae)](_0x56986f, _0x16dd5d[_0x5d818d(0x3af)], _0x16dd5d[_0x5d818d(0x3bd)], _0x16dd5d[_0x5d818d(0x3ba)] || '', _0x16dd5d[_0x5d818d(0x246)], _0x3a88e3, _0x5d818d(0x24b), _0x16dd5d[_0x5d818d(0x2e2)] * 0x3e8, _0x8e40c2)
'[59831731][199369846][154762960473479][85bf18fc7d1a0e4707c8b4c771580a53][0][d_yHJ!$pdA~5][767000][0_767]'

这个字符串中的参数,有些是固定不变的,会变动的是取这个_0x16dd5d数组的成员,基本都是可以在其他请求中取到的,没有加密信息。
l7ddz645.png

对这个字符串进行md5加密就可以得到enc

解决无限debugger

我们在对一些网站进行JS逆向分析过程中,很有可能会遇到网站禁止开发人员使用F12进行网页调试,如果你打开就会遇到无限debugger的这个情况,当我们遇到这种情况,我们该如何进行避免无限debugger弹出呢?

解决方法:

可以直接在控制台输入以下代码,可以有效的跳过无限debugger(Chrome浏览器)

Function.prototype.constructor = function(){}

核心代码

while (currentProgress <= video_info.duration)
{
    string enc = $"[{CurrentCourse.ClassId}][{vav.defaults.userid}][{point.jobid}][{point.objectId}][{currentProgress}000][d_yHJ!$pdA~5][{video_info.duration}000][0_{video_info.duration}]";
    enc = GetMD5(enc);// 32位md5加密

    string requestBody = $"clazzId={CurrentCourse.ClassId}&playingTime={currentProgress}&duration={video_info.duration}" +
        $"&clipTime=0_{video_info.duration}&objectId={vav.attachments[0].property.objectid}&otherInfo={vav.attachments[0].otherInfo}" +
        $"&courseId={CurrentCourse.CourseId}&jobid={vav.attachments[0].property.jobid}&userid={vav.defaults.userid}&view=pc&enc={enc}&dtype=Video";
    // 跳过视频
    VideoProgressVo jumpVideoResponse = await ($"https://mooc1.chaoxing.com/multimedia/log/a/{vav.defaults.cpi}/{video_info.dtoken}?{requestBody}")
        .WithHeader("Referer", "https://mooc1.chaoxing.com/ananas/modules/video/index.html")
        .WithHeader("User-Agent", "apifox/1.0.0 (https://www.apifox.cn)")
        .WithHeader("Content-Type", "application/json")
        .WithCookies(Cookies)
        .GetJsonAsync<VideoProgressVo>();
    Log($"当前进度值:{currentProgress},总长度:{video_info.duration},状态:{jumpVideoResponse.isPassed}");
    if (!jumpVideoResponse.isPassed)
    {
        if(currentProgress + 60 > video_info.duration)
        {
            currentProgress = video_info.duration;
        }else if(currentProgress == video_info.duration)
        {
            currentProgress += 1;
        }else
        {
            currentProgress += 60;
        }
    }else
    {
        Log("该视频已完成");
        currentProgress = video_info.duration + 1;
    }
    await Task.Delay(60 * 1000);
}

引用

1.JS调试的时候遇到无限debugger怎么办? : https://blog.csdn.net/qq_19309473/article/details/120573903

3

评论 (16)

取消
  1. 头像
    冷曦
      Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 106.0.0.0 Google Chrome 106.0.0.0

    牛蛙,不愧是大佬,还是喜欢看分析过程

    回复
    1. 头像
      1
        Mac OS X Mac OS X  /  Safari 15.3 Safari 15.3
      @ 冷曦

      这个有软件吗

      回复
  2. 头像
    大佬
      Android 10 Android 10  /  IBrowse r IBrowse r

    牛逼666

    回复
  3. 头像
    曦鹤
      Android 12 Android 12  /  Google Chrome 78.0.3904.108 Google Chrome 78.0.3904.108

    软件要自己抓包吗?还是在哪里下载

    回复
  4. 头像
    脚丫脚丫向前走。
      Android 12 Android 12  /  Google Chrome 97.0.4692.98 Google Chrome 97.0.4692.98

    为什么每次一到做那个章节测试的时候

    会出来一个弹窗显示。应用程序中发生了未经处理的异常,如果单击继续应用程序,将忽略此错误并尝试继续,如果单机退出应用程序将立即关闭。我点完那个继续之后还是运行不了

    回复
    1. 头像
      hygge 作者
        Android 12 Android 12  /  Google Chrome 111.0.0.0 Google Chrome 111.0.0.0
      @ 脚丫脚丫向前走。

      1.已停止维护更新修复,不要骚扰我
      2.原贴评论自己看

      回复
      1. 头像
        脚丫脚丫向前走。
          Android 12 Android 12  /  Google Chrome 97.0.4692.98 Google Chrome 97.0.4692.98
        @ hygge

        好的不好意思丫希望大佬能一直更新优秀的作品

        回复
      2. 头像
        作者小弟
          Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 69.0.3947.100 Google Chrome 69.0.3947.100
        @ hygge

        作者老大 崇拜已久 想加您联系方式

        回复
        1. 头像
          hygge 作者
            Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 113.0.0.0 Google Chrome 113.0.0.0
          @ 作者小弟

          表情 啥事儿 已经没有软件了

          回复
  5. 头像
    备受折磨的大学生
      Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 111.0.0.0 Google Chrome 111.0.0.0

    大佬 请问可以继续更新刷课软件么表情我用网页油猴刷一两个小时才刷两三张 实在是赶时间表情
    本人网课受害者。有六门在这个月要搞完,望大佬解决一下刷课弹窗问题 救救大学人叭表情

    回复
    1. 头像
      hygge 作者
        Android 12 Android 12  /  Google Chrome 112.0.0.0 Google Chrome 112.0.0.0
      @ 备受折磨的大学生

      我的软件没有问题,是第三方对接的题库 不免费开放了!

      回复
      1. 头像
        脚丫脚丫向前走。
          Android 12 Android 12  /  Google Chrome 97.0.4692.98 Google Chrome 97.0.4692.98
        @ hygge

        我也觉得作者大大写的这个学习通的代刷版本至少优于于我我用过的其他的脚本。

        回复
        1. 头像
          hygge 作者
            Android 12 Android 12  /  Google Chrome 112.0.0.0 Google Chrome 112.0.0.0
          @ 脚丫脚丫向前走。

          谢谢给我这么高的评价!

          回复
          1. 头像
            备受折磨的大学生
              Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 112.0.0.0 Google Chrome 112.0.0.0
            @ hygge

            大佬 请问还有什么和你这个类似的刷课软件不?

            回复
      2. 头像
        作者小弟
          Windows 10 x64 Edition Windows 10 x64 Edition  /  Google Chrome 69.0.3947.100 Google Chrome 69.0.3947.100
        @ hygge

        老大 多少钱 我给您报销

        回复
  6. 头像
    gli
      Windows 7 x64 Edition Windows 7 x64 Edition  /  Firefox 112.0 Firefox 112.0

    来晚了::>_

    回复