Pablo Curiel
ba4fdcd01c
Code cleanup.
...
* Added 'encrypted_header' members to both NcaContext and NcaFsSectionContext. In-place re-encryption isn't desirable in this case.
* Fixed FsAccessControl-related type naming for ACI0 blocks.
2020-10-13 10:00:03 -04:00
Pablo Curiel
3ab65d8dca
Fix support for CNMTs with no ContentInfo entries.
2020-10-12 22:46:59 -04:00
Pablo Curiel
ebd97d7c82
Add FsAccessControlData to ProgramInfo XML.
...
Also:
* Fixed support for NSOs with invalid module_name, api_info, dynstr and/or dynsym offsets/sizes.
* Updated the XML generator example to generate XML data for all available NCAs, regardless of their ID offset values.
2020-10-12 16:35:47 -04:00
Pablo Curiel
84f651eae8
Further improvements to the ProgramInfo XML generation code.
2020-10-12 12:02:44 -04:00
Pablo Curiel
7059bacfce
Improved ProgramInfo XML generation.
...
Also added some additional fields. Thanks to 0Liam.
2020-10-12 00:59:50 -04:00
Pablo Curiel
40fc21b5a3
Fix ProgramInfo and NSO issues.
...
XML generation confirmed to be working. The new algorithm faithfully reproduces the same output from legacy nxdumptool with much less overhead and memory usage.
2020-10-11 20:40:54 -04:00
Pablo Curiel
3affe1f4d0
ProgramInfo AuthoringTool-like XML generation.
...
Untested. Completely reworked both Middleware and ELF symbol parsing from NSOs.
2020-10-11 15:55:01 -04:00
Pablo Curiel
495e331306
Fix support for NSOs without a valid .api_info section + ProgramInfo context.
...
ProgramInfo XML generation is still missing. Getting real close to reimplementing NSP dumping.
2020-10-11 14:13:09 -04:00
Pablo Curiel
f45d1a21b5
Verify decompressed .rodata segment hash.
2020-10-11 13:23:58 -04:00
Pablo Curiel
e3e6552c4e
NSO context.
...
Also updated LZ4 to latest stable release to allow for in-place decompression.
2020-10-11 11:22:26 -04:00
Pablo Curiel
62945728c7
Fix wrong NCA ACID signature area size.
2020-10-10 17:12:35 -04:00
Pablo Curiel
9f010c4129
NPDM ACID public key replacement + NCA ACID signature recalculation.
2020-10-10 17:08:17 -04:00
Pablo Curiel
2066b11d5a
NPDM context.
2020-10-10 15:29:14 -04:00
Pablo Curiel
dcbedbf13a
Remove homebrew-only NSO extensions.
2020-10-10 11:38:06 -04:00
Pablo Curiel
1de967ed42
NSO structs (thanks 0Liam).
2020-10-10 11:35:14 -04:00
Pablo Curiel
3e59d15bc4
Minor template tweaks + LegalInfo fix.
2020-10-10 06:10:50 -04:00
Pablo Curiel
d1f0361725
Update NPDM structs (thanks to 0Liam) + LegalInformation XML retrieval.
...
From now on, I'll delete code from the legacy codebase directory as soon as specific features from it are rewritten... Because it's a mess to navigate.
2020-10-09 05:58:53 -04:00
Pablo Curiel
4425666395
NPDM support (part 1).
...
Only added header file with structs and enums. Actual functions come next but I'm tired atm.
2020-10-08 17:52:31 -04:00
Pablo Curiel
1c15a096b5
Codestyle fixes + prepare code for NPDM support.
2020-10-08 14:31:09 -04:00
Pablo Curiel
e943e84380
Unified XML generator + finished NACP parsing.
...
Big thanks to 0Liam.
2020-10-06 11:41:26 -04:00
Pablo Curiel
2859f26cb3
NACP: add NeighborDetectionClientConfiguration and RequiredAddOnContentsSetBinaryDescriptor to XML generation.
...
This is tentative. I need to look into how these fields are really parsed / appended to the XML.
2020-10-06 02:00:18 -04:00
Pablo Curiel
7573c53457
Fix silly bug in titleGetNcmContentMetaTypeName.
2020-10-04 06:40:56 -04:00
Pablo Curiel
afa99ba445
Added info about XCI header keys.
2020-10-04 05:25:42 -04:00
Pablo Curiel
1e41148c02
NACP parsing (part 2).
...
NeighborDetectionClientConfiguration and RequiredAddOnContentsSetBinaryDescriptor haven't been implemented (yet).
2020-10-04 03:05:05 -04:00
Pablo Curiel
d385d40862
NACP parsing (part 1).
...
God, I'm so tired. I'll go play some good old MGS3 and continue this stuff at a later time. It builds, though.
2020-10-03 13:09:29 -04:00
Pablo Curiel
fa1b9c70a5
NCA changes.
2020-10-02 22:37:05 -04:00
Pablo Curiel
d440d88bbe
CNTM: type name consistence.
2020-10-02 06:28:41 -04:00
Pablo Curiel
98b7a309b3
CNMT AuthoringTool-like XML generation.
2020-10-02 05:53:58 -04:00
Pablo Curiel
6e32829cf1
CNMT parsing.
2020-10-01 02:17:59 -04:00
Pablo Curiel
97d9603e93
BKTR: add support for games with base Program NCAs without a RomFS section.
2020-09-26 06:49:18 -04:00
Pablo Curiel
1a6f2ee50c
Rename some reserved fields.
2020-09-24 13:03:26 -04:00
Pablo Curiel
38f19351a9
Add build script.
2020-09-22 21:13:39 -04:00
Pablo Curiel
083874bd4e
Fix unaligned reads from the gamecard secure storage area.
...
Big thanks to Whovian for finding the bug and testing the change.
2020-09-19 06:21:23 -04:00
Pablo Curiel
b806c2e7d0
Support multi-program titles in the RomFS dumper.
2020-09-19 02:59:31 -04:00
Pablo Curiel
01ff151946
Update fs_ext.h
2020-09-18 23:18:32 -04:00
Pablo Curiel
679aa170b5
Some small changes.
...
* tik: check for common certificate availability before attempting to convert a personalized ticket to a common one. The raw common certificate chain data for the ticket signature issuer is now returned.
* usb: skip waitMulti call in the USB background thread if an invalid endpoint max packet size was received from the USB host in the previous while loop iteration.
2020-08-27 15:18:31 -04:00
Pablo Curiel
d6cdfe5c06
Perform title sorting at startup and in the background gamecard title info thread, not while retrieving data using non-static functions.
...
Orphan titles are now sorted by title ID.
2020-08-20 20:18:05 -04:00
Pablo Curiel
a19d3f2338
Ditched C threads in favor of libnx threads.
...
Preemptive multithreading is still used, just like libnx's newlib implementation.
Also changed the version number because the rewrite deserves it.
2020-08-18 01:04:13 -04:00
Pablo Curiel
1e50cec315
Update usb.c
2020-08-17 17:31:24 -04:00
Pablo Curiel
dfa425790a
Get endpoint max packet size from USB host to properly enable ZLT packets when needed.
...
Also updated the diff patch for ns-usbloader.
2020-08-17 17:30:47 -04:00
Pablo Curiel
f724eaa9a9
Update utils.c
2020-08-15 17:25:40 -04:00
Pablo Curiel
6b8b3184ac
Fixes for development units + diff patch for ns-usbloader.
...
Big thanks to ZachyCatGames.
2020-08-15 17:22:49 -04:00
Pablo Curiel
ace4732fda
Functions to generate gamecard/title filenames + fix CRC32 calculation.
...
Updated the threaded gamecard dumper to reflect these changes.
2020-08-13 22:31:02 -04:00
Pablo Curiel
7606f7b40a
Clear previous and next pointers from user application entries while freeing gamecard title info entries.
2020-08-13 14:20:53 -04:00
Pablo Curiel
90c6d8a9f8
Use linked lists to deal with user applications available in multiple storages at the same time.
2020-08-13 14:12:33 -04:00
Pablo Curiel
ad401d559d
New template: threaded gamecard dumper via USB.
...
Key area and certificate can be optionally appended and/or preserved, respectively. Trimming is supported.
Also added a bunch of ZLT packet related fixes to usb.c, as well as a function to properly cancel an ongoing file transfer.
2020-08-13 02:01:23 -04:00
Pablo Curiel
e26637125b
Add slightly better scrolling + title counter.
2020-08-03 17:41:00 -04:00
Pablo Curiel
3105540c99
Block HOME button presses during dumping operations in code templates.
2020-08-03 14:13:24 -04:00
Pablo Curiel
032a4fc22c
Perform gamecard initial data area lookup only on demand.
2020-08-01 01:17:08 -04:00
Pablo Curiel
ca333bd71d
Missing fs commit changes.
2020-08-01 00:52:40 -04:00
Pablo Curiel
64f3a566f8
Commit filesystem changes when needed.
2020-08-01 00:43:55 -04:00
Pablo Curiel
b11df5e732
Remove unnecessary line breaks.
2020-07-30 18:42:53 -04:00
Pablo Curiel
5d1944b43c
Move title info dump code to a template.
2020-07-30 18:40:02 -04:00
Pablo Curiel
3f837cef05
Simple functions to deal with orphan titles...
...
... No way to avoid them, I guess.
2020-07-30 18:37:45 -04:00
Pablo Curiel
bb8cba1eaa
Threaded gamecard title info/metadata retrieval.
2020-07-30 17:43:50 -04:00
Pablo Curiel
cd8afd2cd8
Fixed gamecard key area template.
2020-07-30 16:01:26 -04:00
Pablo Curiel
7c4e7a4db0
New test app: system title NCA section dumper.
2020-07-29 17:02:21 -04:00
Pablo Curiel
5320260b4e
Better names for TITLE_* defines.
2020-07-28 02:20:19 -04:00
Pablo Curiel
64766be416
Update title.c
2020-07-27 23:38:45 -04:00
Pablo Curiel
98f3f85a31
Bunch of title related changes.
...
* Improved patch and add-on content title ID verification against a base application title ID.
* Implemented linked lists in TitleInfo structs, which make it easier to deal with multiple patches / add-on contents belonging to the same application.
* TitleApplicationMetadata elements are retrieved with titleGetApplicationMetadataEntries() and used by the UI to display title entries. An 'is_system' filter argument is used to determine which kind of metadata should be retrieved. These are ordered by ID (system titles) or alphabetically (user applications) using qsort().
* Added TitleUserApplicationData struct, which is populated when an user application is selected.
* Tweaked titleRefreshGameCardTitleInfo() behaviour a little bit. Now returns true whenever there are title info changes, so the UI can reload the list.
* Temporarily commented out title info logging from titleInitialize().
* Fixed decrypted key retrieval from the NCA key area for patches with titlekey crypto removed.
* Implemented a very small menu to select a title to dump.
2020-07-27 23:32:08 -04:00
Pablo Curiel
62366327ee
Reduce memory footprint + hardcode system title names.
...
Also increased the USB timeout again, since 1 second seems to be too low for gamecard transfers.
Big thanks to Whovian for helping me format that long system title list.
2020-07-26 04:00:54 -04:00
Pablo Curiel
158e424b96
List content infos as part of title list entries.
...
Finally got rid of location resolver stuff.
2020-07-26 00:57:12 -04:00
Pablo Curiel
2521ac3f15
List titles from the inserted gamecard.
2020-07-25 14:50:42 -04:00
Pablo Curiel
e4a6e0e77a
Begin work on title listing stuff.
2020-07-25 01:56:35 -04:00
Pablo Curiel
8a54ea4823
Supress unnecessary log messages.
2020-07-23 17:57:43 -04:00
Pablo Curiel
ee5a08f5d9
Trivial changes.
2020-07-23 17:30:01 -04:00
Pablo Curiel
e7f2c927c2
FIx small overlook.
2020-07-22 21:34:13 -04:00
Pablo Curiel
c8c062e7fa
Test unified NCA hash layer write function (works gucci).
2020-07-22 20:37:02 -04:00
Pablo Curiel
b8d80bf260
Functions and wrappers to write generated NCA hash layer patches.
2020-07-22 16:35:23 -04:00
Pablo Curiel
90e0f057bc
Bunch of changes.
...
* Updated NCA structs (including NcaSparseInfo).
* Changed the way NCA header + NCA FS header decryption is handled.
* Changed the way the NCA encrypted key area is handled.
* Unified hierarchical patch generation functions.
* Updated PFS, RomFS and BKTR functions accordingly to reflect NCA handling changes.
* Logfile path is now relative.
* Gamecard initial data lookup code now uses the initial data hash from the gamecard header (a tad bit slower, but way more failproof).
2020-07-22 04:03:28 -04:00
Pablo Curiel
cddf57363c
Remove wrong references to ECC data in gamecards.
2020-07-17 14:42:48 -04:00
Pablo Curiel
6bee2c5d20
Tweaked gamecard code.
...
Modified gamecard handle retrieval and storage area mounting. Added gamecard status codes.
2020-07-17 01:01:31 -04:00
Pablo Curiel
95d5bda83a
Update main.c
2020-07-15 19:45:06 -04:00
Pablo Curiel
88d3e0de8d
Support for the "boot" partition in Terra gamecards.
2020-07-15 19:43:58 -04:00
Pablo Curiel
eba26a59a5
Changes to the gamecard key area handling.
2020-07-15 18:50:34 -04:00
Pablo Curiel
5082a54571
Glorified Patch RomFS dumper. lol
2020-07-13 12:33:22 -04:00
Pablo Curiel
73861bc52f
Normalize goto tag names + support for gamecard key area.
...
Big thanks to SciresM.
2020-07-13 02:36:17 -04:00
Pablo Curiel
8baa5800a1
Proper USB background thread exit.
2020-07-12 12:37:03 -04:00
Pablo Curiel
400cab42a0
USB tweaks.
2020-07-12 11:29:08 -04:00
Pablo Curiel
90951f9baa
Check the right event index.
2020-07-07 12:39:20 -04:00
Pablo Curiel
8c90f64d7f
Codestyle fixes.
2020-07-07 11:51:33 -04:00
Pablo Curiel
85748c99c5
Small NCA0 change.
2020-07-07 11:20:29 -04:00
Pablo Curiel
0c34ef84ac
Check the key generation value from the eticket device key.
2020-07-07 08:58:17 -04:00
Pablo Curiel
11e9d6612a
Forgot to update bktr.c/h accordingly.
2020-07-07 07:55:37 -04:00
Pablo Curiel
b71f0d7b87
Some more changes.
...
* Codestyle fixes.
* NCA contexts for NCAs with titlekey crypto will now be generated even if the ticket can't be retrieved, in order to be able to use ncaReadContentFile() with them.
* Moved aes128XtsNintendoCrypt() out of nca.c.
2020-07-05 20:10:07 -04:00
Pablo Curiel
99429fd7b4
Bunch of changes.
...
* Updated disclaimer in all source files.
* Improved signed payload (certificate, ticket) handling.
* Prefer strlen + strcmp over strncmp whenever possible.
* Simplify header file inclusions in source files.
* Simplify background gamecard thread logic.
* Properly close keys file handle if there's a key parse error.
* Update NcaKeyGeneration enum.
* Small changes to save.c/h.
Will probably have to revert some USB changes...
2020-07-03 05:31:22 -04:00
Pablo Curiel
3e47dd180d
Fix compatibility with libnx v3.2.0.
2020-05-14 22:59:57 -04:00
Pablo Curiel
1ebc106b79
Manage USB transfer session using a background thread.
2020-05-13 10:09:51 -04:00
Pablo Curiel
a3790dd0d6
Mooore USB fixes.
2020-05-11 15:12:03 -04:00
Pablo Curiel
d6179f77fb
USB optimizations.
2020-05-11 08:11:06 -04:00
Pablo Curiel
a02c806b60
Extracted RomFS dumping via USB.
2020-05-10 12:40:12 -04:00
Pablo Curiel
b39ab27a52
Silly correction.
2020-05-10 05:07:31 -04:00
Pablo Curiel
d629f21e8c
Fix fatals.
2020-05-09 13:09:22 -04:00
Pablo Curiel
47297daf3a
Some more USB fixes.
2020-05-09 09:49:02 -04:00
Pablo Curiel
1f05a39560
Update usb.c
2020-05-09 02:32:01 -04:00
Pablo Curiel
daedae88a8
Small USB status codes update.
2020-05-09 00:48:46 -04:00
Pablo Curiel
a7698e435e
USB protocol updated.
2020-05-07 23:48:22 -04:00
Pablo Curiel
61fb465e2a
Additional USB changes.
2020-05-07 07:08:54 -04:00
Pablo Curiel
97f7a46a91
Fix deadlock.
2020-05-06 10:36:17 -04:00
Pablo Curiel
257e1c8dfd
Some more USB related changes.
2020-05-06 10:04:10 -04:00
Pablo Curiel
5c46bfe2ab
Update usb.h
2020-05-06 02:05:25 -04:00
Pablo Curiel
bd6f67d57a
Protocol -> ABI.
...
Also add this to the handshake command block.
2020-05-06 02:01:00 -04:00
Pablo Curiel
253e72786b
Tweaks to utilsReplaceIllegalCharacters.
...
We won't need to replace characters outside of the ASCII range for USB transfers.
2020-05-05 14:04:23 -04:00
Pablo Curiel
298676ae46
Preliminar Switch <-> PC protocol using usb:ds.
2020-05-05 11:22:16 -04:00
Pablo Curiel
444c82b7c0
Save exception info to logfile.
...
Benchmark test updated to dump the inserted gamecard.
2020-05-04 14:15:03 -04:00
Pablo Curiel
76b19aed96
Threaded I/O test.
...
Takes roughly 15 minutes to dump SSBU's data.arc - basically a whole GiB per minute. Which is real nice, considering all the crypto layers we're dealing with.
2020-05-03 10:55:13 -04:00
Pablo Curiel
08b2aed130
Gamecard usermode status change event.
...
Useful to wait for gamecard status changes on other threads.
2020-05-03 04:40:08 -04:00
Pablo Curiel
109913cb18
Fix gamecard deadlock.
2020-05-02 20:36:09 -04:00
Pablo Curiel
2e48a22f8c
Improve thread-safety.
2020-05-02 19:40:50 -04:00
Pablo Curiel
9148b4e0dd
Looks better this way.
2020-05-01 11:22:08 -04:00
Pablo Curiel
050f881cf6
derp
2020-05-01 11:11:18 -04:00
Pablo Curiel
91fdff7816
Codestyle fixes.
2020-05-01 11:06:24 -04:00
Pablo Curiel
e2b4ebc5d4
BKTR: updated file entry detection.
2020-05-01 00:34:30 -04:00
Pablo Curiel
efb9b2d103
BKTR finished.
2020-04-30 07:24:08 -04:00
Pablo Curiel
4774aeae9c
BKTR done, needs testing.
2020-04-30 04:25:03 -04:00
Pablo Curiel
e1e38bcfc2
derp
2020-04-29 17:16:59 -04:00
Pablo Curiel
b64bcf5451
Fix mem leaks in PFS/RomFS initializers.
...
Also renamed Ecsda240 -> Ecc480 and added a new Hmac160 signature type.
2020-04-29 17:11:27 -04:00
Pablo Curiel
7e8fa96829
Remove NcaEncryptionType_Nca0 + BKTR start.
2020-04-29 08:59:28 -04:00
Pablo Curiel
7aa72dc618
Remove unnecessary RomFS context members.
2020-04-29 07:55:23 -04:00
Pablo Curiel
08bfb89adb
Another PFS patch test, works gucci.
2020-04-29 06:55:20 -04:00
Pablo Curiel
18531961ca
RomFS file entry patching working.
2020-04-29 05:54:40 -04:00
Pablo Curiel
e1b1dfc648
Reworked FS section patching.
2020-04-28 04:58:17 -04:00
Pablo Curiel
226fbd0e21
Small PFS fix.
2020-04-28 00:38:24 -04:00
Pablo Curiel
2c252c03b2
Control.nacp reading.
...
First step towards RomFS modification.
2020-04-27 22:33:38 -04:00
Pablo Curiel
278142fd22
RomFS done.
...
Modifications method still missing though.
2020-04-27 19:30:35 -04:00
Pablo Curiel
efe76093e4
RomFS (almost) done.
...
Need to test read functions.
2020-04-27 18:37:15 -04:00
Pablo Curiel
bc93001525
RomFS ctx working.
...
Need to create filepath methods.
2020-04-26 06:04:31 -04:00
Pablo Curiel
c6eaf3c8b6
PFS0 mod data + RomFS start.
2020-04-26 04:35:01 -04:00
Pablo Curiel
dccb33ab0c
PFS0 read improved.
2020-04-24 14:42:16 -04:00
Pablo Curiel
7c8bf5c831
PFS0 context.
2020-04-24 05:38:13 -04:00
Pablo Curiel
76550adab8
NCA read finished.
2020-04-22 16:53:20 -04:00
Pablo Curiel
0e5683b880
NCA read (almost) done.
...
Missing BKTR stuff.
2020-04-21 06:23:33 -04:00
Pablo Curiel
ccf36f4963
NCA process done.
2020-04-20 06:39:41 -04:00
Pablo Curiel
cf8ab4d4ac
More improvements.
2020-04-19 18:44:22 -04:00
Pablo Curiel
1b45cdf05a
Mooooore baby steps.
...
I can finally continue the NCA handler.
2020-04-17 17:59:05 -04:00
Pablo Curiel
9679eb72bb
Hash FS start.
2020-04-16 06:13:11 -04:00
Pablo Curiel
d3ad9d84b6
More changes.
2020-04-16 00:37:16 -04:00
Pablo Curiel
c83858311b
More baby steps.
2020-04-15 20:06:41 -04:00
Pablo Curiel
eccd3f0c1c
Baby steps.
2020-04-15 16:50:07 -04:00
Pablo Curiel
65e40e7600
Gamecard rewrite.
2020-04-15 01:59:12 -04:00
Pablo Curiel
e5a4532a63
First commit.
2020-04-11 01:28:26 -04:00