[Release] HACToolGUI - A very simple GUI for HACTool

Updated to Version 0.3a - urgent bug fix because I accidentally completely broke the program.

New:
Official Discord support server!
Source code now available!



Well, in honour of Master_Key_01 and Master_Key_02's release, I present to you...
HACToolGUI!

m0GW3mg.png


It does everything you need to extract XCI, NCA and RomFS files, support for other formats coming soon.

:switch: Features:
Simple to use and easy to understand GUI
Built-in keylist manager (Bring your own keys)
Uses HACTool to extract XCI, NCA and RomFS files
Supports all keys
Choose to dump as plaintext NCA, RomFS or to extract the files to a folder
Tiny filesize; around 120KB decompressed
Portable, no installation required

:switch: Dependencies:
Requires the latest release of hactool.exe and all its .dll files in the same directory.
Get it from here.

SI3CDlT.png

XWmJZx6.png

rjxr1FA.png
Complete v0.3 change list:

  • Added PFS0 support! (Used in .nsp)
  • Automatically fills in the textboxes with keydata from keys.dat when key manager is opened. (Also added a manual option)
  • Drag-and-drop file support added for all extraction types
  • Key manager button added to main screen
  • Internet access no longer required for use; now you can check for updates by clicking the option
  • Remembers last selected NCA extraction option
  • Remembers previous directory used
  • NCA extraction is disabled unless keys are filled and a key file is present
  • Checks for incorrectly formatted keys.dat
  • Quotes no longer required in directory names


Coming soon:
  • Name change
  • The hactool files will not be required, the code will be built into the program
  • Key verification
  • Key derivation, the usual stuff, but will also generate the master_key, package1_key and various others from a supplied keyblob, provided you have the wrapper key for the specific keyblob and the console-unique SBK and TSEC keys
  • Bulk file extraction
  • Support for all other hactool formats, including Rights ID-encrypted NCAs and SD card files
  • Built-in CDN downloader, provide a private key and cert, then add the Title ID, it will get the latest version of the meta file, decrypt the NCA, read the cnmt, get the NCAID of each file and download the NCA of them from the Atum server (provided you have the keys)
  • Various file type extractors (BFSAR, BFRES, BFGRP, SARC, SZS, Yaz0, etc.)
  • Background music (optional)
  • Themes (optional)
  • More easter eggs
 

Attachments

  • HACToolGUI_v0_3a.zip
    88.4 KB · Views: 14,289
Last edited by SimonMKWii,

bobthecooldad

New Member
Newbie
Joined
Mar 9, 2018
Messages
1
Trophies
0
Age
27
XP
70
Country
United Kingdom
Would it be possible to add multiple files (I know someone asked earlier).
I made a rough idea in python (only language i know) However if i run it it will get access denied with the cmd console. (it doesnt run the .cnmt files as it removes it from the list)
github.co m/bobthecooldad/Hac-tool-loader (wont let me post links as i am to new)
 

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,295
Country
United States
Maybe SciresM does not like that they touch their codes for modifications and facilitate piracy. In any case, everyone expects not only to extract Files from the Switch, but to inject them and run the code without the need for certification, and that is only possible with CFW.

No, I don't care about that shit.

GUIs are highly accessible to tech illiterate people -- inevitably when I update hactool with new stuff or if I ever break compatibility with argument names (as I've done a few times) this GUI will cause tech illiterate people to bug me for help.

Hence why this GUI's existence is unfortunate.

(It's my opinion, frankly, that if you're technically literate enough to muck around with game's internals, you should be technically literate enough to use a command line.)
 
Last edited by SciresM,

SciresM

Developer
Developer
Joined
Mar 21, 2014
Messages
973
Trophies
3
Age
33
XP
8,295
Country
United States
Oh, ugh, @SimonMKWii if this absolutely must exist remove the ".istorage" crap -- that extension was a mistake due to lack of documentation at the time and has since been fixed in Yuzu/other relevant places to properly be .romfs.

Perpetuating the "istorage" mistake is awful.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
No, I don't care about that shit.

GUIs are highly accessible to tech illiterate people -- inevitably when I update hactool with new stuff or if I ever break compatibility with argument names (as I've done a few times) this GUI will cause tech illiterate people to bug me for help.

Hence why this GUI's existence is unfortunate.

(It's my opinion, frankly, that if you're technically literate enough to muck around with game's internals, you should be technically literate enough to use a command line.)
Oh, ugh, @SimonMKWii if this absolutely must exist remove the ".istorage" crap -- that extension was a mistake due to lack of documentation at the time and has since been fixed in Yuzu/other relevant places to properly be .romfs.

Perpetuating the "istorage" mistake is awful.
I'm going to be adding online update capabilities to version 0.2, this will check for both a GUI revision and any new hactool release revisions.
Also, if anyone bugs you for help with my GUI, I will happily take the blame. I might add a manual to the GUI, if so, the first page would state (in no uncertain terms) to direct all questions to me, not to SciresM.
I'll also make it very clear that you had absolutely no part in this GUI's creation.

Regarding the .istorage thing, yeah, I'll fix it ASAP.
Too many people perpetuated the .istorage thing after BBB's fuckup, so I felt like I needed to refer to the RomFS files with the most widely-used term.
I'll update it so hactool outputs the file with the .romfs extension, per your request.

Thanks for the feedback!
 

FoxofGrey

Well-Known Member
Newcomer
Joined
Jul 1, 2016
Messages
92
Trophies
0
XP
396
Country
United States
I'm going to be adding online update capabilities to version 0.2, this will check for both a GUI revision and any new hactool release revisions.
Also, if anyone bugs you for help with my GUI, I will happily take the blame. I might add a manual to the GUI, if so, the first page would state (in no uncertain terms) to direct all questions to me, not to SciresM.
I'll also make it very clear that you had absolutely no part in this GUI's creation.

Regarding the .istorage thing, yeah, I'll fix it ASAP.
Too many people perpetuated the .istorage thing after BBB's fuckup, so I felt like I needed to refer to the RomFS files with the most widely-used term.
I'll update it so hactool outputs the file with the .romfs extension, per your request.

Thanks for the feedback!
While I'm thankful that you're considerate to how to adapt your program to SciresM's progression, there is one main problem that a GUI for a tool made for Reverse Engineering creates: incompetence.

I'm talking about the perpetuation that all of this reverse engineering can be done using a GUI. When, in reality, most, if not all of this work, is done through the terminal.

And sure, GUIs can be helpful regarding Operating Systems, programs that were made for tech illiterate individuals, and just convenience for the rest. But, if we don't want the United States (or even other countries) to see Reverse Engineering as nothing more as a bunch of skids DDoSing minecraft servers and people who want to pirate all of their programs, then the integrity of such programs like hactool should remain as terminal programs.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
While I'm thankful that you're considerate to how to adapt your program to SciresM's progression, there is one main problem that a GUI for a tool made for Reverse Engineering creates: incompetence.

I'm talking about the perpetuation that all of this reverse engineering can be done using a GUI. When, in reality, most, if not all of this work, is done through the terminal.

And sure, GUIs can be helpful regarding Operating Systems, programs that were made for tech illiterate individuals, and just convenience for the rest. But, if we don't want the United States (or even other countries) to see Reverse Engineering as nothing more as a bunch of skids DDoSing minecraft servers and people who want to pirate all of their programs, then the integrity of such programs like hactool should remain as terminal programs.
I don't understand. Hactool was developed using knowledge achieved via RE, but there's pretty much nothing about the tool that "does" RE directly.
Saying it is made for RE would be factually incorrect.
The only function that is technically RE is its built-in key derivation.

Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
 
Last edited by SimonMKWii,

FoxofGrey

Well-Known Member
Newcomer
Joined
Jul 1, 2016
Messages
92
Trophies
0
XP
396
Country
United States
I don't understand. Hactool was developed using knowledge achieved via RE, but there's pretty much nothing about the tool that "does" RE directly.
Saying it is made for RE would be factually incorrect.
The only function that is technically RE is its built-in key derivation.

Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.

>but there's pretty much nothing about the tool that "does" RE directly. The only function that is technically RE is its built-in key derivation.
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

>Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

>If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

>Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
I said YOUR GUI tool creates incompetence within the community, not SciresM's tool. Like I've said, the only reason he came out with this tool is to help other developers understand the inner workings of applications and games.
 

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
>but there's pretty much nothing about the tool that "does" RE directly. The only function that is technically RE is its built-in key derivation.
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

>Also, my GUI only does functions that hactool can do, and to lump it altogether as "enabling piracy" as implied in your post, it would be heavily insulting.
There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

>If a person decides to pirate the dump, that's on them entirely. I don't support it, but why treat everyone as pirates? It will also harm the people who dump their games legitimately.
What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

>Not only that, but saying it creates incompetence would be insulting to both my GUI and SciresM's tool.
I said YOUR GUI tool creates incompetence within the community, not SciresM's tool. Like I've said, the only reason he came out with this tool is to help other developers understand the inner workings of applications and games.
No, hactool doesn't datamine Switch applications. It simply extracts files from within Nintendo's archive formats. The datamining is up to the person who wants to do something with these files.

You're implying that SciresM's program doesn't have good user experience, also, most of the Switch hacking knowledge is very much public.

Yes there is, it allows people to research the files. What if they want a game's soundtrack and it wasn't released? What if they want to search for unused content?
There's nothing risky about a GUI program whatsoever. If the pirates wanted it that badly, they would have figured out how to use the command-line tool.

Also, SciresM never stated this tool was strictly for developers. If he only wanted developers to have it, he'd either not make a release build, or just not have the code public.
 

DarthDub

Amateur Hacker
Member
Joined
Jan 26, 2016
Messages
2,834
Trophies
1
Age
34
Location
Your mom's basement.
Website
www.gaiaonline.com
XP
3,634
Country
United States
I'd like to make one suggestion. When output folder is blank, have it refuse to try to extract files. I spent an hour having it extract nothing when it was blank. Nonetheless, I extracted the music files from Xenoblade Chronicles 2 and converted them to mp3 format with ease using Foobar2000! Thanks for this wonderful frontend.
 
  • Like
Reactions: peteruk

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
Hactool's purpose was to data mine Switch games and other Switch applications. THAT is considered reverse engineering. At least that's what I gathered from SciresM's history.

Really? I thought of it more as a file info and extractor tool, like an un-zipper. You can do a lot of things with the files inside, but currently they are not all de-crypted... however, the release of this, we may have tech-noobs pushing both developers (unfairly) to focus on this tool, causing them to not continue development. In that case, I would just ignore them (like most developers).

There is a concept known as UX, or user experience. It can be the difference between the majority knowing about your program or only a select few. And with the amount of knowledge still not known about Switch hacking currently for the public will cause more people to beg these developers and making them wanting to continue updating these tools less.

So, tool accessibility based on tech knowledge? Why not just release the source code in assembly then? This doesn't resolve the underlying issue, as people can just use guides in order to do the same thing with the CLI, right?

Yes, this GUI tool makes it easier/more accessible to do a few of the more desired functions of this tool. However, the end user still has to go out of their way to get the files that they want to extract, and the complete tech illiterate wont know how to do that...

What reason is there to dump games at the current moment? There is neither any emulation that is able to run these dumps, nor any way to load these backups onto the Switch. Thus, as I stated, there are more risks to releasing a GUI version of this application than pros.

First of all, why are you trying to refute your own assertion of the purpose of the application? Data mining for things like soundtracks, if there are cross-platform games that have models that can be incorporated in other games that could be cool, or basically understanding the underlying game code from a learning perspective.
 
  • Like
Reactions: SimonMKWii

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
Really? I thought of it more as a file info and extractor tool, like an un-zipper. You can do a lot of things with the files inside, but currently they are not all de-crypted... however, the release of this, we may have tech-noobs pushing both developers (unfairly) to focus on this tool, causing them to not continue development. In that case, I would just ignore them (like most developers).



So, tool accessibility based on tech knowledge? Why not just release the source code in assembly then? This doesn't resolve the underlying issue, as people can just use guides in order to do the same thing with the CLI, right?

Yes, this GUI tool makes it easier/more accessible to do a few of the more desired functions of this tool. However, the end user still has to go out of their way to get the files that they want to extract, and the complete tech illiterate wont know how to do that...



First of all, why are you trying to refute your own assertion of the purpose of the application? Data mining for things like soundtracks, if there are cross-platform games that have models that can be incorporated in other games that could be cool, or basically understanding the underlying game code from a learning perspective.
Thank you! I'm glad you see this from my point of view.
 

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
Thank you! I'm glad you see this from my point of view.

Don't get too excited! I understand the "why" of you making it, it DOES makes sense, BUT if the original developer doesn't want a GUI to be released for the tool, then I respect their wishes, instead of releasing it anyways...
 
Last edited by SocraticBliss,

SimonMKWii

Professional Idiot
OP
Member
Joined
Nov 18, 2017
Messages
666
Trophies
0
Location
Melbourne, Victoria
XP
2,760
Country
Australia
Don't get too excited! I understand the "why" of you making it, it DOES makes sense, BUT if the original developer doesn't want a GUI to be released for the tool, then I respect their wishes, instead of releasing it anyways...
To be honest, I only saw his post on the original hactool thread after I finished developing the first version.
 

SocraticBliss

Well-Known Member
Member
Joined
Jun 3, 2017
Messages
130
Trophies
0
Age
36
XP
273
Country
United States
To be honest, I only saw his post on the original hactool thread after I finished developing the first version.

And that's understandable, you saw a problem, and wanted to create a solution, nothing wrong with that... just gotta be careful with respecting the developers wishes when it comes publishing/releasing it.
 
  • Like
Reactions: peteruk

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • No one is chatting at the moment.
  • SylverReZ @ SylverReZ:
    @Materia_tofu, We do learn a lot from plenty of talented individuals.
  • Materia_tofu @ Materia_tofu:
    this is true! i learned how to make soundfont remixes from a friend back in 2021
    +1
  • BakerMan @ BakerMan:
    Update on my brother: He's home now, tired and hungry, obviously, but other than that, seems to be doing fine.
    +2
  • Veho @ Veho:
    That's a relief to hear. Do you know what happened?
  • SylverReZ @ SylverReZ:
    @BakerMan, Any idea what happened? I hope that your brother's doing good.
  • BakerMan @ BakerMan:
    Well, from what I've heard from my parents, he had a seizure last night, perhaps an epileptic episode, fucking died, had a near death experience, my dad called the paramedics, they showed up, took him to the hospital, and he woke up covered in tubes, and started complaining.
  • BakerMan @ BakerMan:
    He couldn't eat until after his MRI, when he had a bomb pop.
  • BakerMan @ BakerMan:
    What matters now is that he's doing alright.
  • Veho @ Veho:
    But you still don't know what it was?
  • Veho @ Veho:
    Has he had seizures before?
  • The Real Jdbye @ The Real Jdbye:
    apparently stress can cause seizures, my brother had one during a test once
  • The Real Jdbye @ The Real Jdbye:
    never had one before that, and never had one since
  • Redleviboy123 @ Redleviboy123:
    Question about game texture chanching Do i need an own game id?
  • The Real Jdbye @ The Real Jdbye:
    @Veho for those that want to
    experience being sonic the hedgehog
  • Veho @ Veho:
    Ah, you mean
    furries.
    +1
  • The Real Jdbye @ The Real Jdbye:
    well, sonic fans are a whole separate thing from furries
  • The Real Jdbye @ The Real Jdbye:
    like bronys
  • The Real Jdbye @ The Real Jdbye:
    sonic porn is too weird even for me
  • Dumpflam @ Dumpflam:
    bruh
  • Dumpflam @ Dumpflam:
    guys how do i delete a post
  • The Real Jdbye @ The Real Jdbye:
    you don't
  • The Real Jdbye @ The Real Jdbye:
    you can report it and request deletion
  • BakerMan @ BakerMan:
    Also, no, that was his first time having a seizure, and hopefully the last
    +1
    BakerMan @ BakerMan: Also, no, that was his first time having a seizure, and hopefully the last +1