Hacking Homebrew A new way to experience StreetPass

sorunome

Well-Known Member
OP
Newcomer
Joined
Apr 13, 2024
Messages
60
Trophies
0
XP
188
Country
Germany

NetPass: A new way to experience StreetPass​

qr.png

Scan QR code to download!

Releases: https://gitlab.com/Sorunome/3ds-streetpass/-/releases
Source Code: https://gitlab.com/Sorunome/3ds-streetpass
Discord: https://discord.gg/QY8wzCMHyP

Introducing NetPass: In the current state of the world, the 3DS is, sadly, on decline. That makes getting StreetPass'es harder and harder, due to fewer and fewer people taking their 3DS with them on a walk. This is where NetPass comes in!
Unlike StreetPass, NetPass works over the internet. Upon opening NetPass, you can pick various locations to go to, i.e. the train station, or a town plaza. Upon entering a location, you get passes of others who are in the same location! And, while you are at the location, others who enter it can get passes with you. But beware! You can only switch locations once every 10 hours!

To security researches etc
., If there are known vulnerabilities in certain StreetPass titles, soru would appreciate you reaching out (via DM / Message) and explaining it, so that she can add specific filters for said titles, to keep NetPass safe! Since soru is in the scene since checks thread creation date two weeks, she sadly does not know of any yet. Thank you in advance!

Q&A​

How do I use this thing? You open the app and then it presents you the option to enter a virtual location. Currently there are three: the train station, the plaza and the mall. Upon entering a virtual location you can get netpasses of others who are also in that location.

Any time I open the app it says I am in a location. What's up? Once entering a location, a 10-hour long session is started. During those 10 hours any subsequent opening of the app will reconnect you to the same location. After 10 hours have elapsed you can choose a new location.

I only got like one netpass when entering a location, wtf? On the first connection your data is uploaded to a database. There is a chance you receive passes immediately, however given more time your data will “pair” with someone else’s data which will then be available to download. This random pairing can occur once an hour, so there is no guarantee you will receive passes every time the database updates. Imagine it as someone with a 3DS walking past you, this can happen 2 times a day or 40 times a day, depending on your luck. Your uploaded data will remain in this pairing state for up to 30 days, therefore checking in and switching locations is advised, especially since each location has its' own database. Patience is key.

Do I have to leave this app open? Can I put my 3DS to sleep? There is no need to leave NetPass open to accumulate passes. The pairing of datasets happens server side, you simply need to check in every so often.

On the bottom screen it says error xxx, what do i do? There are some errors on networking currently, e.g. if you start the app before your 3DS has internet connection, so chances are it might work if you just close the app and open it again. If, however, the issue persists, please leave a post in this thread, *including* the error code.
-6: App was started before the Device had internet access, make sure it’s connected first
-28: Connection timed out. Try a different network, yours might be unstable/too slow
-60: Certificate Error. Make sure Date and Time on your device is accurate
-502: Server side issue, nothing you can do, please post
-503: Server side issue, nothing you can do, most likely maintenance

Will normal StreetPass still work? Yes, it'll still work just fine.

Q&A (Spanish)​

¿Cómo uso esta aplicación?
Inicia la app y te dará la opción de entrar en una ubicación virtual. En la actualidad son tres: la estación de trenes, la plaza y el centro comercial. Después de entrar en una ubicación, recibirás NetPass de los demás que también están en el mismo lugar.

Al iniciar la aplicación, me pone que estoy en un lugar. ¿Para qué?
Después de entrar en una ubicación, la app inicia una sesión de 10 horas. A lo largo de las 10 horas, el reconectarte a la app te abrirá el misma lugar. Tras una estancia de 10 horas, tienes la opción de elegir otro lugar de nuevo.

Solo me ha dado un NetPass después de entrar en una ubicación. ¿Por qué?
Al conectarte por primera vez, tus datos se entregan a la base de datos. Es posible recibir pases de golpe; sin embargo, más tiempo esperes, más probabilidad hay de que se te emparejen los datos de otro usuario. De ahí que no hay garantía de que recibas un pase cada vez que te conectas, incluso después del reanudo cada hora de los servidores. En la vida real, es posible que se te cruce una sola persona que lleve una 3DS o con 40 que la lleven, según tu suerte. Los datos enviados a los servidores se permanecerán allí durante 30 días, por lo que se recomienda la comprobación y el cambio de ubicaciones. Ten paciencia.

¿Hay que dejar abierta la aplicación? ¿Está bien dejar la 3DS en reposo?
No hay que dejar abierta la app NetPass para recibir datos ajenos. El emparejamiento en la base de datos sucede en los servidores, por lo que solo hay que comprobar de vez en cuando.

En la pantalla inferior pone Error XXX, ¿qué hago?
Actualmente hay unos cuantos errores en la red de la aplicación, por ejemplo, el iniciar la aplicación antes de que la 3DS muestre que se ha conectado a internet. Es posible que si cierras la app y la reinicias, vuelva a funcionar. Sin embargo, en el caso de que persista el problema, favor de escribir en este hilo — incluye el código del error.
-6: La app se inició antes de que la 3DS se conectara a internet.
-28: La conexión caducó. Comprueba otra red por si la tuya se conecta demasiado lentamente.
-60: Error de certificado. Comprueba la fecha y la hora de tu dispositivo.
-502: Error de servidores, favor de publicarlo en este hilo.
-503: Error de servidores, muy probable que sea el mantenimiento.

¿Seguirá igual el Street Pass original del dispositivo?
¡Sí!

Hello!
Since nowadays legitimate street passes out in the open are rare, we have been thinking about how to nicely streamline fake streetpasses.

Just having finished a tech demo, soru wanted to present it: It is a homebrew application which you run. Upon running, it uploads your streetpasses (currently to sorus own server, streetpass.sorunome.de), matches the streetpasses with those others uploaded and downloads the streetpass data of others, as if you passed them! There is no background functionality or anything currently, you have to open the app every time you want to get streetpasses, and it may still be finicky. But hey, that is what testing is for, right?

Furthermore soru wanted to brainstorm some ideas on how to nicely get streetpasses. So far soru could think of (no idea if any of those will be implemented):
- some phone app so that you do streetpasses phone-to-phone instead and it syncs with the 3ds
- Maybe if you interact with someones message on juxt or something?
- ???

The source code is available on sorus gitlab: https://gitlab.com/Sorunome/3ds-streetpass

Attached to this post is the 3dsx file for anyone who wants to try this out themself!
Thanks to:
- wwylele for this gist describing some of the cecd functionality
- NarcolepticK for this repo describing more cecd functionality
- StreetPass 2 for valuable data dumps
- 3Dbrew for its valuable database of information, especially around the cecd service
 
Last edited by sorunome,

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
I'm a little surprised no one's done this before now rather than obliging people to keep digging around with Godmode9. I guess no one with the skills had sufficient initiative. So, good job there.

- some phone app so that you do streetpasses phone-to-phone instead and it syncs with the 3ds
I suppose something Bluetooth-based might work, but It seems unlikely that such an app would ever reach sufficiently wide adoption to make it worthwhile.

Even if it did, transferring data from a phone to a 3DS would require considerable wizardry; even from a PC to a 3DS would be tricky. The only convenient way of doing so is FTP. (Maybe someone could port Dukto?)
 

TheStonedModder

Well-Known Member
Member
Joined
Dec 25, 2022
Messages
830
Trophies
0
Age
27
XP
1,638
Country
United States
I'm a little surprised no one's done this before now rather than obliging people to keep digging around with Godmode9. I guess no one with the skills had sufficient initiative. So, good job there.


I suppose something Bluetooth-based might work, but It seems unlikely that such an app would ever reach sufficiently wide adoption to make it worthwhile.

Even if it did, transferring data from a phone to a 3DS would require considerable wizardry; even from a PC to a 3DS would be tricky. The only convenient way of doing so is FTP. (Maybe someone could port Dukto?)
iirc there was a bluetooth method back in the day. I recall people using raspberry pis for streetpass

https://github.com/Matthew-Hsu/PiPass
 

dicamarques

Definitely not Bruce Wayne.
Member
Joined
Jun 25, 2010
Messages
1,096
Trophies
1
Location
Your computer's Recycle Bin
Website
www.google.com
XP
1,933
Country
Portugal
Forget bluetooth since the 3DS is wifi based.
For that you would need direct access to your wifi card to "hand make" your own wifi packets compatible with the 3ds streetpass.

Nevertheless, good idea sorunome! If you can implement some background functionality it just might work!
 

sorunome

Well-Known Member
OP
Newcomer
Joined
Apr 13, 2024
Messages
60
Trophies
0
XP
188
Country
Germany
I'm a little surprised no one's done this before now rather than obliging people to keep digging around with Godmode9. I guess no one with the skills had sufficient initiative. So, good job there.


I suppose something Bluetooth-based might work, but It seems unlikely that such an app would ever reach sufficiently wide adoption to make it worthwhile.

Even if it did, transferring data from a phone to a 3DS would require considerable wizardry; even from a PC to a 3DS would be tricky. The only convenient way of doing so is FTP. (Maybe someone could port Dukto?)
Soru had to do a lot of research and libctru did not contain any code for the cecd service yet, so maybe the barrier for entrance was too high?
iirc there was a bluetooth method back in the day. I recall people using raspberry pis for streetpass
soru was thinking about bluetooth on phone. The raspberry pis for streetpass was indeed for homepass, but that infrastructure is shut down nowadays
Forget bluetooth since the 3DS is wifi based.
For that you would need direct access to your wifi card to "hand make" your own wifi packets compatible with the 3ds streetpass.

Nevertheless, good idea sorunome! If you can implement some background functionality it just might work!
Soru isn't too sure how to approach it; is it possible to write a custom sysmodule and to subscribe to some of the events from others? if so, it could be done
SpillPassPi FTW!
huh?
 

NickSplat2077

New Member
Newbie
Joined
Jan 17, 2024
Messages
3
Trophies
0
Age
23
XP
38
Country
United States
not sure if its possible to do this, but to keep the original streetpass feeling, maybe it could only match you with someone who has a similar number of steps done that day?
but also i feel like there should be a way to identify which streetpasses are real and which one were given by the homebrew, because i have still been able to get streetpasses to this day lol
 

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
soru was thinking about bluetooth on phone. The raspberry pis for streetpass was indeed for homepass, but that infrastructure is shut down nowadays

Soru isn't too sure how to approach it; is it possible to write a custom sysmodule and to subscribe to some of the events from others? if so, it could be done
Not sure what you mean exactly. I thought in your first post you were thinking of some sort of Bluetooth app for phones that would exchange Streetpass data between phones, and then separately transfer that data from phones to the 3DS.

It would all be kind of redundant if someone can write an app that sends Streetpass data directly over wifi, simulating an actual 3DS. Someone's presumably still working on that; all the pieces are in place, but the implementation is difficult.
 

sorunome

Well-Known Member
OP
Newcomer
Joined
Apr 13, 2024
Messages
60
Trophies
0
XP
188
Country
Germany
not sure if its possible to do this, but to keep the original streetpass feeling, maybe it could only match you with someone who has a similar number of steps done that day?
but also i feel like there should be a way to identify which streetpasses are real and which one were given by the homebrew, because i have still been able to get streetpasses to this day lol
1. That is exactly what soru wanted to gather ideas from in this thread, how to determine if you are streetpassing whom, as soru isn't too sure about the social aspect of streetpass things. While the step counter has nothing to do with streetpass such additional information could be used for matching, yes
2. sadly it won't be possible to differentiate between streetpass types
Not sure what you mean exactly. I thought in your first post you were thinking of some sort of Bluetooth app for phones that would exchange Streetpass data between phones, and then separately transfer that data from phones to the 3DS.

It would all be kind of redundant if someone can write an app that sends Streetpass data directly over wifi, simulating an actual 3DS. Someone's presumably still working on that; all the pieces are in place, but the implementation is difficult.
The issue with the streetpass protocol itself is that it uses very low-level access to the wifi chip, on a level that phones usually don't grant apps (root should prolly work, but, well, isn't very well-versed in android dev, let alone ios dev)
 

regnad

Button Masher
Member
Joined
May 19, 2008
Messages
2,515
Trophies
1
Age
53
XP
3,683
Country
Japan
Hello!
Since nowadays legitimate street passes out in the open are rare, we have been thinking about how to nicely streamline fake streetpasses.

Just having finished a tech demo, soru wanted to present it: It is a homebrew application which you run. Upon running, it uploads your streetpasses (currently to sorus own server, streetpass.sorunome.de), matches the streetpasses with those others uploaded and downloads the streetpass data of others, as if you passed them! There is no background functionality or anything currently, you have to open the app every time you want to get streetpasses, and it may still be finicky. But hey, that is what testing is for, right?

Furthermore soru wanted to brainstorm some ideas on how to nicely get streetpasses. So far soru could think of (no idea if any of those will be implemented):
- some phone app so that you do streetpasses phone-to-phone instead and it syncs with the 3ds
- Maybe if you interact with someones message on juxt or something?
- ???

The source code is available on sorus gitlab: https://gitlab.com/Sorunome/3ds-streetpass

Attached to this post is the 3dsx file for anyone who wants to try this out themself!

Thanks to:
- wwylele for this gist describing some of the cecd functionality
- NarcolepticK for this repo describing more cecdfunctionality
- StreetPass 2 for valuable data dumps
Can you put it on hshop?
 

sorunome

Well-Known Member
OP
Newcomer
Joined
Apr 13, 2024
Messages
60
Trophies
0
XP
188
Country
Germany
Can you put it on hshop?
if you are asking about something like universal updater, then yes, it should be possible to add that there. Soru isn't quite sure if she likes the state of it yet, though, especially since you can just re-run it to get matches again and again, it doesn't mark matches as "already done" on the server yet
 

assassinz

Visoly 512 Flash Advance Linker Xtreme Master!
Member
Joined
Mar 17, 2003
Messages
1,295
Trophies
2
Location
The Internet
XP
1,392
Country
United States
Hello!
Since nowadays legitimate street passes out in the open are rare, we have been thinking about how to nicely streamline fake streetpasses.

Just having finished a tech demo, soru wanted to present it: It is a homebrew application which you run. Upon running, it uploads your streetpasses (currently to sorus own server, streetpass.sorunome.de), matches the streetpasses with those others uploaded and downloads the streetpass data of others, as if you passed them! There is no background functionality or anything currently, you have to open the app every time you want to get streetpasses, and it may still be finicky. But hey, that is what testing is for, right?

Furthermore soru wanted to brainstorm some ideas on how to nicely get streetpasses. So far soru could think of (no idea if any of those will be implemented):
- some phone app so that you do streetpasses phone-to-phone instead and it syncs with the 3ds
- Maybe if you interact with someones message on juxt or something?
- ???

The source code is available on sorus gitlab: https://gitlab.com/Sorunome/3ds-streetpass

Attached to this post is the 3dsx file for anyone who wants to try this out themself!

Thanks to:
- wwylele for this gist describing some of the cecd functionality
- NarcolepticK for this repo describing more cecdfunctionality
- StreetPass 2 for valuable data dumps
Would it be possible to create a homebrew app on Wii/WiiU to get Streetpasses via wifi to the 3DS?
 

SylverReZ

The planet is fine. The people are crazy.
Member
GBAtemp Patron
Joined
Sep 13, 2022
Messages
7,208
Trophies
3
Location
The Wired
Website
m4x1mumrez87.neocities.org
XP
22,086
Country
United Kingdom

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
Would it be possible to create a homebrew app on Wii/WiiU to get Streetpasses via wifi to the 3DS?
No one's going to do that with a Wii/WiiU before they figure out how to do it with a PC first. ("Possible" is such a freakin' useless word...)

I might as well just link to the last thread where this was discussed in depth:
https://gbatemp.net/threads/homepass-recreation-streetpass-reverse-engineering.562161/

Don't think so. But a way of creating a StreetPass relay be to create a virtual WiFi hotspot with a spoofed MAC address, this will make it think you're connecting to a public space. Not sure if I recommend this.
https://gbatemp.net/threads/how-to-have-a-homemade-streetpass-relay.352645/
As mentioned above: Homepass relays were strictly dependent on a service that Nintendo took down a few years ago.
 
  • Like
Reactions: SylverReZ

RAHelllord

Literally the wurst.
Member
Joined
Jul 1, 2018
Messages
714
Trophies
1
XP
2,760
Country
Germany
This is neat, but I think the "easiest", read most user friendly, option would be to separate things out between phone and 3DS app + Luma3DS patch for background transfers, and all the communication is handled over internet via centralized server.

Basically the main app is on the 3DS, it should allow you to create a simple profile on the central server that holds all the relevant street pass information. Either via a manually created profile, or an automatically created one based on whatever unique information is on the 3DS. Other functions would only need to be something like a one button upload of new street pass data and manual download for convenience. This app could also keep track of all street pass data, and whether it came from the 3DS itself or was downloaded from the server instead.

The Luma3DS patch, if possible, would basically just upload and download new things through the app in the background, either on boot, once per hour, or something like that.

Meanwhile the phone app would basically just be the companion app, download it, scan a custom QR code on the 3DS to sync it to the same profile on the server, and then listen for other people running the same app. If there's a hit either phone transmits that hit to the server, the server "exchanges" the data internally, and both people can then download the new street pass data the next time they boot their 3DS near a wifi location.

While this approach would still be incredibly complex, it should skip a bunch of stupid translation, conversion, and privacy issues since most of the sensitive bits are entirely contained within the central server. It would also make it fairly easy to set up an account as most of that could be automated, especially on the phone.
It should also help deal with security concerns over bluetooth, as basically nothing but a short ID would need to be transmitted, which should be simple to sanitize so it can't be used to run arbitrary code on either phone. Similar for the server handling everything, the only streetpass data would come from 3DS systems, the phones would only ever upload an ID, a time stamp, and probably not much else.

Edit: Maybe this is something the pretendo devs could help with, too. If you could piggy back off of their auth system and infrastructure that might streamline a thing or two.
 

Kwyjor

Well-Known Member
Member
Joined
May 23, 2018
Messages
4,323
Trophies
1
XP
4,454
Country
Canada
The Luma3DS patch, if possible, would basically just upload and download new things through the app in the background, either on boot, once per hour, or something like that.
I'm not sure anyone's made any kind of Luma patch yet capable of doing things like that in the background. Seems like the sort of thing that could cause heaps of problems. On the other hand, maybe it would be possible to somehow patch the existing 3DS background services? In any case it would probably be a whole lot easier just to run the thing manually.

Meanwhile the phone app would basically just be the companion app, download it, scan a custom QR code on the 3DS to sync it to the same profile on the server, and then listen for other people running the same app.
This is one of those cases where I think if it was feasible to make an app like that, someone would have done it by now. The closest thing I can think of is the Canadian COVID contact-tracing app, which I understand ultimately failed because not nearly enough people bothered to install it.
 

RAHelllord

Literally the wurst.
Member
Joined
Jul 1, 2018
Messages
714
Trophies
1
XP
2,760
Country
Germany
I'm not sure anyone's made any kind of Luma patch yet capable of doing things like that in the background. Seems like the sort of thing that could cause heaps of problems. On the other hand, maybe it would be possible to somehow patch the existing 3DS background services? In any case it would probably be a whole lot easier just to run the thing manually.
There's definitely a lot of if's there, but that's also just me shooting in the dark for the biggest amount of user convenience, with technical feasibility second or third at best.
This is one of those cases where I think if it was feasible to make an app like that, someone would have done it by now. The closest thing I can think of is the Canadian COVID contact-tracing app, which I understand ultimately failed because not nearly enough people bothered to install it.
The EU also made one and it was quite successful. However we are talking about streetpass, the amount of people still carrying a 3DS around isn't all that great either. Hell, chances are more people might be interested in a sort of "set it and forget it" app on their phone than carrying their 3DS around. And with my idea that would be feasible as the 3DS isn't needed for any of the actual exchanges, it only ever talks to the server occasionally to check for new data.
 

duwen

Old Man Toad
Member
Joined
Sep 6, 2013
Messages
3,195
Trophies
2
Location
Bullet Hell
Website
www.exophase.com
XP
4,303
Country
United Kingdom
Works nicely, and I'm sure will be better if/when more people adopt it.
It could use a little more verbosity - I initially thought it had crashed as there was a long period of just black screens before the "succesful upload" message and again before the download message.
 

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
  • AncientBoi @ AncientBoi:
    How are you doing today K3Nv2?
  • AncientBoi @ AncientBoi:
    You did? By whom?
  • AncientBoi @ AncientBoi:
    Ohh, Don't tell me lEOTck did it to you? :O:sad:
  • BakerMan @ BakerMan:
    nah we all know luke is who leo's smashing
    +1
  • AncientBoi @ AncientBoi:
    Oh :shit:! And I didn't get to 📽️ it! :angry::sad::cry: :hateit:
  • BakerMan @ BakerMan:
    GUYS I JUST FOUND OUT THAT ULTERIOR MOTIVES WAS FOUND YESTERDAY, AND IT WAS FROM P O R N 💀😭
    +1
  • AncientBoi @ AncientBoi:
    😱 .............................. :evil::tpi::evil:
  • Xdqwerty @ Xdqwerty:
    Good afternoon
  • Xdqwerty @ Xdqwerty:
    @BakerMan, what's ulterior motives?
  • zeith_7 @ zeith_7:
    it was a lostwave song
  • Xdqwerty @ Xdqwerty:
    @zeith_7, 1) what's lostwave? 2) give context
  • zeith_7 @ zeith_7:
    lostwaves are like songs that became lost
  • zeith_7 @ zeith_7:
    they are partially or never found
  • zeith_7 @ zeith_7:
    ulterior motives is one of the internets lostwaves
  • Xdqwerty @ Xdqwerty:
    Ok read the Wikipedia article
  • zeith_7 @ zeith_7:
    and basically people were trying to find it for a while after a post with the lost songs only snippet
  • Xdqwerty @ Xdqwerty:
    @zeith_7, and an obscure norp film had the song
  • zeith_7 @ zeith_7:
    correct
  • zeith_7 @ zeith_7:
    the orginal snippet was from a pirated verison of the film basically
  • zeith_7 @ zeith_7:
    or so i think
  • zeith_7 @ zeith_7:
    i never expected it to get discovered this year/month
  • K3Nv2 @ K3Nv2:
    Lol this neighbor "I'm always hearing him shit" I'm sorry would you like my shits to be more settle
    K3Nv2 @ K3Nv2: Lol this neighbor "I'm always hearing him shit" I'm sorry would you like my shits to be more settle