TSRBerry / UDS-Proxy

Attempt to proxy the UDS-traffic to another place but failed | understanding how UDS works
7 stars 0 forks source link

Further development #1

Open tomislav12 opened 1 year ago

tomislav12 commented 1 year ago

Hi, do you have plans to continue working on this? What is the current status on this, did you manage to connect the two devices in the end with the python script? I have seen that the guys on citra had some success on enabling "remote" co-op, is this the better way to play remote co-op since the eshop closure is near?

TSRBerry commented 1 year ago

Hi! I thought I archived this repo already, but seems like I didn't.

This was a long time ago and I do have a bit more knowledge on how these things are supposed to work, but I don't remember exactly where I stopped with this project.

If I remember correctly I was not able to make a multiplayer lobby show up on the second device, although I was able to send modified packets I received from the first device. I tried to investigate this, but had no clue on how to continue and stopped working on the project.

I have no clue what the citra guys are doing, but if I ever come back to this I want to do things properly and reverse engineer the sysmodule used for local multiplayer. I guess it's probably similar to how LDN (local distance network sysmodule used for local multiplayer) works on the switch, but I don't know that.

At the moment I don't plan on working on this project any further. I might pick it up again if the Ryujinx team or some of the devs start building a 3DS emulator as well. This is pretty unlikely to happen any time soon and Ryujinx itself is already a lot of work. Besides I unfortunately don't have enough free time anymore to work on these kind of projects and I currently struggle a lot to find some time to contribute to any project on GitHub at all. I hope this changes again in the future, but I can't promise anything.

tomislav12 commented 1 year ago

Thanks for quick reply. Here is the info, looks like they did this back in 2017: https://citra-emu.org/entry/announcing-networking-support/ Probably this is the part where they did it https://github.com/citra-emu/citra/tree/master/src/network they apparently also made this possible with public and private rooms over the internet, that is cool. I will try this probably when the eshop closes, if my 3ds could be made to work with citra... But, it would be better if it would work directly on the 3ds. If I understand correctly, if you manage to finish this, the user would have to buy additional usb wifi dongle for linux pc/raspberry pi, configure it in monitor mode and the thing would just work? Ofc if it is needed to work over the internet, VPS would be needed as well(to forward the filtered traffic), yes?

TSRBerry commented 1 year ago

If I understand correctly, if you manage to finish this, the user would have to buy additional usb wifi dongle for linux pc/raspberry pi, configure it in monitor mode and the thing would just work?

Yes! Your wifi adapter needs to support packet injection, but if your adapter supports monitor mode it likely also supports packet injection as far as I saw so far. If you are using a laptop the onboard wifi might also work! For Linux and therefore also raspberry pis this is as easy as plugging the device in and running the program to proxy the traffic. With Npcap people are able to use monitor mode on Windows as well, but sadly not packet injection. For packet injection you'd need to write a kernel driver (which needs to be signed by MS) or use WSL with usb redirection and a proxy program. I have a few notes on this, because I also want to achieve this with the switch and I already have some progress there. My notes are currently private, but if you are interested in this method I'll try to make that part public.

Ofc if it is needed to work over the internet, VPS would be needed as well(to forward the filtered traffic), yes?

A VPS not necessarily, since P2P connections should also work just fine, although that would require a bit more effort from the user. But if you don't want to deal with setting up all of that a solution like @spacemeowx2's switch-lan-play would also work for this!

tomislav12 commented 1 year ago

Yes! Your wifi adapter needs to support packet injection, but if your adapter supports monitor mode it likely also supports packet injection as far as I saw so far. If you are using a laptop the onboard wifi might also work! For Linux and therefore also raspberry pis this is as easy as plugging the device in and running the program to proxy the traffic.

Great! It would be great if you could work on this. If you ever catch the time, ping me to help you with the testing, I have 2 old 3ds xl consoles, rasp pi 2 b (I think), xubuntu laptop and xubuntu pc with usb dongle.

With Npcap people are able to use monitor mode on Windows as well, but sadly not packet injection. For packet injection you'd need to write a kernel driver (which needs to be signed by MS) or use WSL with usb redirection and a proxy program. I have a few notes on this, because I also want to achieve this with the switch and I already have some progress there. My notes are currently private, but if you are interested in this method I'll try to make that part public.

Linux is fine for me, so no need for this.

A VPS not necessarily, since P2P connections should also work just fine, although that would require a bit more effort from the user. But if you don't want to deal with setting up all of that a solution like @spacemeowx2's switch-lan-play would also work for this!

I am not so skilled at C and networks, I know some very basic stuff. I know some arduino, web developement, databases etc. Switch-lan-play is mostly for lan play, as I can see, ad-hoc needs loading a cfw. Or did you think only to reuse some parts for 3ds? I was thinking to redirect traffic to some VPS (public or private server) where there would be some kind of bridged network so everybody would see other players, but yeah there could be bottlenecks if more players are there. What is the idea with P2P, what would the users have to do in this "mode"?

TSRBerry commented 11 months ago

Sorry for the late reply!

If you ever catch the time, ping me to help you with the testing, I have 2 old 3ds xl consoles, rasp pi 2 b (I think), xubuntu laptop and xubuntu pc with usb dongle.

Will do! :D

Or did you think only to reuse some parts for 3ds?

Yup, I'm pretty sure it could be done in a similar way. So people host proxy servers and players could connect through them to play together.

What is the idea with P2P, what would the users have to do in this "mode"?

Essentially the same as above just without an extra server in the middle to act as a proxy, but that's a little harder to get right.