mirror of
https://github.com/xprism1/ntool.git
synced 2025-06-18 16:15:32 -04:00
utils: cdn2cia: don't include certchain in tmd/tik
This commit is contained in:
parent
c190c53a49
commit
7a9928b6e7
@ -56,7 +56,18 @@ class CDNReader:
|
|||||||
if self.titlekey == b'':
|
if self.titlekey == b'':
|
||||||
raise Exception('Could not generate valid titlekey')
|
raise Exception('Could not generate valid titlekey')
|
||||||
|
|
||||||
def decrypt(self):
|
def extract(self):
|
||||||
|
with open(self.tmd + '.extracted', 'wb') as f: # Add .extracted to filename to avoid conflict with existing filename
|
||||||
|
with open(self.tmd, 'rb') as g:
|
||||||
|
tmd_data = g.read()
|
||||||
|
f.write(tmd_data[:-1792])
|
||||||
|
|
||||||
|
if self.tik != '':
|
||||||
|
with open(self.tik + '.extracted', 'wb') as f:
|
||||||
|
with open(self.tik, 'rb') as g:
|
||||||
|
tik_data = g.read()
|
||||||
|
f.write(tik_data[:-1792])
|
||||||
|
|
||||||
for i in self.content_files:
|
for i in self.content_files:
|
||||||
for name, info in self.tmd_read.files.items():
|
for name, info in self.tmd_read.files.items():
|
||||||
if name.split('.')[1] == i: # CDN files are named as contentID
|
if name.split('.')[1] == i: # CDN files are named as contentID
|
||||||
|
11
utils.py
11
utils.py
@ -612,22 +612,23 @@ def cdn2cia(path, out='', title_ver='', cdn_dev=0, cia_dev=0):
|
|||||||
if out == '':
|
if out == '':
|
||||||
out = f'{name}.{t.hdr.title_ver}.cia'
|
out = f'{name}.{t.hdr.title_ver}.cia'
|
||||||
|
|
||||||
cdn = CDNReader(content_files=content_files, tmd=tmd, dev=cdn_dev)
|
cdn = CDNReader(content_files=content_files, tmd=tmd, tik=tik, dev=cdn_dev)
|
||||||
cdn.decrypt()
|
cdn.extract()
|
||||||
cf = [i for i in os.listdir('.') if i.endswith('.ncch') or i.endswith('.nds')]
|
cf = [i for i in os.listdir('.') if i.endswith('.ncch') or i.endswith('.nds')]
|
||||||
|
tmd += '.extracted'
|
||||||
|
|
||||||
if tik == '':
|
if tik == '':
|
||||||
tikBuilder(titleID=t.titleID, title_ver=t.hdr.title_ver, titlekey=hex(readbe(cdn.titlekey))[2:].zfill(32), regen_sig=regen_sig, out='tik')
|
tikBuilder(titleID=t.titleID, title_ver=t.hdr.title_ver, titlekey=hex(readbe(cdn.titlekey))[2:].zfill(32), regen_sig=regen_sig, out='tik')
|
||||||
tik = 'tik'
|
tik = 'tik'
|
||||||
|
else:
|
||||||
|
tik += '.extracted'
|
||||||
|
|
||||||
meta = 1
|
meta = 1
|
||||||
if t.titleID[3:5] == '48':
|
if t.titleID[3:5] == '48':
|
||||||
meta = 0
|
meta = 0
|
||||||
CIABuilder(content_files=cf, tik=tik, tmd=tmd, meta=meta, dev=cia_dev, out='tmp.cia')
|
CIABuilder(content_files=cf, tik=tik, tmd=tmd, meta=meta, dev=cia_dev, out='tmp.cia')
|
||||||
for i in cf:
|
for i in cf + [tmd, tik]:
|
||||||
os.remove(i)
|
os.remove(i)
|
||||||
if os.path.isfile('tik'):
|
|
||||||
os.remove('tik')
|
|
||||||
|
|
||||||
shutil.move('tmp.cia', '../tmp.cia')
|
shutil.move('tmp.cia', '../tmp.cia')
|
||||||
os.chdir('..')
|
os.chdir('..')
|
||||||
|
Loading…
Reference in New Issue
Block a user