51 lines
1.2 KiBLFS
Python
51 lines
1.2 KiBLFS
Python
from ..Exceptions import VROMFSException
|
|
|
|
|
|
PlatformType = {
|
|
0x43500000: "Pc",
|
|
0x534F6900: "Ios",
|
|
0x646E6100: "Android"
|
|
}
|
|
|
|
HeaderType = {
|
|
0x73465256: "VRFS", # base header
|
|
0x78465256: "VRFX", # extended header
|
|
}
|
|
|
|
class Packing:
|
|
Packing = {
|
|
# ZSTD compressed and obfuscated. No digest
|
|
0x10: "ZSTD_OBFS_NOCHECK",
|
|
|
|
# Image in plain form. With digest
|
|
0x20: "PLAIN",
|
|
|
|
# Same as ZSTD_OBFS_NOCHECK except with digest
|
|
0x30: "ZSTD_OBFS",
|
|
}
|
|
|
|
def __init__(self, packing_raw):
|
|
self.packing_raw = packing_raw
|
|
self.packing = self.Packing.get(packing_raw)
|
|
if packing_raw is None:
|
|
raise VROMFSException("Invalid packing type")
|
|
|
|
def has_digest(self):
|
|
return self.packing_raw != 0x10
|
|
|
|
def has_zstd_obfs(self):
|
|
return self.packing_raw != 0x20
|
|
|
|
class Version:
|
|
def __init__(self, data):
|
|
self.global_ = None
|
|
self.major = None
|
|
self.minor = None
|
|
self.patch = None
|
|
if type(data) in [bytes, bytearray]:
|
|
self.global_ = data[3]
|
|
self.major = data[2]
|
|
self.minor = data[1]
|
|
self.patch = data[0]
|
|
elif type(data) == str:
|
|
pass |