Saturday, August 9, 2014

SpillPass-Pi

I had a long series of tweets on this subject, while I was setting it up, and after I finished verifying that it worked, but here I'll expand on stuff.

So when I moved back in with my parents (#livingthedream), I had to deal with the lack of a wireless network in their house.  A long time ago we wired the entire house with cat5 and it's all been good, but with everything going wireless these days it's a blast from the past.  Wireless networks are certainly no substitute for wired networks, don't get me wrong, but since the 3DS doesn't have a LAN port, I needed a solution.

My temporary solution was to — get this — leave the house and go to where I knew a Nintendo Zone was so I could use its internet for Bravely Default's "Update Data" command, which gets you nemeses and actions sent by other players.  This also let me get StreetPasses, since the other function of a Nintendo Zone is to relay StreetPasses to you from the last six or so people to "tag" the Zone with a StreetPass.

This system, like most others, can be spoofed for the benefit of the user.  You see, as it turns out, there are only two pieces of information that matter for a Nintendo Zone.  Its SSID, and its MAC address.  When setting up consumer wireless equipment, SSID is a standard option as it differentiates between access points in a user-friendly manner.  The MAC address is supposed to be reasonably unique and be a better indication of different access points, that the devices connecting can care about a bit moreso than the SSID.  With the right hardware, the MAC address can be "spoofed", or changed to another strategically chosen MAC address.

As far as making the Nintendo 3DS think it's in range of a Nintendo Zone, the access point's SSID is all that matters.  It simply has an internal list of valid SSIDs, and if it sees one (and the network is unencrypted), it immediately hops on and tells you you're in range of a Nintendo Zone.

The access point providing you with the Nintendo Zone service actually doesn't do the caching of the StreetPass data itself.  This is handled by some server somewhere that Nintendo owns.  This is where the MAC address matters.  The 3DS will contact that server saying "hey I'm on a Nintendo Zone with this MAC address, here's my StreetPass info, gimme StreetPasses" and that server replies "lol okay here you go".  That's the entire conversation.

This means that ANY wireless access point can be a valid Nintendo Zone with its own set of StreetPasses to hand out.  The system appears to be entirely passive and just accepts new MAC addresses, even ones that aren't from actual real Nintendo Zones.

This brings me to the solution I have set up.  For not more than $70 I ordered a CanaKit Raspberry Pi (512 MB) Complete Starter Kit, and a Belkin 150N (F6D4050) USB 802.11b/g/n Wireless dongle.  It pretty much has to be that wireless dongle or one with the same chipset.  Using a customized Raspbian SD card image, my Raspberry Pi rotates around through a list of MAC addresses every five minutes.

Information on how I set all this up, complete with the directions I followed and links to where you can get the requisite hardware, can be found here.

Note that Win32 Disk Imager refused to show the SD card reader on both the Windows machines I tried it on.  I ended up having to use my Ubuntu box, which also has an SD card reader, to dd the image to the SD card.

However you get the image on the SD card, once it's there, you're good to go.  Slap that fucker into the Raspberry Pi, connect it to your network via a LAN cable, plug in the wireless dongle, and power it up.  After a short boot process, your 3DS will give you that happy message: "The Nintendo Zone service is available in this area."  Sit there for a bit longer and the notification LED will give you that oh-so-familiar green flash, letting you know that you just got StreetPasses without even having to leave your house.

Do note: this process creates an unsecured wireless access point on your home network.  To keep honest people from hopping onto it, you can set up a MAC address filter list, so that your brand new SpillPass-Pi will only let clients with specific MAC addresses connect.  The reason why this only works against honest people is that unencrypted wireless network traffic is balls easy to sniff, and once it's been sniffed your MAC address is just sitting right there in plain view.  Anyone who really wants to get onto it will get onto it with ease.  How is it so easy?  Well, considering that the entire principle this device is based around, spoofing one's MAC address, is performed every five minutes by the device, using a cheap USB wireless dongle that anyone can buy...

Anyway, if you wish to complete your knowledge of this subject, then here's one final bit of information.  The community has taken to referring to this method of gaining StreetPasses as HomePass.  I think it's quite the fitting term, personally.  Furthermore, HomePass is somewhat of a regular discussion subject on pretty much any 3DS-related subreddit.

No comments:

Post a Comment

I moderate comments because when Blogger originally implemented a spam filter it wouldn't work without comment moderation enabled. So if your comment doesn't show up right away, that would be why.