VideoHelp Forum
+ Reply to Thread
Page 2 of 2
FirstFirst 1 2
Results 31 to 50 of 50
Thread
  1. Originally Posted by Karoolus View Post
    Originally Posted by marioeivissa View Post
    Originally Posted by Karoolus View Post
    Please use code blocks to post code. It makes everything readable, as it's just a big blob of text now.

    Then also: you declare your variable as nv_authorizations but you later call upon that variable using nv-authorizations so it throws an error because it doesn't know that variable.
    thank karoolus, i did this way also, but i did the other way without nv-auth....., and my l3.py doesnt give to me the keys, so its not this one the problem
    i use also this l3.py
    Code:
    # -*- coding: utf-8 -*-
    # Module: KEYS-L3
    # Created on: 11-10-2021
    # Authors: -∞WKS∞-
    # Version: 1.1.0
    
    import base64, requests, sys, xmltodict
    import headers
    from pywidevine.L3.cdm import cdm, deviceconfig
    from base64 import b64encode
    from pywidevine.L3.getPSSH import get_pssh
    from pywidevine.L3.decrypt.wvdecryptcustom import WvDecrypt
    
    pssh = input('\nPSSH: ')
    lic_url = input('License URL: ')
    
    def WV_Function(pssh, lic_url, cert_b64=None):
        wvdecrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=cert_b64, device=deviceconfig.device_android_generic)                   
        widevine_license = requests.post(url=lic_url, data=wvdecrypt.get_challenge(), headers=headers.headers)
        license_b64 = b64encode(widevine_license.content)
        wvdecrypt.update_license(license_b64)
        Correct, keyswvdecrypt = wvdecrypt.start_process()
        if Correct:
            return Correct, keyswvdecrypt   
    correct, keys = WV_Function(pssh, lic_url)
    
    print()
    for key in keys:
        print('--key ' + key)
    obiously with the headers with the nv-auth.... but still not working
    Unfortunately I don't have access to the website so I can't see for myself.

    What is the error you're getting when running the script? What is the response code?
    do you want my account? i can give you my user and pass, by pm?
    Quote Quote  
  2. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    Originally Posted by marioeivissa View Post
    do you want my account? i can give you my user and pass, by pm?
    That would serve no purpose. We need to figure out what's going wrong on your end, so post errors and script output.

    Also post your script, headers, everything
    Quote Quote  
  3. @shellcmd there arent any json in the response license url, no json in headers mate
    @karoolus thank for you help

    pssh widevine: AAAAPHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABwIARIQrR UnxLzkTrOGBTsX045tFyIGQ1VQMDAz
    pssh nagra: AAAAfHBzc2gAAAAArbQcJC2/Sm2Vi0RXwNJ7lQAAAFxleUpqYjI1MFpXNTBTV1FpT2lKRFZWQX dNRE1pTENKclpYbEpaQ0k2SW1Ga01UVXlOMk0wTFdKalpUUXRO R1ZpTXkwNE5qQTFMVE5pTVRka016aGxObVF4TnlKOQ==


    ERROR
    PSSH: AAAAPHBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAABwIARIQrR UnxLzkTrOGBTsX045tFyIGQ1VQMDAz
    License URL: https://vds7b9j3.anycast.nagra.com/VDS7B9J3/wvls/contentlicenseservice/v1/licenses
    unable to parse license - check protobufs
    mpd url: https://alc-bks-08.alc.cdntv.vodafone.es/bpk-token/3aq@ivvlf0jpwovihrybankhslxkutln3kroij25dzca/sdash/LIVE$CUP003/2.mpd/Manifest
    headers:
    import requests

    headers = {
    'authority': 'vds7b9j3.anycast.nagra.com',
    'accept': '*/*',
    'accept-language': 'es-ES,es;q=0.9',
    'cache-control': 'no-cache',
    'content-type': 'application/octet-stream',
    'nv-authorizations': 'eyJraWQiOiI1MTYzZhYi1lOGViZWRlMjdlZDAifQ.Foir5BlK 8jy7qcaOY1sjEdlESVHMIsXkcrQtSitcm1c',
    'origin': 'https://tv.vodafone.es',
    'pragma': 'no-cache',
    'referer': 'https://tv.vodafone.es/',
    'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    }

    data = '\b\x01\x12 \x124\n2\n\x1c\b\x01\x12\x10\xad\x15\'ļN\x86\x0 5;\x17\x8em\x17"\x06CUP003\x10\x01\x1a\x10vø\x a0{Z}`)O\x18\x01 \x95ު94s\x94\x851\x98{۰4v%\x8du\x06q\x 98a\x95c\x85;4\x019\x01\x98z\x92H\x12\x94\ x1cL\x1c\x8f\x1a:\x03Ow\x82U\x93\nf\x97mZ\x9 7\x91\x903\x13!\x06<=\x9a\x06\x9d\nP\x91~\x 02v@ ;q\x14"@\x19\x97D|\x89\x1dM7\x057p}\x8cxt\x 05m\x00\x01\x06\x99\t`\x16 \x84\n2MCcC3xX6\xadWHj\x82q.j\x11\x96\x1 d\x9bp \x14h0Eݾ\x01\x10\x17\x87rͲK\x95<\x99fI\x1 c?jK\x8eU\x91\a:7\x1c,\xa0 4\x8cV\x91;jK)\x99\x88i=\x15S\x7fA4Һ +\x03)405^\x1bo`\x81k\x85k\x16\x13TC sDp\x0eE\x9a|-ha\t\x0fzP\x86nV"\b\x81\x1d\a\x9fث:" "Z\x9b\x8dYl%^]\x7f\x12y8\x97 \x1c\x19Fz\x14hP\x94\x82̪\x94Jp\x17z-{zG8\x8esS\x87lb\x10J\x16\x8chB\rjY\ x81R@\x98&\x9c\x92pyJ[w\x85\x11<\r\x94&\x84\x01ǰys\x0fjEe˲I\x9 7b\x1d\x11w\x94\x99\x1bk\x00\x85{+ s޸\x12RQ\x0f\x03\x19#\ftb\x93@b\x862g\xa0 P\x8e\'[|aEG\x0e\x1a,`cj"\x1f7E{t \x19&]\x1f\fbm\x1f\x1d4\x830N[\n\x14h\x86L"\x94\x82\x96\x9bc2v\a\x0f@g&i \x9f\x05\b\\\x91R\x87\r8\x86[*E+\x87\xa0\x14p{R_J\x01\x9fv\\x<\x8 aD1\x12m\vw\x83\x04>\x99t^\x10\x10[\\RηO8%\x84UdV\x9f+<9)\x0e\x86:2\x95|6\x8 d>[uH\x11\x97LY\x92\x1eo!=snd4j}\x02ve]I\x88\x94\x99F1Ja\x8c\x9a|f\x89dt]\x9d"z\x83\x99J\x0fl/\x10\x15\x9b]L3dƫQ\fܶ\x8ca\xad\x176\x15km\x7f\x93 Y?\x90Ʊ "\xadJY\x8a\x1eGo)5x?Y7\x80R\x89b\x 1cp8\x8b;t\x8aDf\x8au\bZ\\.\x99\x1e\x81\b \x04\x9a\x8c\xa0S\x8b>3B\x89&\x82m\x95\'NkW \x1cW"\x10\x80j\a\x13_\':^a4\x15\x14\x8a*\x80 \x02q\tN\x01.\x97x\x14LE\x0f?R\x83_\x10\x1 e0\x1a\x14\xa0\a\x04\x98\x931:^Q\x1 b@N f\x9aw\x89>\x92e\x8d+f7B_.K\'\xa0}\x98]\x93*C\x84\xa0\x98,6.Dw\x89 I[2UT\n5$\\\x06\x00\x10]\x14H$\x14\x88Vu\x1c\x90\x1d\x94\x19\x84\ f\x8c^x~I&\x05\x06i}\x80\x11\x8dƳY\x1b\b \x8c\x98\x85\x03\x00\x81\x9e\x04{\x9fڱ ,\x91M\x8d\x1f?\x11>kJ\x14\x00\x00\x00\x0 1\x00\x00\x00\x14\x00\x05\x00\x10V\x85nt_O'.enco de()

    response = requests.post(
    'https://vds7b9j3.anycast.nagra.com/VDS7B9J3/wvls/contentlicenseservice/v1/licenses',
    headers=headers,
    data=data,
    )
    Last edited by marioeivissa; 21st Feb 2024 at 14:11.
    Quote Quote  
  4. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    Why is there code in your headers file? it should only have the headers. The actual code should be in L3.py
    Quote Quote  
  5. Originally Posted by Karoolus View Post
    Why is there code in your headers file? it should only have the headers. The actual code should be in L3.py
    i tried with data code, and without data code

    how can i put code in lp3?
    Quote Quote  
  6. Originally Posted by Karoolus View Post
    Why is there code in your headers file? it should only have the headers. The actual code should be in L3.py

    like this karoolus?

    HTML Code:
        # -*- coding: utf-8 -*-
    # Module: KEYS-L3
    # Created on: 11-10-2021
    # Authors: -∞WKS∞-
    # Version: 1.1.0
    
    # Modified by: CrymanChen
    # Modified on: April 7, 2023
    
    import base64, requests, sys, xmltodict
    import headers
    # 增加了一个第三方库pyperclip, 目的是将key(有时是多个key)快速复制到剪贴板中
    import pyperclip
    from pywidevine.L3.cdm import cdm, deviceconfig
    from base64 import b64encode
    from pywidevine.L3.getPSSH import get_pssh
    from pywidevine.L3.decrypt.wvdecryptcustom import WvDecrypt
    
    
    
    data = '\b\x01\x12 \x124\n2\n\x1c\b\x01\x12\x10\xad\x15\'ļN\x86\x05;\x17\x8em\x17"\x06CUP003\x10\x01\x1a\x10vø\xa0{Z}`)O\x18\x01 \x95ު\x060\x168\x95\x05B\x1f\n\x14license.widevine.com\x12\x10\x17\x05\x17\x12\x04\x86\x8b\x063:/w*\x8c\x1a\x90\x1d\x1d[\x88Q\aeN\x1a!+\x19\x18\x049\x9a{V,!"h#\x85\x0fxzd\x00`\x94f\x14\x8aO\aH4]\b\x19k!*]\x99k19\x17cDH\x90\bo\x19\x90۬=\x9fw0xH\x13pa ]\x9cPQ\x17u\x18\x94>YH\x9bt\x01\f:\x8f\x1d\x9d="\x1eJ&\x96\x8douW\x15~nť\x88T\x17T\x94N\x81\x11F\x7f\x9e\x81F7\x99en7ʰ_\x0f;a\x9dAt\x87ɮ\x00#\x9dŪf\x16<f(\x1c8\v\x9f|\x82\x19?\rAyT%z)n#gKt\x98\a9\x90(\x12\x9a,bU\x97t\x19j5\x91 \x88a\f$\x85v7\x1b\\c;bth\x85;)+!x8\x95So\x95PHK@L\t\x89_ow\x1c?\x11@\bd\x1aP\x1a_/&\x94=EB*vi\x19;\x11|\x9f\x06\x7f\x8bY\x19KJ/@S0\x02\x17ca\x006a>HoV\x12\x1c\x8d\x0fTuZ#\x1dw\x1a\x9d\xadx4\x93\f#gI\x17~\n2`\x1d\x9e9\x1ce\x86dd_\x7f47: \x93%}Cn\x140A\x18*rA\x135\x9bT\x8e\x9a.\x93K\x8dd~\ta[\b8sD\x86G\x9dp\x97\x9aW0K\x05@\x9d\x8d]Ǵ\xad~8a\x02KRick\x03b\x8e\x8a\x91N/\x8e4"\x0fF\x8dz4k\x88&;Z\'Ai\b2\xadTN\xa0\xa0H\x88-Ե\b*1l\x81k\x02-2<Ff\x18\x00\x93\x96@\rnD\x9d\x87\v\x1c\r<\x87]0\x8b\x81\x10~iU\x0eL\x17!\x85\x8b\x19\x93\x9a\x1e\'O\x97.;CDޣo@\x1dF\x97\x95\x98\t\x9d\x95(\x9dd!\x17Qy+\x16\x16\x91\x16\x83*G\xa0lS@wK\x1d\x885\xa0\a\x18o\x16\x97[[K\x12Sg\x8ac\x860JϮ77f\x8b!\x10i}ӫ\x97\x139~\x12\x87]}dT\x14\x13vyD\ngl\x99/qg\x9eQhg\x84y\x18a\'g\x04\x89av`\x1e\r\x8d\x8f\x84\xad\x1f\x87\x91\x16jn\x13]\x0f<q+g\x06\x00\x7fY3R4\x05s(kk\x14\x9b3)@jA-\x95\v[I0F\x8f(@>j<2x\x84G^F\x11lEa\x89yB\x97\x86\x93\x8dt\xad\x83\b\xad)H\x14@\x02\x9f-\v"z]_YBmj\\i?f\x98(\x90\x8e\x010 \x81l[2\x8eƿn\x94u\bL\x93{Eq\x94D?jix\x12\x80=agr~\x14i\x90\x04KktQ\x17-ܣVC+=K.\x0e+\x18N/8\x9fb\a(m2\x96h\x82D\x1ey\x1e{%\x06\x98\x1cT\x9f{{#\x9a\x8c\x04\x92\x90syi\x94 \x93ĨczUHUn_\x96\x936L4^6_\x9f\x9bJgj@x^K2\x19\xad\b{\x89Cw\x9dB\x95hft0^F_\x90\x82-\x00\x8f@\x05\x11\x92(1a\x04\x820"(g\x7f\x80-\x90\x89m\x16\x9c\x02r/%8\x7fyn\x8c>L\x1e\\\x80\vI9A+A6\x9a+_\x88=;\x01hmL`LT_\x9aV3:\x1eSX\x82Z\x9fI\x03X\x1a\r!acQ\x05\x9b\x1c\x11z\x03<\t\x82\x9d\b\x8c\\\x0f\\l^\xad.\x13\x06`\x85\x1fk`D\x9f*I\x92\x0e\x19\rL*\x9e2\x02sW\x85-[U\x10\x10J\x03\ne#S\x89\x85\v[\x8bB\vK\x88\x1b\x84M7&*58m\x0e\x14\aJz\x17\x86\x8c8[\x19UO\r\x88\x9c\x94L\x88\x87|\x983\x85LgĿ-3+\x18\x14K\x1bWEC\x97\x99t\x82\x9a\x99\x97n\x16/\'D\x05\x85\x97X\\c}\x86ƫ-Fqz^\v\x10P0\x82\'u\x11M\x01f6\x95k\'\x7f\x92\x1c\x94\x17\xa0g\x81\x9c7#\x83\ft\t\x92s]$\x01*&s{I"\x87\x8dyRPBV\x8bcөxاx\x97\x06H\x82A\vSp$S\x97\x99K8\x809X\x97k(\x91\x89+nGq>w~\x17K1;ر\x8f\xad\x010;\x8fc\x05\x01ɲ0\\$E\xa0sC:)n\b\x90(+\x82dͽM\x8f;\x8c\x92\x18\x8c\x15\x1e#\tx\x1f\x16.\x86c\x86$1D@Zi\x85$\x9f\x18\x81\x8cQm\x1c\bd\x89>\x1ci$\x18\r\x1e\x83\x1b\x99Gk{\x9d\x06\vP\as\x19\x05\x1bp\x8a\x96R\x13\x8a\x14z\vO\x93)J\x83\x8eh\x12\f*HG\x17ʦ\x99\x9e?\x85\x84\x96\x8a]\x02\x94\xa0\x829\x13C\x90,"\a/vPHJu\x85 \x8c\x04+fi\x89q\x9d\x8ev\x95\x06s\x84;\x87\x8ca\x01\x1d\x99\x80f\n$\x85\x00m\x96Oq~\x8c}\xad\x84mp5\f\x9dt\x9cox7N\x17C{g\x90\x9d\x18|\x965]Y\x13;\a2mw; J\x88[n\x95\x89E\x9c6\x1c\x92Ed[JU/O\x83}.w$;Uĸ\xad\b5x\x05\x9czq\x18wC@\x99%S\x11E9\x00\x1ak#\t\x86\x819\x0e4P\x1bl9{ջ?\t\x7f>\x90\bxz\x98%\x98\v[\vI[zk(D>\aK\x94\x1a~\x158I\x9e\x8eep᧸\x87\x9d\x00\x8bpW;\x1eN\x81\x902>!j|b\x01\x0f\bz\x9f\x1b4i\x17\x86\\u\x019<\x0eb\xadLXXl\x99u\x8c,"zjv\x0e(\'XM\x96\x04\xad\bW"O\x89c\x95L\x8e\x93vE\x95\x95GQ\vZ\x1fdg/n\x8a\x812l\x8f[B\x06A\x8cJe2ΣY\x14}[Z\x84\x98\x15\\\x98\x06kC;T9\x05=,\x8f֦`Tty\x87\x14\x8c\x99`&\x9fO7m\x14\x98\x82\x91;\vK\x02\n\xa0ºEEGw\x0e\rt}N-\x94?O\x8e\x88b5/\x95Z\x1c\'\x1fWR\x86&B`"j/\x01\f\x95Dw\x1a!\a\n \\\x8b\x81\x0fhH=\x8a\x8f\x17 ]\x0eH\x86\x1a?\x181ZF;\x0e_mcʧ\x8bDBTഢ e\x1dh\ach\n8\x8eM\x99\x1b\fViXQj\bY\x8f* k<5P(\x82Tc\x93{pbX\x10:\bLͲ\'c\x7f|\x1d\x9fMAy.l\t\a\x8a~\x8c\x8cb,\x1e)9Ls\x8d\x91\x8cCXs\x1bTzma\x0e6\x94`\aaqW"\x19\x168}qu\x97\x89\x14{\xad+Un\x8e|\t%\x125\x13S\xad1O\xad\\6\xa0\x95\f\x86\r2\x8cG#IU\x12 ]zz\x06\x95\x13\x0e\xadI\x05s"N&\x95\\# !+Ҵ\x9d\x96\n\x15\x9f`z\x8b\x17~{/*@Q.T\x8c&)\x9a2\x95s\x1f\x85%p0 @u\x99\x11\x1a|I)\f\x9e\xad4\x8b\x9d\x88Ż\x01#\vW~Zc\\\n\x06\x9b5Dl\f\x87!\x1d\x02\x9a\\N\x9bKp\x9b\x9a/6\x04\x91\nK^\x12\x06Ļa&-R4}\x84\x12\x11\x8b\x9b2D\x99\x92s\vI\x19\x9bX\x9dkOOv\x06V\x9aR6*+m\x14Eh1&Q_\'<s\x03I\x83\x13\x97C~\x9b\xa0\x9e.^=ƹB>\x94s\x94\x851\x98{۰4v%\x8du\x06q\x98a\x95c\x85;4\x019\x01\x98z\x92H\x12\x94\x1cL\x1c\x8f\x1a:\x03Ow\x82U\x93\nf\x97mZ\x97\x91\x903\x13!\x06<=\x9a\x06\x9d\nP\x91~\x02v@ ;q\x14"@\x19\x97D|\x89\x1dM7\x057p}\x8cxt\x05m\x00\x01\x06\x99\t`\x16 \x84\n2MCcC3xX6\xadWHj\x82q.j\x11\x96\x1d\x9bp \x14h0Eݾ\x01\x10\x17\x87rͲK\x95<\x99fI\x1c?jK\x8eU\x91\a:7\x1c,\xa0 4\x8cV\x91;jK)\x99\x88i=\x15S\x7fA4Һ+\x03)405^\x1bo`\x81k\x85k\x16\x13TCsDp\x0eE\x9a|-ha\t\x0fzP\x86nV"\b\x81\x1d\a\x9fث:""Z\x9b\x8dYl%^]\x7f\x12y8\x97 \x1c\x19Fz\x14hP\x94\x82̪\x94Jp\x17z-{zG8\x8esS\x87lb\x10J\x16\x8chB\rjY\x81R@\x98&\x9c\x92pyJ[w\x85\x11<\r\x94&\x84\x01ǰys\x0fjEe˲I\x97b\x1d\x11w\x94\x99\x1bk\x00\x85{+ s޸\x12RQ\x0f\x03\x19#\ftb\x93@b\x862g\xa0P\x8e\'[|aEG\x0e\x1a,`cj"\x1f7E{t \x19&]\x1f\fbm\x1f\x1d4\x830N[\n\x14h\x86L"\x94\x82\x96\x9bc2v\a\x0f@g&i\x9f\x05\b\\\x91R\x87\r8\x86[*E+\x87\xa0\x14p{R_J\x01\x9fv\\x<\x8aD1\x12m\vw\x83\x04>\x99t^\x10\x10[\\RηO8%\x84UdV\x9f+<9)\x0e\x86:2\x95|6\x8d>[uH\x11\x97LY\x92\x1eo!=snd4j}\x02ve]I\x88\x94\x99F1Ja\x8c\x9a|f\x89dt]\x9d"z\x83\x99J\x0fl/\x10\x15\x9b]L3dƫQ\fܶ\x8ca\xad\x176\x15km\x7f\x93Y?\x90Ʊ "\xadJY\x8a\x1eGo)5x?Y7\x80R\x89b\x1cp8\x8b;t\x8aDf\x8au\bZ\\.\x99\x1e\x81\b\x04\x9a\x8c\xa0S\x8b>3B\x89&\x82m\x95\'NkW\x1cW"\x10\x80j\a\x13_\':^a4\x15\x14\x8a*\x80\x02q\tN\x01.\x97x\x14LE\x0f?R\x83_\x10\x1e0\x1a\x14\xa0\a\x04\x98\x931:^Q\x1b@N f\x9aw\x89>\x92e\x8d+f7B_.K\'\xa0}\x98]\x93*C\x84\xa0\x98,6.Dw\x89 I[2UT\n5$\\\x06\x00\x10]\x14H$\x14\x88Vu\x1c\x90\x1d\x94\x19\x84\f\x8c^x~I&\x05\x06i}\x80\x11\x8dƳY\x1b\b\x8c\x98\x85\x03\x00\x81\x9e\x04{\x9fڱ,\x91M\x84\b\x10|\x87˻y\x86\x95\ai\r\n\x12\x80\x94:\x0f@/{7$\xa0\b\x95F]%{4\xa0\x87\x856\x93\x145\x11J\v4.10.2710.0\x1a\x80\x01r1.nɥ\x80B\x0f$%\xadBX\x9c\x06ѢW^:\x18\x1b\x9fg03r0\x8d\x96ɺ`\x87!S\x9e-%\x83*Ww\x0fx?DJ\x9f\x9b~\x01\\\x10\x81F9D\x19\x82\x93O3~\x96\x88:\x1bxd\x1c)\x8d\x1f?\x11>kJ\x14\x00\x00\x00\x01\x00\x00\x00\x14\x00\x05\x00\x10V\x85nt_O'
    
    pssh = input('\nPSSH: ')
    lic_url = input('License URL: ')
    
    
    
    
    def WV_Function(pssh, lic_url, cert_b64=None):
        wvdecrypt = WvDecrypt(init_data_b64=pssh, cert_data_b64=cert_b64, device=deviceconfig.device_android_generic)                   
        widevine_license = requests.post(url=lic_url, data=wvdecrypt.get_challenge(), headers=headers.headers)
        # 说明: 
        # 第24行需要根据不同的License类型做出调整, 不是一成不变的, 举例如下: 
        # ①查看License请求的cURL, 转换成适配Python的语句, 若最后一行像下面这样: 
        #response = requests.post('这里是License URL', headers=headers, data=data,)
        # 则第24行无需修改, 只需将headers复制到headers.py中, 注意消息体的类型(Content-Type)有时不是application/x-www-form-urlencoded
        # ②若最后一行像下面这样: 
        #response = requests.post('这里是License URL', headers=headers, data=data, params=params)
        # 则需要增加参数(params), 一般解决办法是在"headers=headers.headers"的后面加入", json=params", 让参数以json格式传出去, 否则通常会返回HTTP 400/403/502
        license_b64 = b64encode(widevine_license.content)
        wvdecrypt.update_license(license_b64)
        Correct, keyswvdecrypt = wvdecrypt.start_process()
        if Correct:
            return Correct, keyswvdecrypt   
    correct, keys = WV_Function(pssh, lic_url)
    
    print()
    for key in keys:
        print('--key ' + key)
    
    # 建立key_string字符串, 使得所有key进行如下变换: ①添加前缀"--key" ②使得每一个带有前缀的key以空格的形式连接起来(方便multi-keys时一键复制)
    key_string = ' '.join([f"--key {key}" for key in keys])
    # 使用导入的pyperclip库, 将key_string字符串复制至剪贴板, 省去手动选择"--key {key}"、复制、粘贴的麻烦
    pyperclip.copy(key_string)
    Quote Quote  
  7. ?????
    Last edited by marioeivissa; 17th Nov 2023 at 12:43.
    Quote Quote  
  8. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    Originally Posted by marioeivissa View Post
    ?????
    Look, I have a life outside this forum, believe it or not.
    I'll try to help as soon as I can but if you start rushing me or acting impatient, I'm out.
    Quote Quote  
  9. Originally Posted by Karoolus View Post
    Originally Posted by marioeivissa View Post
    ?????
    Look, I have a life outside this forum, believe it or not.
    I'll try to help as soon as I can but if you start rushing me or acting impatient, I'm out.
    sorry karoolus, thank for you help, i understand
    Quote Quote  
  10. Originally Posted by Karoolus View Post
    Why is there code in your headers file? it should only have the headers. The actual code should be in L3.py
    can you explain to me this, please "the actual code should be in L3.py" thanks
    Quote Quote  
  11. Search, Learn, Download! Karoolus's Avatar
    Join Date
    Oct 2022
    Location
    Belgium
    Search Comp PM
    your actual headers.py file should only have this content:

    Code:
    headers = {
    'authority': 'vds7b9j3.anycast.nagra.com',
    'accept': '*/*',
    'accept-language': 'es-ES,es;q=0.9',
    'cache-control': 'no-cache',
    'content-type': 'application/octet-stream',
    'nv-authorizations': 'eyJraWQiOiI1MTYzODEiLCJ0eXAiOiJKV1QiLCJhbGciOiJIU zI1NiJ9.eyJ0eXAiOiJEZXZBdXRoTiIsInZlciI6IjEuMCIsIm V4cCI6MTcwMDQwODc1MCwiZGV2aWNlSWQiOiIyYmY1ZThmNC1k MjA2LTRhZjMtYWZhYi1lOGViZWRlMjdlZDAifQ.Foir5BlK8jy 7qcaOY1sjEdlESVHMIsXkcrQtSitcm1c',
    'origin': 'https://tv.vodafone.es',
    'pragma': 'no-cache',
    'referer': 'https://tv.vodafone.es/',
    'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    }
    Nothing else, the script is in l3.py and it calls the headers file to get the headers you need.

    Obviously change the headers for each service and video accordingly, this is just an example!
    Quote Quote  
  12. Originally Posted by Karoolus View Post
    your actual headers.py file should only have this content:

    Code:
    headers = {
    'authority': 'vds7b9j3.anycast.nagra.com',
    'accept': '*/*',
    'accept-language': 'es-ES,es;q=0.9',
    'cache-control': 'no-cache',
    'content-type': 'application/octet-stream',
    'nv-authorizations': 'eyJraWQiOiI1MTYzODEiLCJ0eXAiOiJKV1QiLCJhbGciOiJIU zI1NiJ9.eyJ0eXAiOiJEZXZBdXRoTiIsInZlciI6IjEuMCIsIm V4cCI6MTcwMDQwODc1MCwiZGV2aWNlSWQiOiIyYmY1ZThmNC1k MjA2LTRhZjMtYWZhYi1lOGViZWRlMjdlZDAifQ.Foir5BlK8jy 7qcaOY1sjEdlESVHMIsXkcrQtSitcm1c',
    'origin': 'https://tv.vodafone.es',
    'pragma': 'no-cache',
    'referer': 'https://tv.vodafone.es/',
    'sec-ch-ua': '"Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    }
    Nothing else, the script is in l3.py and it calls the headers file to get the headers you need.

    Obviously change the headers for each service and video accordingly, this is just an example!

    yes my friend i did also this way, because i know more or less how is working, but not result at all, nobody have accounts like vodafone or orange tv to test it? i have this 2 accounts and not working anymore with wks keys, maybe i have problems with blob keys or key device, or maybe with protobuf, but a tried with a lot versions of protobuf 3.19.5, 3.20.3, 3.20.1, 4.xx.x, etc, but for example with one account i have of zapitv is working properly
    and with accounts with nv-auth not working, maybe also nagra drm is not the same to widevine?

    anycast.nagra.com maybe is different to widevine, isnt it?
    Quote Quote  
  13. just consider the nv author expired soon or just one time used
    Quote Quote  
  14. Originally Posted by shellcmd View Post
    just consider the nv author expired soon or just one time used
    no sorry, like i said in the post i did at the moment so quickly and i use also base of date keyswvnet, this is not the problem, i have solution allready and thanks for all your help guys
    Quote Quote  
  15. Member
    Join Date
    Nov 2023
    Location
    Canary Island
    Search PM
    Can you share the solution?
    Quote Quote  
  16. hi,

    I have same issue. can you help me @marioeivissa

    Thanks
    Quote Quote  
  17. Originally Posted by Cali03 View Post
    hi,

    I have same issue. can you help me @marioeivissa

    Thanks
    guys just need dump the app and get the blob and pem keys, and use nv auth token in the headers, thats all
    Quote Quote  
  18. Originally Posted by marioeivissa View Post
    Originally Posted by Cali03 View Post
    hi,

    I have same issue. can you help me @marioeivissa

    Thanks
    guys just need dump the app and get the blob and pem keys, and use nv auth token in the headers, thats all
    Hello, can you give an example?
    I tried with the NV of the APP, also from the Web and nothing, it always gives an error, but if I try with the payload of the web it gives me a license, but with the phone's drm it does not generate a license and I cannot obtain the key .

    Thank you.
    Quote Quote  
  19. Hello, can you give an example?
    I tried with the NV of the APP, also from the Web and nothing, it always gives an error, but if I try with the payload of the web it gives me a license, but with the phone's drm it does not generate a license and I cannot obtain the key .

    Thank you.
    Quote Quote  
  20. Hi,

    Anyone got solution , i have the same issue

    Regards
    Quote Quote  



Similar Threads

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