(release date) |
StarlitSkies (talk | contribs) (slight factual corrections and style improvements) |
||
Line 14: | Line 14: | ||
== Features == | == Features == | ||
When given the unique data (<code>otp.bin</code> and either <code>SecureInfo.bin</code> or the serial number & eShop region) of a console and the required basic constants, cleaninty can act as the console it's given and do the following: | When given the unique data (<code>otp.bin</code> and either <code>SecureInfo.bin</code> or the serial number & eShop region data) of a console and the required basic constants, cleaninty can act as the console it's given and do the following: | ||
* <code>GenJson</code>: Compiles the console's data into a single JSON file. This JSON is required for | * <code>GenJson</code>: Compiles the console's data into a single JSON file. This JSON is required for all other commands except <code>RecoverIVS</code>. | ||
* <code>CheckReg</code>: Obtains the console's eShop status and any titles attached to its eShop account, then updates the JSON file if any differences in the data are found. | * <code>CheckReg</code>: Obtains the console's eShop status and any titles attached to its eShop account, then updates the JSON file if any differences in the data are found. | ||
* <code>SysTransfer</code>: Moves the eShop titles of the source console to the target console. This is the | * <code>SysTransfer</code>: Moves the eShop titles of the source console to the target console. This is the secondary part of what is known informally as a "SOAP Transfer". | ||
** Using this command will trigger a 7-day cooldown on system transfers for both consoles, the same as a 'regular' transfer. | ** Using this command will trigger a 7-day cooldown on system transfers for both consoles, the same as a 'regular' transfer. | ||
* <code>NNIDTransfer</code>: <u>(Still experimental. Use with caution.)</u> Moves only the NNIDs of the source console to the target console. This is not affected by cooldowns and does not trigger one. | * <code>NNIDTransfer</code>: <u>(Still experimental. Use with caution.)</u> Moves only the NNIDs of the source console to the target console. This is not affected by transfer cooldowns and does not trigger one. | ||
* <code>LastTransfer</code>: Provides the date&time of the given console's last system transfer, the number of transfers it has ever done, and the time at which the current cooldown will expire. | * <code>LastTransfer</code>: Provides the date&time of the given console's last system transfer, the number of transfers it has ever done, and the time at which the current transfer cooldown will expire if there is one. | ||
* <code>GetIVS</code>: Obtains the console's <code>movable.sed</code> from the SOAP servers, if the servers have a stored copy. | * <code>GetIVS</code>: Obtains the console's <code>movable.sed</code> from the SOAP servers, if the servers have a stored copy. | ||
* <code>SetIVS</code>: Uploads the JSON's stored <code>movable.sed</code> to the SOAP servers. This will overwrite the current stored movable. | * <code>SetIVS</code>: Uploads the JSON's stored <code>movable.sed</code> to the SOAP servers. This will overwrite the current stored movable. | ||
* <code>RecoverIVS</code>: Tries to recover a console's <code>movable.sed</code> from only its raw <code>otp.bin</code> | * <code>RecoverIVS</code>: Tries to recover a console's <code>movable.sed</code> from only its raw <code>otp.bin</code> and eShop region data. | ||
* <code>EShopDelete</code>: Deletes the target console's eShop account. | * <code>EShopDelete</code>: Deletes the target console's eShop account. | ||
* <code>EShopRegionChange</code>: Deletes the target console's eShop account and attempts to create a new one in the entered region. This is the | * <code>EShopRegionChange</code>: Deletes the target console's eShop account and attempts to create a new one in the entered region. This is the main part of a "SOAP Transfer" and is what grants eShop access again. | ||
** If this fails, <code>SysTransfer</code> any conflicting titles off of the target console first. | ** If this fails, <code>SysTransfer</code> any conflicting titles off of the target console first. | ||
* <code>ETickets</code>/<code>ETicketDownload</code>/<code>ETikTitleDownload</code>: Lists all owned eShop tickets / downloads all tickets / downloads the titles attached to all tickets, respectively, from the given console's eShop account. | * <code>ETickets</code>/<code>ETicketDownload</code>/<code>ETikTitleDownload</code>: Lists all owned eShop tickets / downloads all tickets / downloads the titles attached to all tickets, respectively, from the given console's eShop account. | ||
Line 68: | Line 68: | ||
The commands are the same on all operating systems. Run <code>cleaninty ctr (command) --help</code> for information on an individual command's syntax. | The commands are the same on all operating systems. Run <code>cleaninty ctr (command) --help</code> for information on an individual command's syntax. | ||
As an example, the list of commands needed to set up two consoles' data and perform a SOAP transfer between them would be as follows: | As an example, the minimum list of commands needed to set up two consoles' data and perform a SOAP transfer between them would be as follows: | ||
# <code>cleaninty ctr GenJson --otp otp.bin --secureinfo secinfo.bin --out soap_donor.json</code> | # <code>cleaninty ctr GenJson --otp otp.bin --secureinfo secinfo.bin --out soap_donor.json</code> | ||
# <code>cleaninty ctr GenJson --otp otp1.bin --secureinfo secinfo1.bin --out | # <code>cleaninty ctr GenJson --otp otp1.bin --secureinfo secinfo1.bin --out soap_target.json</code> | ||
# <code>cleaninty ctr CheckReg -C soap_donor.json</code> | # <code>cleaninty ctr CheckReg -C soap_donor.json</code> | ||
# <code>cleaninty ctr CheckReg -C | # <code>cleaninty ctr CheckReg -C soap_target.json</code> | ||
# <code>cleaninty ctr EShopRegionChange -C soapee.json -r (new eShop region - required) -c ( | #* The CheckReg commands are not necessary if you are already certain the donor and target are in the same region. | ||
#* If this succeeds, '''stop here'''. The next two commands are only needed if this fails. | # <code>cleaninty ctr EShopRegionChange -C soapee.json -r (new eShop region - required) -c (country in chosen region - usually required) -l (language in chosen region/country - optional)</code> | ||
# <code>cleaninty ctr SysTransfer -s | #* If this succeeds, '''stop here'''. The next two commands are only needed if this one fails. | ||
# <code>cleaninty ctr EShopRegionChange -C | # <code>cleaninty ctr SysTransfer -s soap_target.json -t soap_donor.json</code> | ||
# <code>cleaninty ctr EShopRegionChange -C soap_target.json -r (new eShop region - required) -c (country in chosen region - usually required) -l (language in chosen region/country - optional)</code> |
Revision as of 02:07, 19 August 2023
Developer(s) | luigoalma |
---|---|
Platform | Microsoft Windows, macOS, Linux |
Version | 0.1.3 (March 18, 2023 | )
Links | |
GitHub | luigoalma/cleaninty |
Download | |
cleaninty is a PC tool used to communicate with Nintendo's SOAP servers. For a 3DS, these servers deal with managing eShop accounts, downloading eShop titles, and system transfers.
Features
When given the unique data (otp.bin
and either SecureInfo.bin
or the serial number & eShop region data) of a console and the required basic constants, cleaninty can act as the console it's given and do the following:
GenJson
: Compiles the console's data into a single JSON file. This JSON is required for all other commands exceptRecoverIVS
.CheckReg
: Obtains the console's eShop status and any titles attached to its eShop account, then updates the JSON file if any differences in the data are found.SysTransfer
: Moves the eShop titles of the source console to the target console. This is the secondary part of what is known informally as a "SOAP Transfer".- Using this command will trigger a 7-day cooldown on system transfers for both consoles, the same as a 'regular' transfer.
NNIDTransfer
: (Still experimental. Use with caution.) Moves only the NNIDs of the source console to the target console. This is not affected by transfer cooldowns and does not trigger one.LastTransfer
: Provides the date&time of the given console's last system transfer, the number of transfers it has ever done, and the time at which the current transfer cooldown will expire if there is one.GetIVS
: Obtains the console'smovable.sed
from the SOAP servers, if the servers have a stored copy.SetIVS
: Uploads the JSON's storedmovable.sed
to the SOAP servers. This will overwrite the current stored movable.RecoverIVS
: Tries to recover a console'smovable.sed
from only its rawotp.bin
and eShop region data.EShopDelete
: Deletes the target console's eShop account.EShopRegionChange
: Deletes the target console's eShop account and attempts to create a new one in the entered region. This is the main part of a "SOAP Transfer" and is what grants eShop access again.- If this fails,
SysTransfer
any conflicting titles off of the target console first.
- If this fails,
ETickets
/ETicketDownload
/ETikTitleDownload
: Lists all owned eShop tickets / downloads all tickets / downloads the titles attached to all tickets, respectively, from the given console's eShop account.
Installation
Instructions for installation & setup are on the GitHub page, but the installation instructions may need to be interpreted for your OS.
A guide to legally deriving the AES Constant, "C", can be found on this page.
The AES Constant, along with all other constants used by cleaninty, are copyrighted data. Obtaining them from your own console is fine, but do not share the constants with anyone else. |
Windows
Don't bother trying to use cleaninty through Command Prompt or PowerShell. Windows has OpenSSL disabled in its curl.exe
, but cleaninty requires OpenSSL to function. Working around this issue manually is obnoxious and not worth the time spent.
Instead, install msys2 and install cleaninty from within there.
To install cleaninty once msys2 is installed, open the terminal mingw64.exe
that is inside the msys2 installation folder, then run the following two commands one at a time:
pacman -Syu mingw-w64-x86_64-python mingw-w64-x86_64-python-defusedxml mingw-w64-x86_64-python-cryptography mingw-w64-x86_64-python-pycurl
python -m pip install cleaninty
Once this is completed, from here on out you will need to open the terminal mingw64.exe
to use cleaninty.
Be aware that when using cleaninty through msys2, the place it will look in to find boot9.bin , SSLCertificates , and ctr_constants.json is a folder named 3ds inside your msys2 home folder. |
macOS and Linux
First, ensure you have a python version of 3.7 or newer. You can check if your python version is new enough by opening a terminal and running the command python3 --version
.
For the method that involves pip
, you can follow the instructions on the GitHub page with no modifications.
For the method that involves setup.py
, it is recommended to obtain the source code via the command git clone https://github.com/luigoalma/cleaninty.git
. This will guarantee the files are in the correct layout.
Usage
There is no graphical interface for cleaninty. All commands are ran through the command line.
Command line
The commands are the same on all operating systems. Run cleaninty ctr (command) --help
for information on an individual command's syntax.
As an example, the minimum list of commands needed to set up two consoles' data and perform a SOAP transfer between them would be as follows:
cleaninty ctr GenJson --otp otp.bin --secureinfo secinfo.bin --out soap_donor.json
cleaninty ctr GenJson --otp otp1.bin --secureinfo secinfo1.bin --out soap_target.json
cleaninty ctr CheckReg -C soap_donor.json
cleaninty ctr CheckReg -C soap_target.json
- The CheckReg commands are not necessary if you are already certain the donor and target are in the same region.
cleaninty ctr EShopRegionChange -C soapee.json -r (new eShop region - required) -c (country in chosen region - usually required) -l (language in chosen region/country - optional)
- If this succeeds, stop here. The next two commands are only needed if this one fails.
cleaninty ctr SysTransfer -s soap_target.json -t soap_donor.json
cleaninty ctr EShopRegionChange -C soap_target.json -r (new eShop region - required) -c (country in chosen region - usually required) -l (language in chosen region/country - optional)