Skip to content

Authentication Notes

James edited this page Aug 25, 2019 · 10 revisions

This page describes the authentication procedure that takes place when the Flipnote Studio 3D web client tries to connect to an online service. Authentication must happen successfully before the online service can be used.

Initial request

The client first sends a POST request to / with the following HTTP headers:

Header Notes
Ugm-ID User's Flipnote Studio ID formatted as hex
Ugm-MAC Console MAC address formatted as hex
Ugm-Region Region ID
Ugm-Language Language Code
Ugm-Country Country Code (documented on 3dbrew)
Ugm-Time Console time, format YYYY/MM/DD hh:mm:ss
Ugm-Token ServiceToken
Ugm-ShopID Title ID?

The request body is a multipart form with the following items:

Name Notes
miiName User's Mii name encoded as UTF-16
miiImage User's Mii image as a 64x64 GIF image

Both of these seem to be blank/empty placeholder content in the EU/US version of Flipnote Studio 3D, presumably because the online functionality was hastily stripped back.

Response Headers:

Header Notes
Ugm-ChallengeBlob 44-character lowercase HEX string
Ugm-SessionID Session ID, this will be used by the client to identify the origin of any requests it makes after this point

The EU/US versions of Flipnote Studio 3D don't seem to do anything with Ugm-ChallengeBlob; it can be omitted

The standard HTTP Location header can also be used here to redirect the client to another URL.

Second request

After the 3DS received our response, it sent a GET request with the following HTTP headers:

Header Notes
Ugm-SessionID Same session ID as issued by the server
Ugm-ID User's Flipnote Studio ID formatted as hex
Ugm-Region Region ID
Ugm-Language Language Code
Ugm-Country Country Code (documented on 3dbrew)
Ugm-Version Flipnote Studio 3D app version

This is mostly just to confirm the session ID

Notes

Region ID Values

number region
0 Japan
1 America
2 Europe

Language Code Values

For now we're assuming these are the same as those used on the Wii, as documented here

number language
0 Japanese
1 English
2 German
3 French
4 Spanish
5 Italian
6 Dutch

If these are incorrect, the value might instead relate to the config values referenced on 3dsbrew