kinnay / NintendoClients

Python package to communicate with Switch, Wii U and 3DS servers
MIT License
537 stars 63 forks source link

invalid_device_account #107

Closed TheCryptan closed 1 year ago

TheCryptan commented 1 year ago

Hi,

I recently had my Nintendo Account Banned from using online services (Nintendo.aauth.AAuthError: ROM ID has been banned. Nintendo.aauth: (0105) ROM ID has been banned.)

So I've deleted the account from my switch, created a new Nintendo Online account, paid for Nintendo Online & re-purchased SMM2.

I've dumped the PRODINFO, prod.keys and base ticket via sysMMC. I then used the generate_console_data.py from TGRs MariOver repo to get all of the E-License Id, NA Id, BAAS_USER_ID & PASSWORD.

I've inserted a clip of the code that runs, and the error is occurring on the last call (response = await bass.login)

Any idea what I've missed or done wrong? Thank you!

SYSTEM_VERSION = 1600
TITLE_ID = 0x01009B90006DC000
TITLE_VERSION = 0x60000

dauth = DAuthClient(keys)
dauth.set_certificate(cert, pkey)
dauth.set_system_version(SYSTEM_VERSION)

dragons = DragonsClient()
dragons.set_certificate(cert, pkey)
dragons.set_system_version(SYSTEM_VERSION)

aauth = AAuthClient()
aauth.set_system_version(SYSTEM_VERSION)

baas = BAASClient()
baas.set_system_version(SYSTEM_VERSION)

# Request a device authentication token for dragons
response = await dauth.device_token(dauth.DRAGONS)
device_token_dragons = response["device_auth_token"]

# Request a device authentication token for aauth and bass
response = await dauth.device_token(dauth.BAAS)
device_token_baas = response["device_auth_token"]

# Request a contents authorization token from dragons
response = await dragons.contents_authorization_token_for_aauth(device_token_dragons, ELICENSE_ID, NA_ID, TITLE_ID)
contents_token = response["contents_authorization_token"]

# Request an application authentication token
response = await aauth.auth_digital(TITLE_ID, TITLE_VERSION, device_token_baas, contents_token)
app_token = response["application_auth_token"]

# Request an anonymous access token for baas
response = await baas.authenticate(device_token_baas)
access_token = response["accessToken"]

# Log in on the baas server
response = await baas.login(
    BAAS_USER_ID, BAAS_PASSWORD, access_token, app_token
)

image

TheCryptan commented 1 year ago

Figured it out. I hadn't decrypted my 8000000000000010 before extracting my BAAS_USERNAME & PASSWORD (silly mistake).