def compareTsUris(self, url1, url2, segmentIndex, aesKey, continuityCounters): result = True self.writeOutput('Info: comparing %s %s' % (url1, url2)) code1, tsData1 = self.retrieveUrl(url1) if code1 == 200: if aesKey != None: tsData1, error = decryptTsSegment(self.tsData1, aesKey, segmentIndex) if tsData1 == None: self.writeOutput(error) return False if not self.testContinuity(tsData1, continuityCounters): result = False else: continuityCounters.clear() for attempt in xrange(RETRIES): code2, tsData2 = self.retrieveUrl(url2) if code1 != code2: if code1 != 0 and code2 != 0: self.writeOutput( 'Error: got different status codes %s vs %s (ts)' % (code1, code2)) return False messages = [] curResult = True if not self.compareStream(tsData1, tsData2, 'a', messages): curResult = False if not self.compareStream(tsData1, tsData2, 'v', messages): curResult = False if curResult or attempt + 1 >= RETRIES: break self.writeOutput('Info: got errors, retrying...') self.writeOutput('Info: size diff is %s' % (len(tsData2) - len(tsData1))) for message in messages: self.writeOutput(message) return result and curResult
def compareTsUris(self, url1, url2, segmentIndex, aesKey, continuityCounters): result = True self.writeOutput('Info: comparing %s %s' % (url1, url2)) code1, tsData1 = self.retrieveUrl(url1) if code1 == 200: if aesKey != None: tsData1, error = decryptTsSegment(self.tsData1, aesKey, segmentIndex) if tsData1 == None: self.writeOutput(error) return False if not self.testContinuity(tsData1, continuityCounters): result = False else: continuityCounters.clear() for attempt in xrange(RETRIES): code2, tsData2 = self.retrieveUrl(url2) if code1 != code2: if code1 != 0 and code2 != 0: self.writeOutput('Error: got different status codes %s vs %s (ts)' % (code1, code2)) return False messages = [] curResult = True if not self.compareStream(tsData1, tsData2, 'a', messages): curResult = False if not self.compareStream(tsData1, tsData2, 'v', messages): curResult = False if curResult or attempt + 1 >= RETRIES: break self.writeOutput('Info: got errors, retrying...') self.writeOutput('Info: size diff is %s' % (len(tsData2) - len(tsData1))) for message in messages: self.writeOutput(message) return result and curResult
import os if len(sys.argv) < 5: print 'Usage:\n\tpython %s <input file> <output file> <aes key hex> <segment index (one based) or 0xIV>' % os.path.basename(__file__) sys.exit(1) INPUT_FILE = sys.argv[1] OUTPUT_FILE = sys.argv[2] ENC_KEY = sys.argv[3] ENC_IV = sys.argv[4] # key if ENC_KEY.startswith('0x'): ENC_KEY = ENC_KEY[2:] ENC_KEY = ENC_KEY.decode('hex') # iv if ENC_IV.startswith('0x'): ENC_IV = ENC_IV[2:] ENC_IV = ENC_IV.decode('hex') else: segmentIndex = int(ENC_IV) ENC_IV = '\0' * 12 + struct.pack('>L', segmentIndex) encryptedData = file(INPUT_FILE, 'rb').read() decryptedData, error = decryptTsSegment(encryptedData, ENC_KEY, ENC_IV) if decryptedData == None: print error sys.exit(1) file(OUTPUT_FILE, 'wb').write(decryptedData)
from ts_utils import decryptTsSegment import sys if len(sys.argv) < 5: print 'Usage:\n\tphp encryptUrl.php <input file> <output file> <aes key hex> <segment index (one based)>' sys.exit(1) INPUT_FILE = sys.argv[1] OUTPUT_FILE = sys.argv[2] ENC_KEY = sys.argv[3].decode('hex') SEGMENT_INDEX = int(sys.argv[4]) encryptedData = file(INPUT_FILE, 'rb').read() decryptedData, error = decryptTsSegment(encryptedData, ENC_KEY, SEGMENT_INDEX) if decryptedData == None: print error sys.exit(1) file(OUTPUT_FILE, 'wb').write(decryptedData)
if len(sys.argv) < 5: print( 'Usage:\n\tpython %s <input file> <output file> <aes key hex> <segment index (one based) or 0xIV>' % os.path.basename(__file__)) sys.exit(1) INPUT_FILE = sys.argv[1] OUTPUT_FILE = sys.argv[2] ENC_KEY = sys.argv[3] ENC_IV = sys.argv[4] # key if ENC_KEY.startswith('0x'): ENC_KEY = ENC_KEY[2:] ENC_KEY = ENC_KEY.decode('hex') # iv if ENC_IV.startswith('0x'): ENC_IV = ENC_IV[2:] ENC_IV = ENC_IV.decode('hex') else: segmentIndex = int(ENC_IV) ENC_IV = '\0' * 12 + struct.pack('>L', segmentIndex) encryptedData = open(INPUT_FILE, 'rb').read() decryptedData, error = decryptTsSegment(encryptedData, ENC_KEY, ENC_IV) if decryptedData == None: print(error) sys.exit(1) open(OUTPUT_FILE, 'wb').write(decryptedData)