mirror of
https://github.com/NinjaCheetah/libWiiPy.git
synced 2025-04-26 05:11:02 -04:00
Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
e06bb39f4c | |||
8269a0db98 |
@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "libWiiPy"
|
name = "libWiiPy"
|
||||||
version = "0.6.0"
|
version = "0.6.1"
|
||||||
authors = [
|
authors = [
|
||||||
{ name="NinjaCheetah", email="ninjacheetah@ncxprogramming.com" },
|
{ name="NinjaCheetah", email="ninjacheetah@ncxprogramming.com" },
|
||||||
{ name="Lillian Skinner", email="lillian@randommeaninglesscharacters.com" }
|
{ name="Lillian Skinner", email="lillian@randommeaninglesscharacters.com" }
|
||||||
|
@ -128,6 +128,10 @@ class EmuNAND:
|
|||||||
uid_sys = _UidSys()
|
uid_sys = _UidSys()
|
||||||
if not uid_sys_path.exists():
|
if not uid_sys_path.exists():
|
||||||
uid_sys.create()
|
uid_sys.create()
|
||||||
|
else:
|
||||||
|
uid_sys.load(uid_sys_path.read_bytes())
|
||||||
|
uid_sys.add(title.tmd.title_id)
|
||||||
|
uid_sys_path.write_bytes(uid_sys.dump())
|
||||||
|
|
||||||
def uninstall_title(self, tid: str) -> None:
|
def uninstall_title(self, tid: str) -> None:
|
||||||
"""
|
"""
|
||||||
|
@ -77,7 +77,8 @@ class UidSys:
|
|||||||
|
|
||||||
def add(self, title_id: str | bytes) -> int:
|
def add(self, title_id: str | bytes) -> int:
|
||||||
"""
|
"""
|
||||||
Adds a new Title ID to the uid.sys file and returns the UID assigned to that title.
|
Adds a new Title ID to the uid.sys file and returns the UID assigned to that title. The new entry will only
|
||||||
|
be added if the provided Title ID doesn't already have an assigned UID.
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
@ -106,6 +107,11 @@ class UidSys:
|
|||||||
title_id_converted = title_id
|
title_id_converted = title_id
|
||||||
else:
|
else:
|
||||||
raise TypeError("Title ID type is not valid! It must be either type str or bytes.")
|
raise TypeError("Title ID type is not valid! It must be either type str or bytes.")
|
||||||
|
# Ensure this TID hasn't already been assigned a UID. If it has, just exit early and return the UID.
|
||||||
|
if self.uid_entries.count != 0:
|
||||||
|
for entry in self.uid_entries:
|
||||||
|
if entry.title_id == title_id_converted:
|
||||||
|
return entry.uid
|
||||||
# Generate the new UID by incrementing the current highest UID by 1.
|
# Generate the new UID by incrementing the current highest UID by 1.
|
||||||
try:
|
try:
|
||||||
new_uid = self.uid_entries[-1].uid + 1
|
new_uid = self.uid_entries[-1].uid + 1
|
||||||
|
@ -75,7 +75,7 @@ class Ticket:
|
|||||||
self.title_version: int = 0 # Version of the ticket's associated title.
|
self.title_version: int = 0 # Version of the ticket's associated title.
|
||||||
self.permitted_titles: bytes = b'' # Permitted titles mask
|
self.permitted_titles: bytes = b'' # Permitted titles mask
|
||||||
# "Permit mask. The current disc title is ANDed with the inverse of this mask to see if the result matches the
|
# "Permit mask. The current disc title is ANDed with the inverse of this mask to see if the result matches the
|
||||||
# Permitted Titles Mask."
|
# Permitted Titles Mask." -WiiBrew
|
||||||
self.permit_mask: bytes = b''
|
self.permit_mask: bytes = b''
|
||||||
self.title_export_allowed: int = 0 # Whether title export is allowed with a PRNG key or not.
|
self.title_export_allowed: int = 0 # Whether title export is allowed with a PRNG key or not.
|
||||||
self.common_key_index: int = 0 # Which common key should be used. 0 = Common Key, 1 = Korean Key, 2 = vWii Key
|
self.common_key_index: int = 0 # Which common key should be used. 0 = Common Key, 1 = Korean Key, 2 = vWii Key
|
||||||
|
@ -194,6 +194,8 @@ class Title:
|
|||||||
bytes
|
bytes
|
||||||
The decrypted content listed in the content record.
|
The decrypted content listed in the content record.
|
||||||
"""
|
"""
|
||||||
|
if self.ticket.title_id == "":
|
||||||
|
raise ValueError("A Ticket must be loaded to get decrypted content.")
|
||||||
dec_content = self.content.get_content_by_index(index, self.ticket.get_title_key(), skip_hash)
|
dec_content = self.content.get_content_by_index(index, self.ticket.get_title_key(), skip_hash)
|
||||||
return dec_content
|
return dec_content
|
||||||
|
|
||||||
@ -213,6 +215,8 @@ class Title:
|
|||||||
bytes
|
bytes
|
||||||
The decrypted content listed in the content record.
|
The decrypted content listed in the content record.
|
||||||
"""
|
"""
|
||||||
|
if self.ticket.title_id == "":
|
||||||
|
raise ValueError("A Ticket must be loaded to get decrypted content.")
|
||||||
dec_content = self.content.get_content_by_cid(cid, self.ticket.get_title_key(), skip_hash)
|
dec_content = self.content.get_content_by_cid(cid, self.ticket.get_title_key(), skip_hash)
|
||||||
return dec_content
|
return dec_content
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user