Attention: What's described here was found out by reverse-engineering Nintendo Video on a European 3DS and might not apply to Japanese Nintendo Video service.
Nintendo Video is a service allowing owners of Japanese and European 3DSes to download and watch various videos offered by Nintendo. Nintendo Video uses SpotPass to download videos even when the Nintendo Video app itself is not running.
Surprisingly, Nintendo Video uses plain unencrypted HTTP connection to transfer videos. When "Connectivity check" button is pressed, Nintendo Video sends a following HTTP request to pubeu-p.est.c.app.nintendowifi.net:
GET /1/110/1/CHECK HTTP/1.1
As you can see, no console-specific data is being sent. The server respons with either a 403 or 404 error code, where 403 means that user's region is not allowed to use Nintendo Video (the region is mot likely determined by IP address) and 404 means that everything's OK.
If everything is OK with the region check, the 3DS proceeds to download videos. It seems that support for only four videos is hardcoded into Nintendo Video app, because it makes following requests (to the same server as the CHECK query):
GET /1/110/1/ESP_MD1 HTTP/1.1
GET /1/110/1/ESP_MD2 HTTP/1.1
GET /1/110/1/ESP_MD3 HTTP/1.1
GET /1/110/1/ESP_MD4 HTTP/1.1
ESP_MDi seems to return 403 if user's region is not allowed, 404 if ith video doesn't exist and the video itself otherwise. As of 18th of July 2011, only 1st and 2nd videos are available from UK IP addresses.
These videos can easily be downloaded from any computer with UK IP address (DE & NL should probably work too, but I didn't check that) using wget without any special settings.
After downloading videos, Nintendo Video stores them on the SD card. However, it's not yet known how the data is stored and it's possible that it's encrypted with a console-specific key.
File format used for storing videos is not yet known either. Both videos that were available at 18th of July 2011 contained string "boss" in the first four bytes, which leads me to believe this is a "magic number" used to identify this type of file.
In case you want to try messing with Nintendo Video, here's a description of what I did:
- Set up a DNS server using bind9, which returned my IP as the IP for pubeu-p.est.c.app.nintendowifi.net (bind config).
- Don't forget to replace MY_IP in config with your IP address, but don't replace the IP of conntest.nintendowifi.net service
- Set up an HTTP server using nginx and put ESP_MD1, ESP_MD2 (which I have downloaded from Nintendo's servers earlier, see above) in my /var/www/1/110/1/ folder.
- Configured my 3DS to use my DNS server as both primary and secondary DNS server.