Compare commits

..

2 Commits

Author SHA1 Message Date
TPD94 6e83acac88 Update README.md 2023-01-04 23:27:05 -05:00
TPD94 6ba6765d32 Create get_pssh_from_init.py 2023-01-04 23:26:12 -05:00
2 changed files with 34 additions and 1 deletions

View File

@ -52,3 +52,7 @@ Example:
In this case we got the PSSH value of `AAAAV3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADcIARIQFi99MmzyT229Exm8Vyu8FRoLYnV5ZHJta2V5b3MiEBYvfTJs8k9tvRMZvFcrvBUqAkhE` In this case we got the PSSH value of `AAAAV3Bzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADcIARIQFi99MmzyT229Exm8Vyu8FRoLYnV5ZHJta2V5b3MiEBYvfTJs8k9tvRMZvFcrvBUqAkhE`
Congrats, you have the PSSH! Congrats, you have the PSSH!
4) Using init files
You can use [this tool](https://cdm-project.com/CDM-Tools/Obtaining-PSSH/src/branch/main/get_pssh_from_init.py "this tool") to obtain the PSSH from an init file

29
get_pssh_from_init.py Normal file
View File

@ -0,0 +1,29 @@
import base64
import requests
import xmltodict
def read_pssh_from_bytes(bytes: bytes):
pssh_offset = bytes.rfind(b"pssh")
_start = pssh_offset - 4
_end = pssh_offset - 4 + bytes[pssh_offset - 1]
pssh = bytes[_start:_end]
return pssh
url = input("Enter Init segment url: ")
headers = {
# "Range": "bytes=0-962",
}
print("Downloading...")
res = requests.get(url, headers=headers)
if not res.ok:
print(f"Could not download init segment: {res.text}")
pssh = read_pssh_from_bytes(res.content)
if pssh is not None:
print(f"PSSH: {base64.b64encode(pssh).decode('utf8')}")
else:
print("Failed to extract PSSH!")