Posts: 17 Threads: 2 Joined: Apr 2019 Apr-01-2019, 05:54 AM (This post was last modified: Apr-02-2019, 10:08 PM by micseydel.) I am new to programming and am trying to run some code. I am getting the following error: adding screen shot - https://imgur.com/CqPVaCE some one plz help me Thank you for your attention in this matter. Posts: 8,197 Threads: 162 Joined: Sep 2016 Apr-01-2019, 06:14 AM (This post was last modified: Apr-01-2019, 06:15 AM by buran.) Please, don't post images of code and/or traceback. Post your code in python tags, full traceback - in error tags. See BBcode help for more info. Posts: 17 Threads: 2 Joined: Apr 2019 I am new to programming and am trying to run some code. I am getting the following error: Traceback (most recent call last): File "C:\Users\admin\Desktop\sunnxt.py", line 35, in <module> mp4_data = subprocess.check_output ([mp4dump, '--format', 'json', '--verbosity', '3', FInput]) File "C:\Users\admin\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 336, in check_output **kwargs).stdout File "C:\Users\admin\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 403, in run with Popen(*popenargs, **kwargs) as process: File "C:\Users\admin\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 707, in __init__ restore_signals, start_new_session) File "C:\Users\admin\AppData\Local\Programs\Python\Python36\lib\subprocess.py", line 992, in _execute_child startupinfo) FileNotFoundError: [WinError 2] The system cannot find the file specified some one please help me User has been warned for this post. Reason: No BBcode, Creating new threads unnecessarily Posts: 7,398 Threads: 123 Joined: Sep 2016 You should post code(sunnxt.py) and not just Traceback. Looking at it so are there two places that may need an absolute Path mp4dump and FInput If have mp4dump in Windows Path,then may not need an absolute Path as i use in this test. I can do a test,and also convert output to json data you can use. import subprocess import json file_in = r'E:\div_code\mp4\Sample.mp4' mp4_data = subprocess.check_output([r'E:\div_code\mp4\mp4dump.exe', '--format', 'json', '--verbosity', '3', file_in]) mp4_data = mp4_data.decode() json_data = json.loads(mp4_data) Test usage it's now a dictionary and when coming from json is normal to also have list mixed in. >>> json_data[0] {'compatible_brand': 'isom', 'header_size': 8, 'major_brand': 'M4V ', 'minor_version': 1, 'name': 'ftyp', 'size': 28} >>> json_data[3] {'header_size': 24, 'name': 'BE7ACFCB97A9-42E8-9C71-9994-91E3AFAC', 'size': 1650} >>> json_data[0]['major_brand'] 'M4V ' >>> Posts: 17 Threads: 2 Joined: Apr 2019 Apr-02-2019, 04:46 AM (This post was last modified: Apr-02-2019, 06:12 AM by buran.) code # -*- coding: utf-8 -*- from subprocess import call import subprocess import re import xmltodict import json import re import requests import base64 import time import os import argparse import binascii import configparser import sys from requests import Request, Session currentFile = __file__ realPath = os.path.realpath(currentFile) dirPath = os.path.dirname(realPath) dirName = os.path.basename(dirPath) wvDecrypterexe = dirPath + "/binaries/wvDecrypter.exe" challengeBIN = dirPath + "/binaries/challenge.bin" licenceBIN = dirPath + "/binaries/licence.bin" mp4dump = dirPath + "/binaries/mp4dump.exe" if os.path.isfile(challengeBIN) : os.remove (challengeBIN) if os.path.isfile(licenceBIN) : os.remove (licenceBIN) WV_SYSTEM_ID = 'ed ef 8b a9 79 d6 4a ce a3 c8 27 dc d5 1d 21 ed' FInput = "encryptedvideo.mp4" FOutput = "decryptedvideo.mp4" KID = "a4c1cdo8-39eb-58el-b646-8bfdf427e60a" pssh = None mp4_data = subprocess.check_output ([mp4dump, '--format', 'json', '--verbosity', '3', FInput]) mp4_data = json.loads(mp4_data) for atom in mp4_data: if atom['name'] == 'moov': for child in atom['children']: if child['name'] == 'pssh' and child['system_id'] == f'[(WV_SYSTEM_ID)]': pssh = re.sub(r'^\[08 01 ([a-f0-9 ]+)\]$', r'\1', child['data']) pssh = re.sub(r'\8+', '', pssh) pssh = pssh.strip('[]') pssh = base64.b64encode (binascii.unhexlify(pssh)).decode('utf-8') print(f'PSSH: (pssh)') break if not pssh: print('unable to extract PSSSH') sys.exit(1) PSSH = pssh CERTIFICATE = "" cookies = "" token = "" licurl = "https://www.sunnxt.com/content/license/?content_id=70994=" wvdecrypt_video = subprocess.Popen([wvDecrypterexe, '--kid',KID, '--pssh', PSSH, '--certificate', CERTIFICATE, '--input', FInput, '--output', FOutput, '--debug']) time.sleep(5) with open(challengeBIN,"rb") as fd: challenge_decoded =fd.read() data = challenge_decoded headers = { 'accept': '*/*', 'accept-encoding': 'gzip, deflate, br', 'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8', 'content-length': '4623', 'cookie': '_ga=GA1.2.975246051.1552289966; _fbp=fb.1.1552290075724.1403904187; _gid=GA1.2.396418812.1554157407; laravel_session=FjoUcOZyhVfX6dc39N85kGddMKV0DROVRS7wZLbU; _gat=1; mp_8417b02dcd9f6d45a5d3a0a7eadb1c4b_mixpanel=%7B%22distinct_id%22%3A%209176320%2C%22%24device_id%22%3A%20%221696bb128e0163-0af1f5159fe13b-3e3d5200-15f900-1696bb128e1f9%22%2C%22%24initial_referrer%22%3A%20%22https%3A%2F%2Fwww.google.com%2F%22%2C%22%24initial_referring_domain%22%3A%20%22www.google.com%22%2C%22__mps%22%3A%20%7B%7D%2C%22__mpso%22%3A%20%7B%7D%2C%22__mpus%22%3A%20%7B%7D%2C%22__mpa%22%3A%20%7B%7D%2C%22__mpu%22%3A%20%7B%7D%2C%22__mpr%22%3A%20%5B%5D%2C%22__mpap%22%3A%20%5B%5D%2C%22%24search_engine%22%3A%20%22google%22%2C%22data%20Connection%22%3A%20%22NULL%22%2C%22city%22%3A%20%22%22%2C%22country%22%3A%20%22India%22%2C%22gps%22%3A%20%22NULL%22%2C%22session%20id%22%3A%20%22NULL%22%2C%22email%20id%22%3A%20%22ambadysuresh9745%40gmail.com%22%2C%22mobile%20no%22%3A%20%22NULL%22%2C%22Device-ID%22%3A%20%22NULL%22%2C%22%24user_id%22%3A%209176320%2C%22user%20id%22%3A%209176320%7D; XSRF-TOKEN=eyJpdiI6IlRaY2J6dm5tTHJuY0pNV3NrV0hqYnc9PSIsInZhbHVlIjoiRENlMzdEQ1VpTWxnMXhGWHRhdHhcL0VZc3ZQM016QnNVR2tRZ1QwM3psQm02MnhRMFk1Q1hMWUs4ZXFDeWk2ZU9oSGI1clE2cnp3aERjSWNcL3hOUHNUdz09IiwibWFjIjoiNWY2ZjM2MDc3ZmMyNWU1ODUxMDY4YmNjZThkN2FhMGMzYjAwYWQ4ZjljYzY3MDhmNTNjMjg0MmE0MDU0MmY1MiJ9', 'origin':'https://www.sunnxt.com', 'referer': 'https://www.sunnxt.com/movie/detail/6604/Nela-Ticket/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36', } print("\nSending POST request to license url...\n") resp = requests.post(url=licurl, data=data, headers=headers) license_decoded = resp.content print(license_decoded) licenseb64 = base64.b64encode(license_decoded) with open(licenceBIN, "wb") as ld: ld.write(license_b64) stdoutdata, stderrdata = wvdecrypt_video.communicate() if str(wvdecrypt_video.returncode) == "0": os.remove(challengeBIN) os.remove(licenceBIN) Posts: 17 Threads: 2 Joined: Apr 2019 Posts: 7,398 Threads: 123 Joined: Sep 2016 Give absolute(full path) to these as i shown in my code. FInput = "encryptedvideo.mp4" FOutput = "decryptedvideo.mp4" Posts: 17 Threads: 2 Joined: Apr 2019 (Apr-02-2019, 08:07 AM)snippsat Wrote: Give absolute(full path) to these as i shown in my code. FInput = "encryptedvideo.mp4" FOutput = "decryptedvideo.mp4" dont understand i already put full script Posts: 2,171 Threads: 12 Joined: May 2017 Both are relative paths. A relative path depends on the current working directory. If your cwd is in /home/user and your files are in /home/user/video, the relative path should be 'video/encryptedvideo.mp4' or better a absolute path: '/home/user/video/encryptedvideo.mp4' Posts: 17 Threads: 2 Joined: Apr 2019 Apr-02-2019, 09:47 AM (This post was last modified: Apr-02-2019, 09:48 AM by alex9745.) (Apr-02-2019, 08:07 AM)snippsat Wrote: Give absolute(full path) to these as i shown in my code. FInput = "encryptedvideo.mp4" FOutput = "decryptedvideo.mp4" encryptedvideo.mp4 - C:\Users\admin\Music\source.mp4 decryptedvideo.mp4 - C:\Users\admin\Music full path |