VideoHelp Forum
+ Reply to Thread
Page 6 of 6
FirstFirst ... 4 5 6
Results 151 to 168 of 168
Thread
  1. redacted
    Last edited by dark125; 14th Jun 2024 at 04:43.
    Quote Quote  
  2. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by dark125 View Post
    CODE
    It’s a very good script but I don’t think sharing the all script is beneficial. The devs are looking at this thread and improving security everytime.
    I would just give some parts like timestamp :
    Code:
     timestamp_url = stream_url.replace('/index.m3u8', '') + '/k/timestamp'
    
    
    response = requests.get(timestamp_url, headers=headers)
    timestamp_b64 = base64.b64encode(response.content).decode()
    
    timestamp = base64.b64decode(timestamp_b64)
    Or the decryption part based on ranges collected by hand :
    Code:
     arrays = {'g': [32, 48],
              'v': [8, 24] }
    substring = {'f': [16, 48],
                 's': [41] }
    
    def decrypt_key(data, apkid):
        tmp1 = data[arrays['g'][0]:arrays['g'][1]]
        tmp2 = data[arrays['v'][0]:arrays['v'][1]]
        apkid = apkid[substring['f'][0]:substring['f'][1]] # + apkid[substring['s'][0]:]
        dec1 = AES.new(bytes.fromhex(apkid), AES.MODE_ECB)
        tmp3 = dec1.decrypt(tmp1)
        dec2 = AES.new(tmp3, AES.MODE_ECB)
        key = dec2.decrypt(tmp2)
        return key.hex()
    I hope devs don’t see this post and improve security.. (it could be a good challenge though) (Besides, if instructions based on timestamp file url are not implemented yet, this will probably be the next challenge, easy to achieve by hand but very difficult to script because the range keeps changing according to different js files.)
    Last edited by aqzs; 13th Jun 2024 at 21:31.
    Quote Quote  
  3. Originally Posted by amigo View Post
    hoxabe, I would like to inquire about the process of downloading videos from the GoClass platform. Could you please provide detailed instructions on how to download videos?
    You have private messages disabled. Here's your key:
    Code:
    --custom-hls-key 648dea11fe203008b24f492175fe674d
    The regular method worked with this (no need to invert tmp1 and tmp2), you just need to setup the python function with the right paddings.
    Quote Quote  
  4. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by white_snake View Post
    You have private messages disabled. Here's your key:
    Code:
    --custom-hls-key 648dea11fe203008b24f492175fe674d
    The regular method worked with this (no need to invert tmp1 and tmp2), you just need to setup the python function with the right paddings.
    He send me a message too. He was banned.

    PAGEURL: https://www.goclasses.in/s/courses/60fdd8530cf2c7989e1f109d/take?freecourseenrol=success
    apkId value:
    Code:
    3036333063036333065396531386339643039613953965313863396430396139
    stream_url: https://dnqe0v482iyb1.cloudfront.net/spees/w/o/60e975430cf20278db21ff30/v/640c251ee4b0...5ec/index.m3u8
    Hex key:
    Code:
    648dea11fe203008b24f492175fe674d
    Code:
    N_m3u8DL-RE "https://dnqe0v482iyb1.cloudfront.net/spees/w/o/60e975430cf20278db21ff30/v/640c251ee4b04eb4af8fe5ec/u/666bc97428804245eb4891e9/t/0ce6c9a8537cb5aa7a1a145e6d48c6eb/p/assets/videos/60e975430cf20278db21ff30/2023/03/11/640c251ee4b04eb4af8fe5ec/index.m3u8" --custom-hls-key 648dea11fe203008b24f492175fe674d -M format=mkv -mt --save-name "Lecture 1A - Why Study Linear Algebra"
    Quote Quote  
  5. btw for g0class3s you need to add origin/referer to every request you make.
    Quote Quote  
  6. Originally Posted by aqzs View Post
    Code:
     timestamp_url = stream_url.replace('/index.m3u8', '') + '/k/timestamp'
    
    
    response = requests.get(timestamp_url, headers=headers)
    timestamp_b64 = base64.b64encode(response.content).decode()
    Hey man, thanks for sharing the snippet. I have a question though - What are we passing in the headers inside the get function?
    Quote Quote  
  7. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by hoxabe5434 View Post
    Hey man, thanks for sharing the snippet. I have a question though - What are we passing in the headers inside the get function?
    For timestamp those works fine :
    Code:
    headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36',}
    Quote Quote  
  8. https://learn.codersgyan.com/s/preview/courses/mastering-mern#64fdc62ee4b0d1111c349bf5

    can anyone please tell me what will be the decryption key for this video?

    if possible tell me the decryption function also , so that i can download the remaning videos on my own
    Quote Quote  
  9. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by User2024 View Post
    https://learn.codersgyan.com/s/preview/courses/mastering-mern#64fdc62ee4b0d1111c349bf5

    can anyone please tell me what will be the decryption key for this video?

    if possible tell me the decryption function also , so that i can download the remaning videos on my own
    HTML Code:
    PAGEURL:  https://learn.codersgyan.com/s/preview/courses/mastering-mern#64fdc62ee4b0d1111c349bf5
    apkId value: 6231373436231373432363038663465653864613523630386634656538646135
    stream_url:  https://dnqe0v482iyb1.cloudfront.net/spees/w/o/64e36f81e4b0f6317a6e3410/v/64fdc62ee4b0d1111c349bf5/u/pu/t/49f252413e29eb300003b2dab1f3eeef/p/assets/videos/64e36f81e4b0f6317a6e3410/2023/09/10/64fdc62ee4b0d1111c349bf5/index.m3u8
    Hex key: 4b690de69db37bd34910807f94065ffb
    Code:
    N_m3u8DL-RE "https://dnqe0v482iyb1.cloudfront.net/spees/w/o/64e36f81e4b0f6317a6e3410/v/64fdc62ee4b0d1111c349bf5/u/pu/t/49f252413e29eb300003b2dab1f3eeef/p/assets/videos/64e36f81e4b0f6317a6e3410/2023/09/10/64fdc62ee4b0d1111c349bf5/index.m3u8" --custom-hls-key 4b690de69db37bd34910807f94065ffb -M format=mkv -mt
    https://www.swisstransfer.com/d/60dd9911-db53-46fb-bb68-1cc72b5e4ff6

    Use this script with those values :
    HTML Code:
    arrays = {'g': [16, 32],
              'v': [48, 64]
              }
    substring = {'f': [0, 9],
                 's': [41]
                }
    Quote Quote  
  10. Thanks aqzs for your help. it means a lot
    Last edited by User2024; 17th Jun 2024 at 03:29.
    Quote Quote  
  11. https://courses.algocamp.io/learn/home/Full-Stack-Web-Development-Course/section/48779...esson/3022620?

    its a free trial video, so anyone can login with fake email id and watch.

    this video is hosted on learnyst platform

    can anyone help me how to download videos from learnyst platform?
    Quote Quote  
  12. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    Originally Posted by User2024 View Post
    https://courses.algocamp.io/learn/home/Full-Stack-Web-Development-Course/section/48779...esson/3022620?

    its a free trial video, so anyone can login with fake email id and watch.

    this video is hosted on learnyst platform

    can anyone help me how to download videos from learnyst platform?
    Different system from the one in the thread. Open a new thread.
    Quote Quote  
  13. Member
    Join Date
    Jun 2024
    Location
    Mexico City
    Search Comp PM
    Every time i try to decrypt the key, i am getting different keys for the same video. and none of them actually works. i always get ERROR: Padding is invalid and cannot be removed.
    Quote Quote  
  14. Member aqzs's Avatar
    Join Date
    Mar 2024
    Location
    Paris
    Search Comp PM
    You shouldn't get different keys for the same video. To make sure my script works I always run it twice, if I get 2 different keys the values aren't the right one. Change according to values you found :
    HTML Code:
    arrays = {'g': [16, 32],
              'v': [48, 64]
              }
    substring = {'f': [0, 9],
                 's': [41]
                }
    Quote Quote  
  15. Originally Posted by soumya View Post
    Every time i try to decrypt the key, i am getting different keys for the same video. and none of them actually works. i always get ERROR: Padding is invalid and cannot be removed.
    Post an HAR file of your session if you want help (like this).
    Quote Quote  
  16. Upto yesterday it was working fine, but from today again im getting padding value error.

    https://vcdn.spayee.in/spees/w/o/5e356a710cf24531c92ac49f/v/62f2953de4b0927bcdc9b12e/u...12e/index.m3u8

    apkid : 64646330626436386230323036303733646463306264363862 30323036303733

    timestamp response : data:application/octet-stream;base64,A413OF98F92W8J9/sseaaF5yKSAmM25NM1JEanFrUCRrSX7WlhMzindoWNKw46ed

    updated decryptor function :
    (e.loadsuccess = function (t, e, r) {
    var i = r.frag,
    n = window.cjs,
    a = n.AES.decrypt,
    o = window.convertArrayToBase64,
    u = n.mode.ECB,
    d = n.enc,
    h = d.Hex.parse,
    c = n.pad.NoPadding;
    if (i.decryptdata) {
    var f = new Uint8Array(t.data),
    pp = t.url.split('/timestamp/')[1] ?? '',
    g = f.subarray(0, 16),
    v = f.subarray(32, 48);
    if (pp === 'aav') {
    g = f.subarray(16, 32);
    v = f.subarray(48, 64);
    } else if (pp === 'scw') {
    g = f.subarray(0, 16);
    v = f.subarray(32, 48);
    } else if (pp === 'scs') {
    v = f.subarray(0, 16);
    g = f.subarray(48, 64);
    } else if (pp === 'sdq') {
    v = f.subarray(8, 24);
    g = f.subarray(32, 48);
    } else if (pp === 'sxc') {
    v = f.subarray(16, 32);
    g = f.subarray(48, 64);
    } else if (pp === 'q1wq') {
    v = f.subarray(0, 16);
    g = f.subarray(32, 48);
    } else if (pp === 'w1q') {
    g = f.subarray(0, 16);
    v = f.subarray(48, 64);
    }
    (f = a(o(g), h(window.apkId.substring(32)), {
    mode: u,
    padding: c,
    })),
    (f = d.u8array.stringify(
    a(o(v), f, { mode: u, padding: c })
    )),
    (this.decryptkey = i.decryptdata.key =
    new Uint8Array(f.buffer)),
    (i.loader = null),
    delete this.loaders[i.type],
    this.hls.trigger(s.Events.KEY_LOADED, { frag: i });
    } else l.logger.error("after key load, decryptdata unset");
    })

    Guys anyone pls share updated python script
    Quote Quote  
  17. Originally Posted by Raj_kumar View Post
    Upto yesterday it was working fine, but from today again im getting padding value error.

    https://vcdn.spayee.in/spees/w/o/5e356a710cf24531c92ac49f/v/62f2953de4b0927bcdc9b12e/u...12e/index.m3u8

    apkid : 64646330626436386230323036303733646463306264363862 30323036303733

    timestamp response : data:application/octet-stream;base64,A413OF98F92W8J9/sseaaF5yKSAmM25NM1JEanFrUCRrSX7WlhMzindoWNKw46ed

    updated decryptor function :
    (e.loadsuccess = function (t, e, r) {
    var i = r.frag,
    n = window.cjs,
    a = n.AES.decrypt,
    o = window.convertArrayToBase64,
    u = n.mode.ECB,
    d = n.enc,
    h = d.Hex.parse,
    c = n.pad.NoPadding;
    if (i.decryptdata) {
    var f = new Uint8Array(t.data),
    pp = t.url.split('/timestamp/')[1] ?? '',
    g = f.subarray(0, 16),
    v = f.subarray(32, 48);
    if (pp === 'aav') {
    g = f.subarray(16, 32);
    v = f.subarray(48, 64);
    } else if (pp === 'scw') {
    g = f.subarray(0, 16);
    v = f.subarray(32, 48);
    } else if (pp === 'scs') {
    v = f.subarray(0, 16);
    g = f.subarray(48, 64);
    } else if (pp === 'sdq') {
    v = f.subarray(8, 24);
    g = f.subarray(32, 48);
    } else if (pp === 'sxc') {
    v = f.subarray(16, 32);
    g = f.subarray(48, 64);
    } else if (pp === 'q1wq') {
    v = f.subarray(0, 16);
    g = f.subarray(32, 48);
    } else if (pp === 'w1q') {
    g = f.subarray(0, 16);
    v = f.subarray(48, 64);
    }
    (f = a(o(g), h(window.apkId.substring(32)), {
    mode: u,
    padding: c,
    })),
    (f = d.u8array.stringify(
    a(o(v), f, { mode: u, padding: c })
    )),
    (this.decryptkey = i.decryptdata.key =
    new Uint8Array(f.buffer)),
    (i.loader = null),
    delete this.loaders[i.type],
    this.hls.trigger(s.Events.KEY_LOADED, { frag: i });
    } else l.logger.error("after key load, decryptdata unset");
    })

    Guys anyone pls share updated python script
    what's the video url?
    Quote Quote  
  18. Originally Posted by LZAA View Post
    hlsdl -b -K 2AAC616013F1877619AF8AC01ABFF0A6 https://dnqe0v482iyb1.cloudfront.net/spees/w/o/6197321b0cf23d7cc6e572e1/v/6337f80fe4b0...d5a/index.m3u8
    > START media_playlist_get_links
    > END media_playlist_get_links
    > START media_playlist_get_links
    > END media_playlist_get_links
    HLS Stream is AES-128 encrypted.
    {"d_t":"vod"}
    {"t_d":794,"d_d":0, "d_s":0}
    Downloading part 0
    Downloading part 0
    PMT wrong table id: 0x42
    PMT wrong table id: 0x42
    {"t_d":794,"d_d":2,"d_s":93248}
    Downloading part 1
    Downloading part 1
    {"t_d":794,"d_d":4,"d_s":154348}
    Downloading part 2
    ...

    How to find that key. -K
    Quote Quote  



Similar Threads

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