VideoHelp Forum




+ Reply to Thread
Results 1 to 16 of 16
  1. This is my first post and I would like to thank all who have contributed to the forum and made my life so simple.
    I am trying to download following video. Anyone can access the same after registering.
    Code:
    https://learn.soic.in/learn/home/Course-10-Day-SOIC-Free-Course-SOIC/section/353520/lesson/2176602?
    I could get the PSHH from the eme logger as
    Code:
    AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSECjB0pNOgg9OIo2hiw6uICRI49yVmwY=
    I could also get the license server
    Code:
    https://drm-u.learnyst.com/drmv2/lstdrm
    I used getwvkeys.py file from
    Code:
    https://getwvkeys.cc/script
    Added following headers to the file
    Code:
    headers = {
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate, br',
    'Accept-Language': 'en-US,en;q=0.9',
    'Content-Length': '2236',
    'Content-Type': 'application/octet-stream',
    'Origin': 'https://learn.soic.in',
    'Referer': 'https://learn.soic.in/',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'X-Lmul': '1',
    'X-Lrtoken': 'eyJhbGciOiJIUzI1NiJ9.eyJ1aWQiOjkxODkwODIsInNpZCI6MTEwOTk4LCJleHAiOjE3MzQ0MjYxODUsInR5cCI6NCwibG9rIjoiMDAwMCIsInRvayI6IkRtMldLUDBCS2UyWUFYNkVIa0lDdXciLCJ0aW1lIjoxNzAyODkwMTg1fQ.TGw0WO3UPQTdR-OzYMVyyT4wbX05pgTj6qDZ2ucgwTg'
    }
    Also added payload as
    Code:
    challenge = 'eyJ2ZXJzaW9uIjo0MDcsInNjaG9vbElkIjoxMTA5OTgsInN0dWRlbnRJZCI6OTE4OTA4MiwiY29udGVudElkIjoiZjAzMmY4NzQ4NWYzZWI1MGViYWFjNmM2NDQ2ZTQzMjkiLCJjb250ZW50UGF0aCI6IjExMDk5OC8zZDY0NjU1NDFhMGI4MTIxMzY0MDQxZWIzMjA0MTE3YS9kMzI3YzJmYzIxYWZmNmQ5MWJhNjYxNjE0NTRlODFlNi84OWZiMTA5ZDRiZjBiNGJhZjA2NzI1OWMxMDdiYTExZSIsIm1kNSI6IjM2M2ZlNzdhNzIyNDViZThhY2YzYjA5MmQ5MzgwMTEzIiwiZW5jQWxnbyI6InVuIiwiaXNQYWlkIjoxLCJsaWNyZXEiOiJleUpzYVdObGJuTmxVbVZ4ZFdWemRDSTZJbVY1U25wWk1taDJZako0U2xwRFNUWk5WRVYzVDFSck5FeERTbnBrU0ZacldsYzFNRk5YVVdsUGFtdDRUMFJyZDA5RVNYTkpiVTUyWkZoS2VscFZiR3RKYW05NFRsUkJNazU2WjNOSmJYaHNZek5PZG1KcmJHdEphbTk1VFZSak1rNXFRWGhNUTBwMFlqSk9jbFpIVm5wa1JXeHJTV3B2ZEUxVGQybGpXRlpzWXpOU2NHSXlOVXBhUTBrMlRGUkZjMGx0VG5aaWJsSnNZbTVTU2xwRFNUWkpiVmwzVFhwS2JVOUVZekJQUkZadFRUSldhVTVVUW14WmJVWm9XWHBhYWs1cVVUQk9iVlV3VFhwSk5VbHBkMmxoV0U1UldWZHNhMGxxYjNoTVEwcDBXbGhPZWxsWFpHeFdTR3gzV2xOSk5rbHVWblZoTWpWMlpESTBhVXhEU25OamJGSjJZVEpXZFVscWIybGFXR3hMWVVkS1NGa3liRkJoVlhCS1ZsaHdTazFWTlhCVGFtdDFXbGhzUzAxWFJsaFZWMnhRWVcxME5GUXdVbkprTURsRlUxaE9TbUpyTlhkWGEwNUtUbXN4VlZKWVpGQldSM013VkVWT1MySkhWa2xSVjJ4UVlXdFZlbFJZY0ZKTlJURnhWMWhvVUZKR1ZucFRWelZUVGxkT1JGTlVXazlSTTJSd1dXdGpOV05yYkhGaU1teE9Va1ZHTTFSVlRrcGpNR3gxVlc1YWFHVlZhekpUVjNSVFpFVXhjMXBGZUZaU1JVcEVWWHBLVm1WV1pGWlNiR3hQWVRGYVNsbFVRbk5TUjFKWldUSnNUVkV3YjNkWlZtTjRZa1ZzY1dJemFFOWxhMFkxVkRCU2NtUXdNVlZhZWtadFZWTTFWVkl6WTNkV01EaDZWbFpDVWxaSFVsTk1WVGsyVjFVeFYyVlliRlZPU0dScFYwUkJNV05IWkZWaGFscDRVa1p2ZVdSWFRtNWtNVkp1U1dsM2FWbFlRbmRXU0d4M1dsTkpOa2x1Wkd4WmFVbHpTVzFLZVdJelpIcGFXRXBRVlhsSk5rbHNaSEJpYlZKMlpETk5aMDFVUVdsTVEwcHBZMjA1TTJNeVZubFViVVowV2xOSk5rbHRUbTlqYlRsMFdsTkpjMGx0U25saU0yUjZXbGhLVjFwWVNucGhWemwxU1dwdmFVMVVTWGRNYWtGMVRVTkpjMGx0Vm5WWk1ERjJXa2RWYVU5cFNtcGFWelZxU1dsM2FXSkhiR3BUVjFGcFQycEZjMGx1VG5CaWJXUnpXbFpXZWxwV1VuWmhNbFoxU1dwdmFVMVRTWE5KYld4NlZVZFdlV015Ykhwa1IxWjFaRVY0Y0ZreVZuVmpNbFZwVDJwRmMwbHVRbWhqTTA0eldrTkpOa2xyTVVsaVJURldWbTFqTUZrd1ZtRlZNREZIWTBWS1ZVMHhhM2RWTUVVNVVGTktPU0lzSW5KaGQweHBZMlZ1YzJWU1pYRjFaWE4wSWpvaVEwRkZVekJwVFZOTlFXOTFRMmhuVTBWUVFYa3JTRk5HT0N0MFVUWTJja2Q0YTFKMVVYbHNTVFE1ZVZadGQxbFJRV2h2VVd4elpIcGthMHBJSzA1bU5UQmlSazFtYmpkNlIwSm5Ra2xMUjFkblMzZEhUVUpaTkdkeFEwNXZaMmhEWjBOTlMwWkhlSEJaTWxaMVl6SlZkV1F5Ykd0YVdGcHdZbTFWZFZreU9YUkZhRUZZUW1KcldIcENTVVZvYjNOSFRYcHZkbVI1Y1UxSGMwRm5iMUJ0WlRKb1kySXlRMWxvYVZwM1pIWndlazQzYTFKd2NrOWFObWc0Y1ZWWGNWUk9VVE5oUkdacGVUUjRZblp1VFM5cmNTdGFUMUJZV25sUlkyUlJVR3RpUTBoQ1ZsWjVZM0J1Um1aRWREaFhVMXBWVDBGelR6Rm5aMWxyZG5JM01FSkZNbnB4VUdzellUQjRNR2h6Y0docFFrbHpVV0pSVmtKTVoxcE1kWFZXUzJKelExSmFjMmxOWjI1WU5HdG5ORVpSVWtwR1F6WlNSSEZEV1RKR2MzWmxiVXN3WjNKNGExRlhjRVZRUzBWa2RFbGFiWGhUV2k5WlMzZHlMME5yYkdGTWJESTBhbW8yUlRZMlEzQkxkamxhVDBsMVdtUXJPSEZUVDJWdFRYSlpUR1JSSzBORE5sZ3JOVEpWYVVKR2IwMUJXbkZHUVhacWJHOU9jR2czZGtaWWQyRXhTRFIzUlRoeFNrRktVMUl3Tld4bEswUk5iWFozVkVGNE0xWXdaM0JuVWxOdVR5dG1iakExTW5KS0t6UjBVakJyV0V0NmREaDRObUZ3VDFKd09FdDZTRkZJVnpkSlYxY3JkbFYzWVVGMFNUUlBObVJITUV4VGJHWmhhVmRvYTFsR05YZENZbEIzY3paVlVsSjViVkpFWldod1JWUnVXbFZ4YkcxYWQweHFRM1pwTlVGSFkxaHdOa0p4VEhwaFQxWnNWMUkyZVd0V0wySndkMUphZWxkSlRtdGtkRUZDTjNKdU1rYzVNMmczY3pSWVJsQm9Vamh4WXl0V1RtVnJOMFExVkc5MFpGTnVhRVV4ZG5vclEyOUpMM2RTTTJRMVRGZFFRMlpTU25kc2RWQkhWV3M1V1d4alRHUlJPRE5tWlRWM2NVRjFibTF5WlVsaVZtcDBVbkJ6Y0dSa1dHUndUbVUzVlhwblRGQXpia2x5Tm05VE9WcG9TM1pPYVcweFdFNUdObVp0ZGt4TFUwWkZVMWR2UmpaVFVDdHJkUzlEUWtGNFpIUkNWbFJWZVUwMWIxQm1OVkVyTmxkRFNWVlNNV2RXTjJSV1JXeElaR1pIYXpONVZTOHZUMkZXVVRSVVFWUmhaWGd6U0Rsbk1YTXJRVTh5YlhadVZubFdhMU5HUkRabVYwNWxOV2RZSzFrMk1TdHhaV3hzVkVaVlUyOTZaa2d6VFd4M09VZHhUa2dyT1c5dGFuZEhLek4xWlRSQlZUaFpjalJsYjFsaFJWbzVOMUkwZDBod1NUWlVjVUprZUV4clZYcHZaMFI0WkdSQlUzUnJUM0JaV21GMVNWWXlOVXRXZFVoclJGWjVOVmhuTlRFNFVFWnJaaTlHVWxWM1NHdHFiRVptVHpkTldWQlBWalF3Y1M5SE9ERkxRMnB5TlZGRVprdFlVbE12WVRkR1kwTTBXRnBUYVU5NWVXdEhkV0pvVEZaNUwyWTRkRUkyYVd3M01ubGlVekpsWjNCTVRsaFBlakpUUkcxaWRHVkVjRkJXYmxkeFZrWlRRME42VEV3cmJXeHRNR1ZuVTFoSmFURk1SSFZHSzI5S1owOUNSR0U0UjBoa1kydGphSFZ4UWtOWmFTOUJOMHhhVnpOaFNGQXdRM1JPVjNkUFFUQTRMekowVjBoWk4waFhUQzg0ZGxwTk9HOW1ZMVYzYm5OTFExUTNWMnM0VTNWV1QxbHpObUZzS3pZd2VrRnlUVWxFZG1aNFp6bFNRMlYwT1dZeE9VeFNNbGRHWWprdmFURnZha0pWWjI5UU9VVTJaRzE0VWxvMlZIWjVWbVI1Ums1blVURldUbVYxTjBob1VWbG9VRk56TVhkM1pVWTBhMkp1UldGVGVrMXRaM0EyTHpKUVVWVmpXWEJtYm5WT2FYSlhVV28wTlROMlIwbFphakJoVjI1R1NEUjBNMU54TkVjeVJ6ZGxjblZXTmtFM2FXVkdUSG94UWpKdFRXVnplRWgwYVdOWE1tcDRjVlFyUkdGalYzWmpjVWRQZG1oSWFGbHhOM1JhWWtkbFdHaE5OekJYZDNCT2J6SkNPVWREYlUxc1MwTXhhSGgwTVZZMmJERlNZMHQ2T0VaMFoyWXplVWRLUTAxMmNqUTVTVGR1ZUdsRFJHVjFPVVpyWkRSbE0zUnRSemxtYWxONldrdFdUVkUxVG5wVFpuY3dObTlUU1RseGQyMVRSRTlFWjFac1JEY3dWa2x0VldSNU1rTmtla3BuU0ROSWFrTjRhRFF4UzBkb1dYUnBjMEpoU1hvNVIzZEdVbGc1UkdjNVpGQm5VRVp0UlhObmN6Tm1jMk5FY0VsNlZuQnphbXRrTjNKNFlUSTBaMGxyWTFCR2FWbERkRXhUTmpGTFdVaGhhbkp4U0RWd00xb3JXa042TlVWWVUySlVlRTVGWW5KUE9VOWxiakZZVVZGNWFVbEhZazAwTjB0RlNGRnZVRWh3WkdjMlpVTlhWVWw2YzFGcVkwbE5aMWx6VWtsS2JtRndkWHBPVkhjellVaFNVWGt6Y2s1VGFrcFZlakUzWldsMFkzUldPRVJQVlROUk5IWkZSa2xPV0hGM00xUTNPRWhqTUhKWVluSTJZbGQyVVVGWksxUldkbVEzVjBwRGJsSklhSGQ1U2tGVVVraFhObFZGY0haNU1UVlVaemR0TkVkR1VHUjJRVmhwWVV3MmVrcHlXalJEYURWTGJFWkZObkkwY0dGQ2EwZFNWWGRuUVdaaVVrMVVRVXhIZFVOblZEWXZkMjVFS3poVFRETnpNVlpsVEhwNFYxWmljQzlxZDFKdlQwZGtUWFZoYWtRclEyaHpWSEZzTUZKUVFUZHdWMVJZZEhoM1MwMHlkMk51YVdOTGIyRjNUR2RVUXpCaVVsSlplaXNyZWtKdk5WQk9TV1JNYkVkbmJWVjNNblkyV1VaRlNXdE1TSGhEZGk5aE4xUk5XRzQwU0VwV1duZGxaaXRyVWxKMU9GQlpWelJQVFhSeE9HcDFkR05vT0dJeVJHaG9iM1UwVjBwSlpuUkpjVzVFZFZwd04zTldhSGQ2TTA1dFUwcHlWa054V0RoR2FWSmxRVzFIWm04NVJ5OXNlbXRUUmpsNWFGRllUSEJQS3pFeVYzTmxPSE5aZDFOVlFtcDJOM3BKZFd0SU9HcE9TRU5ZY0ZOTmFHRmhhWEJ0T0dkV2NreHdSMVJ2VWtoeFNVbEZSVTlKYjBkRFVuSTBkV1ZyYTBJeFJrMXZhSFZSZVRkTVFXRjJhbWRRVFZGT1QwRnVUVVp3YUZNclEwdHpaMHRZU2pOamJEZFhOVXB4Wm1WTlRsaEJSbmx4Y1hFNWFEQk5kVWQ0TUZGSVVrcHpkWHBoZVd3MWNVTlBWMkpFUjJ4MlpUWlJSbHBXTkhGV1dWbGthMGcyYjBwR1JUbENRMHQ1VW1selFYRkhMMkUzUVVNeFNIRk9kVUpVWWt0SGJsRkhWVkI1UVRnNU1YcFFja3hsSzA0eWFqRnhVRGxQTjBFMlNtNU1MMVpKY0RGeFpqbEZRV3AxWTFsQmEyRk9hRmhaV25rMU5Ib3lWbFF5ZW1OUlMxRmxSamhqY0c5TlZIcHJVamRtUlZwYUwxRkRZbmx0UzJGbWNXMU1VMHRTY3psSGEyTXhhR1JVTkRWc2JIWlBWVU5wVmxVclNUaE5jMEY2YzBoU2RFaGtPVWx2UkdaMlJVYzFUR1p4Tmk5RFRXWkVkalJ4ZWtGRlRFd3hVRXc1YURWaVZUQXJSaXRsY1d0YUwxTXJlVEo2V25WcVpuTm9UMU0yWW10QlYzbFRlbUlyY1UwM1RIZElPRGR4Um5NNVpraGhVVEpHYUZSbFpsUjNPREp1U1U1TGNWRkRlSGR5U1hOaU1ucHBiazV1ZUdRMVVIaE1Rek50ZDBkdlQwRlhNa1J0UVVvMGJtTndOa1IzTVZSMWIyeGhiMHRuVUVsQ00xRm1hREY1UkhwSlUwTlpZVWt4Y0hOMlNHRkZTMEV6T0VkRFJWaEJNWHB3UW05YVNFZ3lia01yYTB4V1RWcE1NMkpwUWtoUlN6TnJlVVJhYTBKS05rRlROMVJvUnpKclNVVnBMMlJXTWtaR2VVUlJhekpvVlZsTldYUmhVVlUzWlM5RUt6RXlOSEF3V2taQlkzTjVZazF2V2xwb1RWQk1XRkJOUldGQ04wSXpNMUZTUWt0Q2IzaHhNV1JKYkdGdVJFZHBSaXRuV1hsV1NFcGxXbWRPUWxGRU5qZ3JWV0o1ZHpGbGVqVndiVTVMVUVwQlZIbHRNMUZHV2s1c1ZYSkdNSFJMTjJ0alNXSjJjV1Z2Um1WV2VXc3JVM2g2UkZOa2VFUlZVakV3UVZaaldrTTRkVXQwWjFBd1MwSk1VRkZLTDJObGEwRTFaV3B4WkhkU05HdHRWRlJ1VW1sRFIzbGlObGwwVGpnNWJVVnJUMUVyYjFKNmJYTjViVE5OYzA1a1N6RlljbTFvVlZKQ2NrdHFWbXMzV0RselYwWjZaa1ZJYW5aM0swUkZjbUpsTkV0dk5WRlhhR1JrVTFOM2FtdEpiRWw0T0RBM2NsaFFVMkV2YzNGc1RXaEJNSEJuTVZwV1pWZExXVVJwUXpCUGJERTRUMHhSUXpsdVpXNUdZMlZUTDB0V1ZuVkdVbEY2YUVwaWJVZEhWRWM1Y1ZWMFkyaEhRblZ4VjNST2JEQlJNM2hWTUVkNFJEQmxPVGRJY1VjME5HNUhlbkprZVVaV1RXaHBiM3B5V0RncmNFVkVhbTFMVkhwclYyaEpTVUZJVnpKaVVXcEdTbnBOWml0amRHUm9Xa1pZVURkQlQzTXdVRXBpTkRNdldqSlhXVE0yZDJkTFMxRk5keXRyVkVsdFl6QnJSMlpOVFhSNlEwNXJSRFU1ZVZsT1drUTFkbkZRYUhCc1FsVnNZV3BJTjFCVlpucFdaV1JDV0doV04zWXZhbEZXT1dsVlNuUlJOV04xTkV0eFdrWndhMmxOTTFSWWJHY3djRlJKYUZWSlN6ZFBZMHhMVjBJMGFEUkdNa29yT0ZoME4xTlBRM2RKYTNOb2VEWnNOblJtWW5WUlNHbDZMM3AzYkRNNGRqRmhObVZaUzFkbmNrbG1iSEp1ZEN0U1UwMHhjRTU1ZG5waEwwUkhWVVZQWWtWMkwxcEZjbm8wVkdKM1pHeFVNWEI2WmpNd1ZFMUVPR0pHUVdSdWJuSjVhamR2U2xSd05sbzFXREpXUjBkV1VtMU9Nbmh2VDJkS1FuRnRUME5qVHpRMFlWZElOMnhKUmxaVWIxVTJZblJSWW14dk1WUjJUV0psVGpKVFZVeGlUa2hzTm10M1ZGZGhjbUpNUlZkcVJpdEdUemN4UW1WeVozTmhSbXAwWnpKVlYxbG1jMUYzZVN0U1IxZFJaSGxWWjFNMk1XeHBkR2xtYTAxV1NtUk5NMVJ5VmtwNFVYRTBLMlJyTjJ4VVZHRnlObFZwY0ZaTVVUWjBRbWhIYTB4WVJTdEphVGNyY21RNWR6YzRSRmRwYUZKclZWUnZaa2N4YXpsWk1FRlpXSFZKYlRSU1JESXlRbEF6YUZSdVdrTjFhVk13TUdWcVRqZGlLMGxsUjJGT1owTTJSRWcxYlVaaFdGRTNkREJPZW5jek5taENUMHBRVTBkdldrOVBla05uT1dSc1JtWnlWbTByY2tZeGFXcDBjMmRvVTFCVU1pdGtZVFo0T1c5dk1WTkdkWGR3VlhndmJFbHVRVGw0UzJjd09VcFJUbmRKUmpWUlVsQTNRbXhxTWtjeFNWQmlXVEkyVTFaU1JVWjFSRUpTUkd4TlduQjNNMUJWTUdJM2VubGlZemhDVDNkNVpHWmhXR2RVVEVSTVJrVk5iVWd2Vm5wMVYycEpVbWhYTldkbGIwb3lWalpYYmtwSmNXMDFUREpFVEdoUkt5dFhWV1JuWnpodk1YZFZZWEZFYVVOVE15OVRiV292T1VwWGJWRnRabk5tT0cxQ056UkJTbEZtYmtkRlNXdElUV3A0UWtFelYzRjJjM0ZCYkdkNlkyRjRiM05OYVZkVWNXMTZkV2xwUldkelRIUkpZVFUxWlZab1VqUlpNWFZ3VUhscmVEZHNTVUVyZFVSQkx6Tm1aMUIxTkZONGEyWnhOblFyVVRWM1kzUnpPRTU2VFdaU00waG9jVVZLTkhkRU9IWlVVSFZWVm1zeUsza3dOeXRTYkZwRWEwSTJNakJoVW5kcVZUbEVXazVMUWtsQ01FUlFOMkZ1UjBGS2FVWlhLMmRhYTJRMVlVeDZhWHBHZDJWTlZsRm5lRkZIYzB0cFQxUmFaRkFyY0VNMGJXWlVTVUZ0Y3pWSE5sRmpOMWRCUzFRMFZURjBSREUzTm1sRlNYZFNjV0pFYW1ob1FsTjVURWx0VVhWbmNWZERURWREZEVWRVRVaHplWGhEZVRCNE1tcERla295UVRVck1HOUNiVVppUkU1emNFUjBRMEZRT0VaV1lqWlRZVEZpVGlzckwwVlZTekZrVEhSU01ERmhOemR5Y1VObVFtSTVTSEpXTVd0M1oyNUphWEJJTWxSdGFXcElTMWxMTDJ4V1dGcDFVbkJ2TTNSRllqWmtXRXRSTDNSQ2FIQnZjWFJXYlVsWVNVWmtXWHAzU1dWbVoybGplRzFKYTBaQlFuWlhha0ZtTVZGdlJGTlFUVnB0U1VGeU15OHdaVTlqYWxOU1pHcHVaR2g0Y1dWeVQyaEVVV0ZITld4WGRVcG5iM0ZaSzBkV1REaEpTRTQ0WkhZeFdVVk9LMnQ0UVd0Q1dEQnpjV2xpWTIxdWNrZEhUMDAwSzNSeFRsZGlaVzl4VGxwTGJUTk1XVEE0VjIwcmNscHlWa1JIV1d0UmFFNTRZV0ZMV21wQ1Ftb3ZOM2hxSzFsb1JrRlVTRlIwTWxBelZIVXdaa0Z1TlZCU2RsZEpPUzltTWtVMGJFeFpTalppY1d0Rk4xZHdUVmdyYldvNGRUUkRRUzlMZERWMVZUUXdTRFJIYVdZMEsyRlhUU3RCT1N0emRtMUVhemx1VWtJMFptOVZkQzlGYlRjMFRIRlhNRzV4WVRkRFJWazJTSEpETlZOTWVXdDRLMjVaZEdaNWQxcExXSEp3TDNaM1JVbFRVVFpUWlVscFltVm9TMDB2TlRjdlltMU5Za2gzUkhKWE1FeGFaVEo1WlhseWRrVXhPRWxUUVVaQllTOVhUMnBCUlhCc2IwNVRabTFXT0ZkVVpXeERabnBSTUdSbE5rcEtXaTlzYmtWaFpHUTRNVzlyYVZvMFkyUk1la2x1Ym0xM1RHVnFaRzVOVVN0ekszSkRkVFZtWVdFeGJIZEhjVE4yUTBkR00ybEpNMHBaSzJacldUaENUbXRWVUcxUlFVbFplRWd4T0hBeGFVTnpXaXR1WkdwaFVtNUhOMVl2VEV4SFlubDBlVEJZUlhORGFYcGpURWhrVEV4MFUwUk5aSE5hTUZKREswRk5aRGhSWVdSR1NGUXpPQzl4WTJka1F6WnRha3hxYjNCMmJYVXZUR05KZVVWaVptbE5SV2R4ZUVaaVkxWTJkVUV3WmtWb2IwOVdaM0ZGYjJweFpIUm1VMk5EVmtNM01sbFlkbkp4UlROM1kwSk5LMFZvYmtWSmJVcDZjMHBvYzI5S2EwSm5SbTVUUTAxMWFIUTRSVk5OV1hScU1YVm1TVGhsY2psVmNYb3pkVVJCU1cxM2VtRndRMVIzYldacFpsQXdSbEpaWTJ4RGFVY3ljVmxsZDJaSk0yTnVObTVQWWpkS2EwRXhXV3hvZGpsRFYzaFJVVTVJU25Kb1lYaDBVR0pEY2tGUVVEaEZUMU0wYTNJeWFVdHBORGxaUkM5RWFXUXdVRVpHVlVKbVpWRjBkbU5PV1RWeGMyMTJZelpQWW5KNVNWTm5aMGhZYmxoWWEyUXhXbHBJVGpkNU15OUZLMVIyTVhoVFNERTVVbk5uTmt4b2RGRmlWWGhFY1VwSmVFcE5RMU5NVDJjM1FsZ3ZaemsxWjBkeFNtRkVXV1J2VldoTlpXaFhiVU5MZDFwTlJtSlJiekZoYUhJNVdWUjFVbEJhZG10MlZqZFZPVm80YnpWeVRsSlVNU3Q2WVhSamQzQjJVa0prTTBkM1pFbDFhbmxIYjBWNk9GVkpiRFpPVmpka2ExcDRWMkl4V25OTGVDOUlTSFZtZFZoNU1FMWxWSE54YzIxUGFFRkhXa3QyUzA1NmRtUnRPVXhTVjFWeGFIWjNWbTVWY0VOM2R6UnZielZpWmk5RWVGZG1WVFpMUm5waE4xcFZlVTFDYVhWaldHVXhOUzlXTjJOR2FpOHhOMHBXWVdWamJVbDJlQzl4VEhKQmMyOVdNbUUzVmtZNVpUbEJNMGh1WlZaUFoxUXZkRFozUlM5QlYzTnZhRU40VlZaNlpXTTBWbEF4TkhscWREUnBVV3BwTDNoSE9HOWtXVGRoY25wU1VVbG5TbFJQWWtoa2FqQXJRVWQxTVVKSUwxSkxUa2d5UVRKSFkyaE1UWFJGUkdoeVQwTnZjemQ2YnpWek5sRmxjWHBZY0ZCNVQwZEJVM2RtTUUxYVNFRkNhelJhZUhSRWJWVlZXSFpRYm0xSVFWZEViMGhUZVc1T2FXOUlOR1ZhZUdkc05uQnhlVEJyWldGc01uaHRNamROUm5KVFkzVlNUbUpuWm1sVFdrSk9kMnBJVWpBNWVIRmtkMWwyTTNKelMyMUhNMnBwYlhnMFNrdGpjbkJCZERCbU9UbFhSR1l5Wm1NM1VrbEZhM1I1V0ZaUlZXWlJWblZzYWxKUlRWSkVZMkZzYjNVd1NUaFlNVGwzZG1FMk1VWjFSVTV4TW1OemVGa3JUV3BTTjBnMVJsWjZjakUxVWtVeFNYVndjVFpxWTFvNGVXNXVhMWRRVFZsU2RUaEpSSFpwU1dSWlFtWTBaV0pEYW5BM2NHbHZPV0pWZGs0cmNTdEJWMVpQUnpocVNqVTJNbGhOZW1OdlZuSnJWWEpKV1dzdlJTOHJkVE14TkdaSVdpdEhaMk5wTDFKT1puWTNORzkyTkVzNFQxaDJNMjVuT1dwSVYzTmpNazB2WTBaUGVYQnZORlZYSzFJMk1HbEZSMnB6VVcxSGMweE1UMXBuZHpoeEsxQllNazh2UmpsWFoydDZZMEp2YVVGVlYxWnpWMGxHUkVodFRuRlBUV1ZOVUc5cmN6UTJiMU41UlZWSVpISnRPVzlLZUUxSmVFVlRZbGhWVjB0V1pGWkpabE5RU0d4NFIyRTNUeko2V0V4UVpqZzRaVlpsWlVSUE5rTjBRVXBPYTFwSk1qQm1OVVJPY21GVGJtWjNaMU1yZFdwUVJscG9XWFYxTUZOeWJYcFhUazk2YVVoYVVqZEdPWFJ6TW1zMWIwMXpiM0JLUW14WllVSnZPQ3RqYVdwMWFsTkhWVXByUlZKa1VXNTJZMUk0TUVSWGNXaE1PR3RvZFRCVU1Ha3JkWGxJTUZaeU5IUXpiQ3R5U2s5clMwUm5Vbk4zYnk4d2REZ3lTRWcxVWxOVmVrUkNWaXRMWWt0TFFVMHpNbTltV0VsVk5rNXdlV1pzYm5aRU0yTnJlSHBwYldwVlQyczFhbEpvVldjNWFXeFFiRmxDZFZFeGRGQXdVRGRETDJORFVsSlFWM0ZsZFdSNU56VnBZM1Z5YWt4MlRVWnZVVU4xZDBJMU1XRXZSVUZMTVc5TWFuQk9VVTVwTTNoaFIzUXZURTlRWlVaV2EyZDFXVTltV1ROWlRtaGFUSHBYVUhOUFVVOVFRVEJzVjJOVmJVazRVSGRLSzAwM1QwRlZUMkZRWlhaTFJrOVZUVWRvUkhjd2FIUm5LekpzTkhGdVpsRlBWRkpOYVVWREsyRlRhSEphVG5KeVdYcElWRTFHWTJsMFRqTnZjV2RCU1ZodmVHdFhRMWwxU1c4d1dYSkZUM3B3TjFsT1JURklWemxhYTFKalJFRmtjVUZrU0ZrelNEQXllRzR6Y25aV2RYVnphakp5VURaQ1ZWVXZRa3hpWVVoclZGQmxRMUJRZERWeFVtNDFlbFZQWnpScVYxSjBjbVJEWjFKUlQydEhhMWc0VTNoRmFWcFphakpDU0VKNGMzUTRLMmxqTW5CR2VHbEJlSE5hUXpSbmFVeGhUUzkyY0VSU1QyOHhOemRoUWxoRFFUUnVNa1poZURKclNUbHNUVTVaTkhsTFZVcEljMGhCTld0Q1JFVllaMEZwTmpOcFkyZ3dPRUZ5VjIxc1NFSjNaSGw0WkUxSVNqZHpNSFpLWjBad2VVcDRUMkZ4VTB0T2VpdEpLMVoxVWxoNmVHeE9aMWw0V2xGWlpFY3dNVVZrWlZWT01uRjNaVmgxWkU1TlJqbEVXazh6ZEM5MFNGRnJTRlZpSzJObmN6WmpkbFIxT1Zaa1kxQmtjVWhxTldWS1NrOTZLMU5vZUZndmJtRlZOVGN4TlhvMlkyOXlURkZ3VGpkbVJDczNNR3QxY1VSV2RsWXZkSEJrYlc4MlZsWkZlV0o1VTJkek1FeHFSWGRNYWtrelRWUkJkVTFDY1VGQldFeFplbmR5ZFhkc2R6RjVhblpoTkdSRFEzZFJUVWt5YWt0RVZ6aHVjVEpwVjFoMllYcHVkM0Y2ZDBFelNrUXpNbXR2YW1Zd2VFaExiRmx3VXpBclEyRTBNMjh6Ym1kQmNYWnBNRzVYVDBsT1RWUkJkWHBWVWtWWmQwTlRWbXhSTWpoWFdrcFpTM1JsTjJoeE9YWXZRemx0WnpBeFlqQk5lR1p0VVZKWlYwMTJlbmc0TlN0eVRrVmtSamhKV0ROWE5FcFdaVEJ1YVRJclJGUmtkVGhWYVZGRE1GWm9ibVZUTVVGeFUyaFJRVUZCUVVKQlFVRkJSa0ZCUmtGQ1EwVlJNVUZETDFWcFNuZHhlWEJpUlZWQlFVRkZRVUZCUVQwaWZRPT0iLCJhcHBUeXBlIjoid2ViIiwiYnJvd3Nlck9TIjoiV2luZG93cyAxMCIsImJyb3dzZXJOYW1lIjoiY2hyb21lIiwidWEiOiJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXaW42NDsgeDY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTIwLjAuMC4wIFNhZmFyaS81MzcuMzYiLCJkYmdTdHIiOiJqOjYyMSxiOjgyOCIsImNvdXJzZUlkIjoxNTA2NzgsImxlc3NvbklkIjoyMTc2NjAxfQ=='
    Now when I run the script I am able to generate License request, Session ID and also License response but get the error
    [-] Failed to decrypt license: [500] The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

    Full output is attached below
    Code:
                        Script Version: 5.2
                        API Version: 5
        
    [+] Generating License Request 
    [+] License Request Generated
     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
    [+] Session ID: 3735393731324530463530413938344630313030303030303030303030303030
    [+] Sending License URL Request
    [+] License response:
     ajZoeVdwUmhVTzlwbElSZERHYXhLMlQ0cGpQWlpNWVJrdkNJUFJ2ajNocTNqQXZpanpDN3c1djNaNjFEQis1ai9ONlFVYkwxS0owWnBPOVpYMkdxSEpYUDJxTDFnUEl6VkRlT2lxc0hZOGVMSkVZK2dwMXMrcW5tTlk5bklCTkdDbldPcGNUaWRzM1RzQTRNZ3dScDFSUHNaQnVrbmhPakZlQmQrNkpvNFZBQ2dWTy9yalR0emMvU3FuWTd5aWVvZTlRREFOSzhXcFQ5a2RJWlNqY0FabW9aNEhxcUF5RXlvbFJnV1RuOWVkcWU1ZkphT29ub0dzZVAyTnNUMzIxU1RrbnhpQ2V6YzJuaUNuZ3dwZmZHU1BoV0c5L05JTEFjbW14NmNKWVY5MVdnSUloR1drV0grbk1GNDRMWDZhc2srRXA0RkV0Qk5paW83ckJHMk9iMzZuVzJMY1JoTWR1NTN3MFBVRm9LbVhHYWNBOVdpR0dQWXJveTJ1KzZ5eWgzUDJSakErakhWOHlaUGNHd3VNTlB1cVMvZTVldGVacDJ1VExwWk1CY1Z4L3VOemJoTnFVcGoxaXVIa1Q5Yjh0VjhrbzU3LytKQ2hLRDM5c3BoVlp4RTIzVncxaUt6aElYSElRWEs1R1p4cTZuUzFvYzJjbDhoMXdNYlJnaURLenYvTFk2RW4yNGVRM1VFVnFnQlNVN3AxUUpzb3NSdWtIV05kY082UlB0ZGh6ZW5qSWtoVTRWUS92Nm9uL01lSU9HSmVDVFl3Qkg1NWplbjkrZkQ5LzdWdzR4ZGhFWXBWR0JtVkFTMHp4VXhSaz0=
    [+] Decrypting with License Request and Response 
    [-] Failed to decrypt license: [500] The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
    Please let me know which step I am going wrong and help me generate the decrypt key.
    Quote Quote  
  2. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    I think that the payload you added was generated using the browser's cdm. But when you run the script you're using another cdm. It looks like you need to make a custom script where you generate the payload according to your own cdm. You can't just use a basic script with no modifications and expect it to work in this case. More in detail explained here:
    https://forum.videohelp.com/threads/407216-Decryption-The-Dungeon-of-Despair

    I tried looking for the right license request and found this:
    https://drm-u.learnyst.com/drmv2/lgdrm

    There are 2 POST requests done to that one. The second POST has a field called "licreq" in the request payload. The value of that field is also a base64 as the original payload. When decoded it has 2 fields: licenseRequest and rawLicenseRequest. Both base64 and when decoded, licenseRequest has some repeating information about your account and lesson/course. Rawlicenserequest may be the challenge generated by the browser's cdm??? (I don't know for sure). When you decode it, you can see the string "license.widevine.com" in it.
    Quote Quote  
  3. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    I wrote a custom Python script using pywidevine to generate that custom payload. It still doesn't work but at least it gives another type of error. Initially when I tested using the browser's generated payload it gave this error
    Code:
    {"errorcode":30,"txnId":<TRANSACTION_ID>}
    In the context of transactions, errorcode 30 means: "The customer's card issuer does not recognise the transaction details being entered. This is due to a format error". Which kinda makes sense since the payload is generated using the browser's cdm and you're using another one. So I then modified the payload using my own cdm challenge and it gave another error:
    Code:
    {"errorcode":54,"txnId":<TRANSACTION_ID>,"errorreason":"Failed to decrypt license"}
    And for this one, errorcode 54 means: "The customer's card is expired. Contact your customer and confirm that the correct dates were entered and that there were no mistakes". The errorcodes are different now but they both mean "400 Bad Request". So either I'm missing something important or my cdm is kaput (wouldn't surprise me since it's emulated). This is the custom script:

    Code:
    import base64
    import hashlib
    import json
    
    import requests
    from pywidevine.cdm import Cdm
    from pywidevine.device import Device
    from pywidevine.pssh import PSSH
    
    
    def bytes_to_base64(input_bytes):
        return base64.b64encode(input_bytes).decode('utf-8')
    
    
    def dict_to_base64(input_dict):
        return base64.b64encode(json.dumps(input_dict).encode('utf-8')).decode('utf-8')
    
    
    def base64_to_dict(input_base64):
        return json.loads(base64.b64decode(input_base64).decode('utf-8'))
    
    
    def string_to_md5(input_string):
        m = hashlib.md5()
        m.update(input_string.encode('utf-8'))
        return m.hexdigest()
    
    
    LICENSE_URL = "https://drm-u.learnyst.com/drmv2/lgdrm"
    PSSH_VALUE = "AAAAOHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABgSECjB0pNOgg9OIo2hiw6uICRI49yVmwY="
    WVD_FILE = "./cdm/device_wvd_file.wvd"
    LICENSE_HEADERS = {
        'x-lmul': '<X-LMUL_VALUE>',
        'x-lrtoken': '<X-LRTOKEN_VALUE>',
    }
    BASE64_PAYLOAD = "<VALUE_FROM_LICENSE_SECOND_POST_REQUEST>"
    
    pssh = PSSH(PSSH_VALUE)
    device = Device.load(WVD_FILE)
    cdm = Cdm.from_device(device)
    session_id = cdm.open()
    challenge = cdm.get_license_challenge(session_id, pssh)
    
    custom_payload = base64_to_dict(BASE64_PAYLOAD)
    custom_licreq = base64_to_dict(custom_payload["licreq"])
    custom_licreq["rawLicenseRequest"] = bytes_to_base64(challenge)
    custom_payload["licreq"] = dict_to_base64(custom_licreq)
    custom_payload["md5"] = string_to_md5(custom_payload["licreq"])
    
    licence = requests.post(LICENSE_URL, data=dict_to_base64(custom_payload), headers=LICENSE_HEADERS)
    licence.raise_for_status()
    cdm.parse_license(session_id, licence.content)
    
    for key in cdm.get_keys(session_id):
        print(f"[{key.type}] {key.kid.hex}:{key.key.hex()}")
    cdm.close(session_id)
    Quote Quote  
  4. someone help me get the key for this channel https://www.dazn.com/en-SA/home/2xyjgq7ffrrdck7yi3qc2ixbj
    it's free content(create free login and watch)
    Quote Quote  
  5. Originally Posted by imr_saleh View Post
    someone help me get the key for this channel https://www.dazn.com/en-SA/home/2xyjgq7ffrrdck7yi3qc2ixbj
    it's free content(create free login and watch)
    Code:
    82f8e2a17dac44c0a18f660479349c59:1b144f73e6fefe91cd05f850e2b589d0
    Quote Quote  
  6. Originally Posted by jckzz View Post
    Originally Posted by imr_saleh View Post
    someone help me get the key for this channel https://www.dazn.com/en-SA/home/2xyjgq7ffrrdck7yi3qc2ixbj
    it's free content(create free login and watch)
    Code:
    82f8e2a17dac44c0a18f660479349c59:1b144f73e6fefe91cd05f850e2b589d0
    not working
    Code:
    https://dcf-ak-livedazn.akamaized.net/dashdrm/dazn-linear-023/stream.mpd
    Quote Quote  
  7. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by imr_saleh View Post
    someone help me get the key for this channel https://www.dazn.com/en-SA/home/2xyjgq7ffrrdck7yi3qc2ixbj
    it's free content(create free login and watch)
    What are you using for downloading? It gives me 403 forbidden for N_m3u8DL-RE.
    Quote Quote  
  8. Originally Posted by 2nHxWW6GkN1l916N3ayz8HQoi View Post
    Originally Posted by imr_saleh View Post
    someone help me get the key for this channel https://www.dazn.com/en-SA/home/2xyjgq7ffrrdck7yi3qc2ixbj
    it's free content(create free login and watch)
    What are you using for downloading? It gives me 403 forbidden for N_m3u8DL-RE.
    Its a Livestream i cant download it or play it on ott navigator or mpd extension
    Same error
    Quote Quote  
  9. it works with N_m3u8DL-RE if you use the full url with query strings and you need to use "--append-url-params" argument for the fragments to work.
    Code:
    N_m3u8DL-RE --append-url-params "https://dcf-ak-livedazn.akamaized.net/dashdrm/dazn-linear-023/stream.mpd?p=web&dazn-token=eyJhbGciOiJIUzI1NiIsInR5cC......"
    Quote Quote  
  10. nice tip ElCap. finally someone find solution! great
    Quote Quote  
  11. Originally Posted by ElCap View Post
    it works with N_m3u8DL-RE if you use the full url with query strings and you need to use "--append-url-params" argument for the fragments to work.
    Code:
    N_m3u8DL-RE --append-url-params "https://dcf-ak-livedazn.akamaized.net/dashdrm/dazn-linear-023/stream.mpd?p=web&dazn-token=eyJhbGciOiJIUzI1NiIsInR5cC......"
    Great news thank you @ElCap
    But it's still not playable without a token like before
    I hope someone has a solution for this situation
    Quote Quote  
  12. Originally Posted by imr_saleh View Post
    Great news thank you @ElCap
    But it's still not playable without a token like before
    I hope someone has a solution for this situation
    the token is how they verify that the user is allowed to watch the content
    Quote Quote  
  13. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by ElCap View Post
    it works with N_m3u8DL-RE if you use the full url with query strings and you need to use "--append-url-params" argument for the fragments to work.
    Code:
    N_m3u8DL-RE --append-url-params "https://dcf-ak-livedazn.akamaized.net/dashdrm/dazn-linear-023/stream.mpd?p=web&dazn-token=eyJhbGciOiJIUzI1NiIsInR5cC......"
    Nice. This worked. Out of curiosity, how can you use N_m3u8 to download from a live stream a specific chunk? I know that --live-record-limit is used to record a specific duration but that is from the present. What if I want to record an hour but starting from a past timestamp?
    Quote Quote  
  14. Would --custom-range work?
    Quote Quote  
  15. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by DPyro View Post
    Would --custom-range work?
    Thanks! I added other parameters in addition to that and works like a charm
    Code:
    --live-real-time-merge --live-perform-as-vod --custom-range 02:30:00-04:10:00
    Interestingly, it warns that "sometimes" the audio/video may not be in sync. However, I suppose it can be easily fixed with an audio delay setting when remuxing to mkv with MKVToolNix.
    Quote Quote  
  16. Feels Good Man 2nHxWW6GkN1l916N3ayz8HQoi's Avatar
    Join Date
    Jan 2024
    Location
    Pepe Island
    Search Comp PM
    Originally Posted by Indranik View Post
    Now when I run the script I am able to generate License request, Session ID and also License response but get the error
    [-] Failed to decrypt license: [500] The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.
    I inspected the license request a bit better and tried to understand it. There may be actually 2 license requests that are dependent on each other.
    https://drm-u.learnyst.com/drmv2/lstdrm
    and
    https://drm-u.learnyst.com/drmv2/lgdrm

    If you block only lstdrm, an error is shown.
    Image
    [Attachment 76622 - Click to enlarge]


    If you block only lgdrm the video is trying to load but remains stuck in a gray screen. No license failed error was displayed. So this makes me believe that the 2 license requests are somehow connected. The payload of lstdrm is almost the same as the payload of lgdrm, the only exception being that is missing the browser cdm challenge ("rawLicenseRequest"). The payload of lgdrm roughly looks like this (base64 decoded for relevant nested structures):

    Code:
    {
      "version": 409,
      "schoolId": 110998,
      "studentId": <student_id_value>,
      "contentId": "28c1d2934e820f4e228da18b0eae2024",
      "contentPath": "110998/c53dc679c839f5cc51345d3357b1745c/8f8c6c8de93f6db0eb49d0933a67ec7e/33881397041cd45dca1381a1cdd92474",
      "md5": "<md5_value_of_'licreq'_field",
      "encAlgo": "un",
      "isPaid": 1,
      "licreq": {
        "licenseRequest": {
          "schoolId": 110998,
          "studentId": <student_id_value>,
          "courseId": 150678,
          "lessonId": 2176602,
          "mockTestId": -1,
          "questionId": -1,
          "contentId": "28c1d2934e820f4e228da18b0eae2024",
          "isPaid": 1,
          "messageType": "unknown",
          "lrToken": '{"alg":"HS256"}{"uid":<uid_value>,"sid":<sid_value>,"exp":<exp_value>,"typ":4,"lok":"0000","tok":"<tok_value>","time":<time_value>}...<bytes_content>',
          "appType": "web",
          "browserOS": "Windows 10",
          "browserName": "firefox",
          "browserVersion": "<browser_version_value>",
          "encMode": "cenc",
          "licId": 1,
          "singleUseToken": "1",
          "isPersistentLicense": 0,
          "passwd": "<passwd_value>"
        },
        "rawLicenseRequest": "<bytes_content>...license.widevine.com...<bytes_content>" #browser cdm challenge
      },
      "appType": "web",
      "browserOS": "Windows 10",
      "browserName": "firefox",
      "ua": "<user_agent_value>",
      "dbgStr": "<dbg_str_value>",
      "courseId": 150678,
      "lessonId": 2176602
    }
    I tried directly replacing the "rawLicenseRequest" with my emulated cdm's challenge and then updating the md5 field value. Error 54 was returned and it failed to decrypt the license server side. Then I obtained a fresh real device cdm and the same error was returned. I even tried faking the user agent as if the request was sent from a phone, the same problem. I guess the rawLicenseRequest doesn't contain only the browser challenge so replacing it directly with another challenge may not work. Or some part of the response sent by the lstdrm license is needed. Kinda tricky.
    Quote Quote  



Similar Threads

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