Skip to content

Commit 1763c5e

Browse files
authored
Merge pull request #6 from R-YaTian/seed_fix
Further fix for seed crypto things
2 parents e73622d + 91f05dd commit 1763c5e

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/main.rs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -302,13 +302,14 @@ fn parse_ncsd(cia: &mut CiaReader) {
302302
cia.seek(0);
303303
let mut tmp: [u8; 512] = [0u8; 512];
304304
cia.read(&mut tmp);
305-
let mut header: NcsdHdr = unsafe { std::mem::transmute(tmp) };
305+
let header: NcsdHdr = unsafe { std::mem::transmute(tmp) };
306306
for idx in 0..header.offset_sizetable.len() {
307307
if header.offset_sizetable[idx].offset != 0 {
308308
cia.cidx = idx as u16;
309309
cia.content_id = idx as u32;
310-
header.titleid.reverse();
311-
parse_ncch(cia, (header.offset_sizetable[idx].offset * MEDIA_UNIT_SIZE).clone().into(), header.titleid);
310+
let mut tid: [u8; 8] = header.titleid;
311+
tid.reverse();
312+
parse_ncch(cia, (header.offset_sizetable[idx].offset * MEDIA_UNIT_SIZE).clone().into(), tid);
312313
}
313314
}
314315
}
@@ -325,19 +326,19 @@ fn parse_ncch(cia: &mut CiaReader, offs: u64, mut titleid: [u8; 8]) {
325326
cia.seek(offs);
326327
let mut tmp = [0u8; 512];
327328
cia.read(&mut tmp);
328-
let mut header: NcchHdr = unsafe { std::mem::transmute(tmp) };
329+
let header: NcchHdr = unsafe { std::mem::transmute(tmp) };
329330
if titleid.iter().all(|&x| x == 0) {
330331
titleid = header.programid;
331332
titleid.reverse();
332333
}
333334

334335
let ncch_key_y = BigEndian::read_u128(header.signature[0..16].try_into().unwrap());
336+
let mut tid: [u8; 8] = header.titleid;
337+
tid.reverse();
335338

336339
debug!(" Product code: {}", std::str::from_utf8(&header.productcode).unwrap());
337340
debug!(" KeyY: {:032X}", ncch_key_y);
338-
header.titleid.reverse();
339-
debug!(" Title ID: {}", hex::encode(header.titleid).to_uppercase());
340-
header.titleid.reverse();
341+
debug!(" Title ID: {}", hex::encode(tid).to_uppercase());
341342
debug!(" Content ID: {:08X}\n", cia.content_id);
342343
debug!(" Format version: {}\n", header.formatversion);
343344

@@ -351,7 +352,7 @@ fn parse_ncch(cia: &mut CiaReader, offs: u64, mut titleid: [u8; 8]) {
351352
let mut encrypted: bool = true;
352353

353354
if flag_to_bool(header.flags[7] & 1) {
354-
if flag_to_bool(header.titleid[3] & 16) { fixed_crypto = 2 } else { fixed_crypto = 1 }
355+
if flag_to_bool(tid[3] & 16) { fixed_crypto = 2 } else { fixed_crypto = 1 }
355356
debug!(" Uses fixed-key crypto")
356357
}
357358

0 commit comments

Comments
 (0)