VideoHelp Forum




+ Reply to Thread
Results 1 to 6 of 6
  1. Member metome's Avatar
    Join Date
    Oct 2023
    Location
    vietnam
    Search Comp PM
    (needs vietnam vpn)
    I want to catch the key of this link but I have failed, anyone can show me where I was wrong?
    1. I set a breakpoint at 6315 after searching 'decrytpkey/decryptdata'
    2. I have found Uint8Array but can't find the key

    3. Here are some information about this link

    https://www.vtvcab.vn/channel/dr-fit-hd-1,DR_FIT_HD.html

    #EXT-X-VERSION:4
    #EXT-X-TARGETDURATION:6
    #EXT-X-MEDIA-SEQUENCE:10061549
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-MEDIA-ID530C708A29CB804A025561D81B4DDCF
    #EXT-X-STREAM-DENIED:MTIz
    #EXT-X-STREAM-SIGNALBF2EBBEBBD50518244A634B9D360726
    #EXT-X-KEY:METHOD=AES-128,URI="https://license.sigmadrm.com/license/verify/sigma?keyId=1a74ca5f-f46c-4bc9-8993-53ce6ce95705&assetId=dr-fit_v2_SD&uuid=cf20e92d-5869-4d47-ac9f-1248ab44f6e5"


    eyJtZXJjaGFudElkIjoidGh1ZG9qc2MiLCJhcHBJZCI6IlZUVm NhYk9OIiwic2Vzc2lvbklkIjoiZXlKaGJHY2lPaUpJVXpJMU5p SXNJblI1Y0NJNklrcFhWQ0o5LmV5SnpaR2tpT2lKN1hDSjFjMl Z5WENJNlhDSkhMVXRHUkRaVldFUTRVbFpjSWl4Y0ltMWxjbU5v WVc1MFhDSTZYQ0owYUhWa2IycHpZMXdpTEZ3aVlYTnpaWFJjSW pwY0ltUnlMV1pwZEY5Mk1sd2lmU0lzSW5WcFpDSTZJa2N0UzBa RU5sVllSRGhTVmlJc0ltUnliVWxrSWpvaVpISXRabWwwWDNZeU lpd2lhV0YwSWpveE5qazJOamczTkRBMUxDSmxlSEFpT2pFMk9U WTNOek00TVRCOS5hdElEaXdFZUYyWGRDVzFidlNIaGV6Z08xOD Z0LXptcEJodGh2Umc4SHo4IiwidXNlcklkIjoiRy1LRkQ2VVhE OFJWIn0=

    {"merchantId":"thudojsc","appId":"VTVcabON","sessi onId":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZG kiOiJ7XCJ1c2VyXCI6XCJHLUtGRDZVWEQ4UlZcIixcIm1lcmNo YW50XCI6XCJ0aHVkb2pzY1wiLFwiYXNzZXRcIjpcImRyLWZpdF 92MlwifSIsInVpZCI6IkctS0ZENlVYRDhSViIsImRybUlkIjoi ZHItZml0X3YyIiwiaWF0IjoxNjk2Njg3NDA1LCJleHAiOjE2OT Y3NzM4MTB9.atIDiwEeF2XdCW1bvSHhezgO186t-zmpBhthvRg8Hz8","userId":"G-KFD6UXD8RV"}

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzZGkiOiJ7X CJ1c2VyXCI6XCJHLUtGRDZVWEQ4UlZcIixcIm1lcmNoYW50XCI 6XCJ0aHVkb2pzY1wiLFwiYXNzZXRcIjpcImRyLWZpdF92Mlwif SIsInVpZCI6IkctS0ZENlVYRDhSViIsImRybUlkIjoiZHItZml 0X3YyIiwiaWF0IjoxNjk2Njg3NDA1LCJleHAiOjE2OTY3NzM4M TB9.atIDiwEeF2XdCW1bvSHhezgO186t-zmpBhthvRg8Hz8

    {"alg":"HS256","typ":"JWT"}.{"sdi":"{\"user\":\ "G-KFD6UXD8RV\",\"merchant\":\"thudojsc\",\"asset\":\ "dr-fit_v2\"}","uid":"G-KFD6UXD8RV","drmId":"dr-fit_v2","iat":1696687405,"exp":1696773810}.jÒ‹ eÝ m[½!á{8×Î*-ÎjA†ØoFÏ


    GET /manifest/dr-fit/playlist_720p.m3u8 HTTP/2
    Host: live-on-sigma-drm-v2-vtvlive.gviet.vn
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36
    Accept: */*
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Referer: https://www.vtvcab.vn/
    Origin: https://www.vtvcab.vn
    Connection: keep-alive
    Sec-Fetch-Dest: empty
    Sec-Fetch-Mode: cors
    Sec-Fetch-Site: cross-site
    Sec-GPC: 1
    sec-ch-ua-platform: "Windows"
    sec-ch-ua: "Google Chrome";v="118", "Chromium";v="118", "Not=A?Brand";v="24"
    sec-ch-ua-mobile: ?0
    TE: trailers
    Image Attached Thumbnails Click image for larger version

Name:	Untitled.png
Views:	122
Size:	78.0 KB
ID:	74285  

    Image Attached Files
    Quote Quote  
  2. sorry but i dont understand what are you doing with :
    #EXT-X-VERSION:4
    #EXT-X-TARGETDURATION:6
    #EXT-X-MEDIA-SEQUENCE:10061549
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-MEDIA-ID530C708A29CB804A025561D81B4DDCF
    #EXT-X-STREAM-DENIED:MTIz
    #EXT-X-STREAM-SIGNALBF2EBBEBBD50518244A634B9D360726
    #EXT-X-KEY:METHOD=AES-128,URI="https://license.sigmadrm.com/license/verify/sigma?keyId=1a74ca5f-f46c-4bc9-8993-53ce6ce95705&assetId=dr-fit_v2_SD&uuid=cf20e92d-5869-4d47-ac9f-1248ab44f6e5"


    where do you put this? from where do you get it? can you send a link for more information? thanks
    Quote Quote  
  3. Member metome's Avatar
    Join Date
    Oct 2023
    Location
    vietnam
    Search Comp PM
    Originally Posted by marioeivissa View Post
    sorry but i dont understand what are you doing with :
    #EXT-X-VERSION:4
    #EXT-X-TARGETDURATION:6
    #EXT-X-MEDIA-SEQUENCE:10061549
    #EXT-X-INDEPENDENT-SEGMENTS
    #EXT-X-STREAM-MEDIA-ID530C708A29CB804A025561D81B4DDCF
    #EXT-X-STREAM-DENIED:MTIz
    #EXT-X-STREAM-SIGNALBF2EBBEBBD50518244A634B9D360726
    #EXT-X-KEY:METHOD=AES-128,URI="https://license.sigmadrm.com/license/verify/sigma?keyId=1a74ca5f-f46c-4bc9-8993-53ce6ce95705&assetId=dr-fit_v2_SD&uuid=cf20e92d-5869-4d47-ac9f-1248ab44f6e5"


    where do you put this? from where do you get it? can you send a link for more information? thanks
    It is only the structure in the M3U file.

    Just pay attention:
    #EXT-X-MEDIA-SEQUENCE:10061549

    URI="https://license.sigmadrm.com/license/verify/sigma?keyId=1a74ca5f-f46c-4bc9-8993-53ce6ce95705&assetId=dr-fit_v2_SD&uuid=cf20e92d-5869-4d47-ac9f-1248ab44f6e5"
    Image Attached Files
    Quote Quote  
  4. Maybe this is the part how the decrypted key obtained from the last URL:
    function(t, e, r) {
    "use strict";

    function i(t, e) {
    if (!(t instanceof e)) throw new TypeError("Cannot call a class as a function")
    }

    function n(t, e) {
    if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    return !e || "object" != typeof e && "function" != typeof e ? t : e
    }

    function a(t, e) {
    if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + typeof e);
    t.prototype = Object.create(e && e.prototype, {
    constructor: {
    value: t,
    enumerable: !1,
    writable: !0,
    configurable: !0
    }
    }), e && (Object.setPrototypeOf ? Object.setPrototypeOf(t, e) : t.__proto__ = e)
    }
    var o = r(1),
    s = r(3),
    u = r(2),
    l = r(0),
    c = r(8),
    d = function(t) {
    function e(r) {
    i(this, e);
    var a = n(this, t.call(this, r, o.a.KEY_LOADING));
    return a.loaders = {}, a.decryptkey = null, a.decrypturl = null, a
    }
    return a(e, t), e.prototype.destroy = function() {
    for (var t in this.loaders) {
    var e = this.loaders[t];
    e && e.destroy()
    }
    this.loaders = {}, s.a.prototype.destroy.call(this)
    }, e.prototype.onKeyLoading = function(t) {
    c.a.getInstance().accquireProvision() ? this.loadProvision(t) : this.loadLicense(t)
    }, e.prototype.onProvisionDone = function(t, e) {
    var r = t.byteLength,
    i = Module._malloc(r),
    n = new Uint8Array(t);
    Module.HEAP8.set(n, i), Module.ccall("provideProvision", null, ["number", "number"], [i, r]), Module._free(i), this.loadLicense(e)
    }, e.prototype.loadProvision = function(t) {
    var e = this,
    r = c.a.getInstance().provisionRequest(),
    i = this.hls.config,
    n = new i.loader(i),
    a = void 0,
    s = void 0,
    l = void 0;
    s = {
    timeout: i.fragLoadingTimeOut,
    maxRetry: i.fragLoadingMaxRetry,
    retryDelay: i.fragLoadingRetryDelay,
    maxRetryDelay: i.fragLoadingMaxRetryTimeout
    }, l = {
    onSuccess: function(t, r, i) {
    var n = new Uint8Array(t.data);
    e.onProvisionDone(n, i.keyData)
    },
    onError: function(r, i) {
    var n = t.frag;
    e.hls.trigger(o.a.ERROR, {
    type: u.b.NETWORK_ERROR,
    details: u.a.KEY_LOAD_ERROR,
    fatal: !1,
    frag: n,
    response: r
    })
    },
    onTimeout: function(r, i) {
    var n = t.frag;
    e.hls.trigger(o.a.ERROR, {
    type: u.b.NETWORK_ERROR,
    details: u.a.KEY_LOAD_TIMEOUT,
    fatal: !1,
    frag: n
    })
    }
    }, a = {
    keyData: t,
    url: r.uri,
    responseType: "arraybuffer",
    body: r.payload,
    requestHeader: {
    "Content-Type": "application/json"
    }
    }, n.load(a, s, l)
    }, e.prototype.loadLicense = function(t) {
    var e = t.frag,
    r = e.type,
    i = this.loaders[r],
    n = e.decryptdata,
    a = n.uri;
    if (a !== this.decrypturl || null === this.decryptkey || c.a.getInstance().accquireLicense(a)) {
    var s = this.hls.config;
    i && (l.b.warn("abort previous key loader for type:" + r), i.abort()), e.loader = this.loaders[r] = new s.loader(s), this.decrypturl = a, this.decryptkey = null;
    var u = void 0,
    d = void 0,
    f = void 0;
    d = {
    timeout: s.fragLoadingTimeOut,
    maxRetry: s.fragLoadingMaxRetry,
    retryDelay: s.fragLoadingRetryDelay,
    maxRetryDelay: s.fragLoadingMaxRetryTimeout
    }, f = {
    onSuccess: this.loadsuccess.bind(this),
    onError: this.loaderror.bind(this),
    onTimeout: this.loadtimeout.bind(this)
    };
    var h = c.a.getInstance().initSession(a),
    p = c.a.getInstance().licenseRequest(a);
    u = {
    url: a,
    frag: e,
    sessionId: h,
    responseType: "arraybuffer",
    body: p.body,
    requestHeader: p.header
    }, e.loader.load(u, d, f)
    } else this.decryptkey && (n.key = this.decryptkey, this.hls.trigger(o.a.KEY_LOADED, {
    frag: e
    }))
    }, e.prototype.loadsuccess = function(t, e, r) {
    var i = r.frag;
    this.decryptkey = i.decryptdata.key = r.sessionId, c.a.getInstance().provideKeyResponse(r.url, new Uint8Array(t.data)), i.loader = void 0, this.loaders[i.type] = void 0, this.hls.trigger(o.a.KEY_LOADED, {
    frag: i
    })
    }, e.prototype.loaderror = function(t, e) {
    var r = e.frag,
    i = r.loader;
    i && i.abort(), this.loaders[e.type] = void 0, this.hls.trigger(o.a.ERROR, {
    type: u.b.NETWORK_ERROR,
    details: u.a.KEY_LOAD_ERROR,
    fatal: !1,
    frag: r,
    response: t
    })
    }, e.prototype.loadtimeout = function(t, e) {
    var r = e.frag,
    i = r.loader;
    i && i.abort(), this.loaders[e.type] = void 0, this.hls.trigger(o.a.ERROR, {
    type: u.b.NETWORK_ERROR,
    details: u.a.KEY_LOAD_TIMEOUT,
    fatal: !1,
    frag: r
    })
    }, e
    }(s.a);
    e.a = d
    }
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!