Prepare yourself for complete and utter devastation - presenting a Dashhacks exclusive, from our very own talented Dashhacker - PS3 Remote Play: successfully reverse engineered, authentication system broken, and a portable API on the way.

What does this mean? Well for starters you’ll soon be accessing your PS3 from just about anywhere - your PC, your iPhone, your whatchamacallit, and whatever other Internet-enabled device.

Stay tuned, for real.


PS3 Remote Play Reverse-Engineered, Portable API Coming Soon

Posted 212 days ago      20 Comments      PermaLink


Comments

#1
By klok9 on 30 weeks ago:
Finally!!!! ... Just dont get me hyped if this aint true ...

Wonder how this would work on my iphone?? ... Oh well time would tell =]

#2
By Bakke on 30 weeks ago:
Holy crap. This is madness hahah.

Seriously. Great news PS3News <3

#3
By mihaiolimpiu on 30 weeks ago:
Is it only me or I'm the only one skeptical about this?! After so many hacks and iso loaders I just want to see it for real!

Even if this would be true... we could access the PS3 from any corner of the world from any device... Correct me if I'm wrong but I can already access my PC from any corner of the world and I never use that...

It would be fun tough to play LAIR or any REMOTE PLAY enabled game on your phone or PC.

P.S.: After letting some steam off, and thinking about it a remote play api could open the PS3 completely. Just let it be real this time... Still it sounds too advanced to be real... (An entire API released by a hacking group?!?!) maybe too good to be the real thing! Just my 2 cents!

#4
By r3pek on 30 weeks ago:
Well, i'm just wondering if the "Full API" will contain the access to the Playstation Network. 'Cause if you try to connect to a PS3 that is turned off, you need to be work with the PSN and ask it to turn your PS3 on (At least, it's how i think it works). If that is the case, this can lead to two things. Sony blocks your PS3, because it's really easy to know if you'r connecting via a PSP or from a PC/iPhone/. If they don't do that, good for us, but it won't let us do anything more it lets the PSP do so nothing like "crack" it or something.

One thing I would like to see, if this is really true, would be some kind of "Messenger" to the PSN friends. Sometimes i'm just not in the mood to turn the PS3 on just to see who is online....

#5
By slastrina on 30 weeks ago:
this could be fun, ive always wanted a way to access my ps3 from my other systems, might be fun to stream stuff to my arcade machine.

#6
By naveenr on 30 weeks ago:
awesome news... a real breakthrough... keep up the good work!

#7
By sorceror on 30 weeks ago:
Quote:
Originally Posted by mihaiolimpiu View Post
Still it sounds too advanced to be real... (An entire API released by a hacking group?!?!) maybe too good to be the real thing! Just my 2 cents!
It's pretty big, but not beyond the realm of possibility. We'd have to assume that Remote Play would be some kind of "remote framebuffer" kind of thing, like VNC or Remote Desktop. Those tend to be relatively simple, so I could see a smallish group being able to code up something like that.

On the other hand, Sony could presumably change the authentication scheme with a pair of firmware updates (one for the PS3, one for the PSP). This may be as short-lived as the BD-Java "hole". :( (Man, I still don't understand why they bothered to close that. With BD-J's limitations, it posed no more threat to Sony's game revenues than Linux on the PS3 does. Oh, well.)

#8
By tvdbz431 on 30 weeks ago:
This would be very cool if it is found to be true. Would be nice to be able to get at my ps3 from a pc.

#9
By gtxboyracer on 30 weeks ago:
Quote:
Originally Posted by Bakke View Post
Holy crap. This is madness hahah.

Seriously. Great news PS3News <3
Thanks - i found it and submitted it - but yeah it can't be confirmed as true until proof/the API is available.

#10
By PS3 News on 30 weeks ago:
Sounds like they announced this about a month too early, eh? :p In case anyone missed it:
Quote:
Comment by Dashhacker
2009-04-24 17:47:03

Hard to give an exact date of course, but I can say that progress is moving very quickly. Hammered out the API framework today. Now I’m working on doing the audio/video decoding in a portable way.

I’m confident we’ll have a beta ready for testing before the end of May. I’ll post any progress updates here along the way…
Hopefully it materializes by the end of May, until then I guess we'll just use this thread for any related updates. :cool:

#11
By ironpad on 30 weeks ago:
DON'T BE FOOLED! Ps3 and psp remote play is not reversed, there is no evidence or proof stating that it has been reversed by the so called dev.

I spent a long time working on the premo auth for ps3 and psp remote connectivity and the psp basicly is synced with your email address and psp's identification numbers, as well as some encryptions to a server to connect with your ps3. Ps3 is a native server that once the two have authorized a preferred private connection it will stream data from native:/ (native being the ps3.) the authorization codes with a total of 3 are very complicated and will mess up a server connection if altered.

Just saying that the dev most likely taken the work we have previously done, and got stuck on because it would not go further than freezing the connection, even with all the information gathered from the dumps and connection information.

So either proof or it 100% fake because i know how that system is ran with the connection and there was no available way to reauthenticate all the information to allow access.

#12
By PS3 News on 29 weeks ago:
I haven't had time to follow this much, but tonight noticed Dashhacker has made a STICKY thread on PS3-Hacks with the following updates thus far:

Created a new topic regarding Remote Play Reverse Engineering. Progress is moving faster than I originally estimated. This is where I'm at:

COMPLETE:
- PSP homebrew application written to extract Remote Play keys.
- Authentication reverse-engineered and implemented in API.
- Audio and video stream decryption implemented in API.

TODO:
- Audio decoding (AAC using libfaad2) tested and working, to be implemented in API.
- Video decoding (AVC using libavcodec, or ???) to be looked at after audio decoder implementation.
- Event system to be implemented to send keyboard/mouse/joypad events to PS3.
- Release binary builds for Linux, Mac OSX, and Windows.
- Clean-up and document API.
- Release source code.

...and just a little teaser for those who know what they're looking at:
Code:
glitch ~/source/rp/orp $ make
Compiler: g++ -g -pipe -I. -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I./config
Linker: ld
Defines:
Libraries: -lSDL -lpthread -lcurl -l SDL_net -l crypto ./config/SDL_Config.a
make -C config
make[1]: Entering directory `/home/XXX/source/rp/orp/config'
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `/home/XXX/source/rp/orp/config'
make MAKEFLAGS= deps
make[1]: Entering directory `/home/XXX/source/rp/orp'
[D] base64.cpp main.cpp orp.cpp
make[1]: Leaving directory `/home/XXX/source/rp/orp'
make orp
make[1]: Entering directory `/home/XXX/source/rp/orp'
[C] orp.o
[L] orp
make[1]: Leaving directory `/home/XXX/source/rp/orp'
glitch ~/source/rp/orp $ ./orp
* About to connect() to 192.168.XXX.XXX port 9293 (#0)
* Trying 192.168.XXX.XXX... * connected
* Connected to 192.168.XXX.XXX (192.168.XXX.XXX) port 9293 (#0)
> GET /sce/premo/session HTTP/1.1
User-Agent: premo/1.0.0 libhttp/1.0.0
Host: 192.168.XXX.XXX:9293
Accept: */*
PREMO-PSPID: XXX
PREMO-Version: 0.3
PREMO-Mode: PREMO
PREMO-Platform-Info: PSP
PREMO-Pad-Info: PSP-Pad
PREMO-UserName: XXX
PREMO-Trans: capable
Connection: Keep-Alive

< HTTP/1.1 200 OK
< SessionID: 0000001710794765
< Connection: close
< Pragma: no-cache
< Content-Length: 0
< PREMO-Version: 0.3
< PREMO-Video-Codec: AVC
< PREMO-Video-Resolution: 480x272
< PREMO-Video-Bitrate: 384000-1024000
< PREMO-Video-ClockFrequency: 90000
< PREMO-Video-Framerate: 30
< PREMO-PS3-Nickname: XXX
< PREMO-Power-Control: on
< PREMO-Exec-Mode: VSH
< PREMO-Audio-Codec: M4A
< PREMO-Audio-SamplingRate: 48000
< PREMO-Audio-Channels: 2
< PREMO-Audio-Bitrate: 128000
< PREMO-Audio-ClockFrequency: 90000
< PREMO-Pad-Complete: on
< PREMO-Pad-Assign: CROSS
< PREMO-Trans-Mode: peer
< PREMO-Nonce: OOL0Q0G7tznoYKvtghWvCQ==
<
* Closing connection #0
* About to connect() to 192.168.XXX.XXX port 9293 (#0)
* Trying 192.168.XXX.XXX... * About to connect() to 192.168.XXX.XXX port 9293 (#0)
* Trying 192.168.XXX.XXX... * connected
* Connected to 192.168.XXX.XXX (192.168.XXX.XXX) port 9293 (#0)
> GET /sce/premo/session/audio HTTP/1.1
User-Agent: premo/1.0.0 libhttp/1.0.0
Host: 192.168.XXX.XXX:9293
Accept: */*
PREMO-Audio-Codec: M4A
PREMO-Audio-Bitrate: 128000
PREMO-Auth: HTsNS7W/5ho+1LB2xOWNaw==
SessionID: 0000001710794765
Connection: Keep-Alive

* connected
* Connected to 192.168.XXX.XXX (192.168.XXX.XXX) port 9293 (#0)
> GET /sce/premo/session/video HTTP/1.1
User-Agent: premo/1.0.0 libhttp/1.0.0
Host: 192.168.XXX.XXX:9293
Accept: */*
PREMO-Video-Codec: AVC
PREMO-Video-Resolution: 480x272
PREMO-Auth: HTsNS7W/5ho+1LB2xOWNaw==
SessionID: 0000001710794765
Connection: Keep-Alive

< HTTP/1.1 200 OK
< Pragma: no-cache
< Transfer-Encoding: chunked
<
< HTTP/1.1 200 OK
< Pragma: no-cache
< Transfer-Encoding: chunked
<
ff 2e6b 01b1 5480 0012 0000 0105 000f a000 0001 1e11 001e 0000 49d1
80 2bba 01b1 4d00 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
80 2bbb 01b1 5480 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e6c 01b1 5c00 0012 0000 0c30 000f a000 0001 1e11 001e 0000 49d2
80 2bbc 01b1 5c00 0012 0000 0156 0001 f400 0000 0203 0100 0000 0000
ff 2e6d 01b1 6380 0012 0000 03cf 000f a000 0001 1e11 001e 0000 49d4
80 2bbd 01b1 6380 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
80 2bbe 01b1 6b00 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e6e 01b1 7280 0012 0000 0374 000f a000 0001 1e11 001e 0000 49d6
80 2bbf 01b1 7280 0012 0000 0156 0001 f400 0000 0203 0000 0000 0000
ff 2e6f 01b1 7a00 0012 0000 03d1 000f a000 0001 1e11 001e 0000 49d8
80 2bc0 01b1 7a00 0012 0000 0155 0001 f400 0000 0203 0100 0000 0000
80 2bc1 01b1 8180 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e70 01b1 8900 0012 0000 03a2 000f a000 0001 1e11 001e 0000 49da
80 2bc2 01b1 8900 0012 0000 0156 0001 f400 0000 0203 0000 0000 0000
ff 2e71 01b1 9800 0012 0000 0401 000f a000 0001 1e11 001e 0000 49dc
80 2bc3 01b1 9080 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
80 2bc4 01b1 9800 0012 0000 0155 0001 f400 0000 0203 0100 0000 0000
ff 2e72 01b1 9f80 0012 0000 03e6 000f a000 0001 1e11 001e 0000 49de
80 2bc5 01b1 9f80 0012 0000 0156 0001 f400 0000 0203 0000 0000 0000
80 2bc6 01b1 a700 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e73 01b1 ae80 0012 0000 2722 000f a000 0104 1e11 001e 0000 49e0
80 2bc7 01b1 ae80 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e74 01b1 b600 0012 0000 02d7 000f a000 0001 1e11 001e 0000 49e2
80 2bc8 01b1 b600 0012 0000 0156 0001 f400 0000 0203 0100 0000 0000
80 2bc9 01b1 bd80 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e75 01b1 c500 0012 0000 0362 000f a000 0001 1e11 001e 0000 49e4
80 2bca 01b1 c500 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
ff 2e76 01b1 cc80 0012 0000 037a 000f a000 0001 1e11 001e 0000 49e6
12 video packets captured.
* Closing connection #0
80 2bcb 01b1 cc80 0012 0000 0156 0001 f400 0000 0203 0000 0000 0000
80 2bcc 01b1 d400 0012 0000 0155 0001 f400 0000 0203 0100 0000 0000
80 2bcd 01b1 db80 0012 0000 0155 0001 f400 0000 0203 0000 0000 0000
* Closing connection #0
* Transferred a partial file

You will be able to control your PS3 from your laptop using any input device your laptop recognizes, including a Sony SIXAXIS/DS3 or an Xbox 360 controller. These are just USB (or bluetooth) controllers that appear to libSDL as joystick devices. I will create a proper "map" file for the SIXAXIS however, so the right button press results in the correct translation on the PS3.

Another update, as of 6:30AM EST:

- Video decoding (AVC using libavcodec, or ???) to be looked at after audio decoder implementation.

Changed to:

- Video decoding (H.264 ES libavcodec) tested and working, to be implemented in API.

Another day, another update.

Completed audio and video decoding. Audio can/will run a little ahead of the video... this is a fairly complicated topic from what I read, though easy enough to correct. I've added a quick hack where audio frames are held back if the video stream lags behind. This keeps the audio in sync but of course causes slight audio skips every now and then. I'm not going to spend too much time working on synchronization as it's a lower priority compared to completing the rest of the API for release.

Working on the input event thread now. Once this is done, we'll have a feature-complete implementation!

COMPLETE:
- PSP homebrew application written to extract Remote Play keys.
- Authentication reverse-engineered and implemented in API.
- Audio and video stream decryption implemented in API.
- Audio decoding (AAC using libfaad2) implemented in API.
- Video decoding (H.264 ES libavcodec) implemented in API.

TODO:
- Event system to be implemented to send keyboard/mouse/joypad events to PS3.
- BETA release binary builds for Linux, Mac OSX, and Windows.
- Add proper audio+video synchronization (added a quick hack for now).
- Clean-up and document API.
- Release source code.

Significantly improved audio+video synchronization today! It's still not "pro", but I'm much happier with it. Implemented an event system with bindings similar to what you're familiar with when using a USB keyboard connected to a PS3. Joystick support will follow after the initial BETA release.

Tomorrow I'll start a simple GUI to manage remote play profiles. This front-end will also launch sessions... a little more user-friendly than doing this stuff on the command-line. If all goes well, I'm hoping to have binaries for release by next week, depending on how multi-platform compilation goes.

COMPLETE:
- PSP homebrew application written to extract Remote Play keys.
- Authentication reverse-engineered and implemented in API.
- Audio and video stream decryption implemented in API.
- Audio decoding (AAC using libfaad2) implemented in API.
- Video decoding (H.264 ES libavcodec) implemented in API.
- Event system implemented, keyboard support working.

TODO:
- Design simple GUI to manage and launch configuration profiles.
- BETA release binary builds for Linux, Mac OSX, and Windows.
- Add proper audio+video synchronization (added a quick hack for now).
- Clean-up and document API.
- Release source code.

Then this was posted in attempt to debunk it:
Quote:
Hello everyone!

Well some truth is to be known about the current statements about the Rumors that dashhacker has reversed the PSP remote play functions. Well all good and dandy but there is some news to be said about it.

Back when I was working on E-Premo I did alot of research in the dumps of the ram. And there are a few things that the PSP and the ps3 needed to get to connect.

ps3_name
ps3_mac
ps3_keytype

Anyways. They got this with 2 little pluggins from the PSP itself.

flash0:/vsh/resource/npsignin_plugin.rco
flash0:/vsh/module/npsignin_plugin.prx

Reversing those can also get you some basic information, and thats most likely what he did and tried to make a big hype about it.

Being the fact they have now upgraded the remote play a bit it may be a bit more advanced. They use 3 different keys based off the base64 algorythm *spelling*. Anyways it has to do with alot of signin and auth over an http network as the PS3 acts like a server on port 9293. And it runs off multiple information off the flash and relates it as Native: . It also works with certs, and UID (uniqueId).

There were also some sha keys as well and I never got to the point of figuring out where they came to use, but I'm sure they pull a point in authorizing everything.

Anyways, to basicly emulate the remote play you would have to fully emulate the PSP and use the stock remote play function as creating your own remote play will not correctly or even allow you to connect with the PS3.

Thanks. Kid101skater
As always, only time will tell if this is real or not.. but does anyone care? There hasn't been much response to this thread since.. :wacky:

I found this comment QTF myself, as do a few on IRC who agree with it:
Quote:
and this lets you do what? know that your ps3 is wasting electricity when your out the house.. wooo - BORING

#13
By r3pek on 29 weeks ago:
I also don't see what's the use with this, but hey, it's cool anyhow :)
On the other hand, keys and algos that are fund can be used to test another part of the ps3. Image that they use something similar to sign .pkg, or encrypt the HDD. Only time will tell really but, at least is something...

#14
By Kimd41 on 29 weeks ago:
Woah that's awesome, another step to homebrew.

#15
By RexVF5 on 29 weeks ago:
Quote:
Originally Posted by r3pek View Post
I also don't see what's the use with this, but hey, it's cool anyhow :)
On the other hand, keys and algos that are fund can be used to test another part of the ps3. Image that they use something similar to sign .pkg, or encrypt the HDD. Only time will tell really but, at least is something...
It would by highly stupid on Sony's part to use the same keys for different parts of the system - especially if these also need to reside in PSP which was completely hacked and understood long time ago (and Sony knows it).

Quote:
Originally Posted by Kimd41 View Post
Woah that's awesome, another step to homebrew.
Actually this has nothing to do with enabling homebrew on PS3 (at least directly). It would allow you to display PS3's output (both audio and video) on any device besides PSP (like notebooks, PCs, etc.) and also control PS3 by the means of these devices' mice, keyboards, joysticks, pads, etc...

#16
By r3pek on 29 weeks ago:
Quote:
It would by highly stupid on Sony's part to use the same keys for different parts of the system - especially if these also need to reside in PSP which was completely hacked and understood long time ago (and Sony knows it).
Well, they don't need to reside in the psp. (I don't know what i'm talking about) If the authentication is based on assimetric keys, psp only have the public one. so the private still remains on the ps3....

#17
By RexVF5 on 29 weeks ago:
Quote:
Originally Posted by r3pek View Post
Well, they don't need to reside in the psp. (I don't know what i'm talking about) If the authentication is based on assimetric keys, psp only have the public one. so the private still remains on the ps3....
What I meant was it would be stupid on their part to use any key twice (for signing/verifying binaries for example). Especially if you can access it easily in a device such as PSP. Even more so when public key serves the purpose of decrypting signed binaries (see http://en.wikipedia.org/wiki/File:Public_key_signing.svg) - that would allow you to see (and disassemble and analyze and ...) PS3 binaries...

#18
By r3pek on 29 weeks ago:
Yeah, it would be stupid, but possible. We won't get to homebrew if we don't try everything we can. Probably, we won't get nothing that can get us homebrew, possibly not even remote play, but hey, trying doesn't hurt :)

#19
By PS3 News on 29 weeks ago:
He posted another update today I see, sounds promising if it comes this week eh? :cool:
Quote:
The weekend wasn't as productive as I had hoped. With the awesome weather, I spent more time drinking beer in the sun than hacking on ORP. However, I was able to knock off one more thing from the TODO list. I just finished a very simple GUI front-end for the player. You can see two screen-shots below.

There is only one more thing left to do before I can release a BETA, and that's build ORP for Mac OSX and Windows. There will not be a static Linux binary, simply because it's a pain in the ass. However, Linux users can always compile their own binary from source when released.

As far as an ETA goes... I'm aiming for the end of the week. Fingers crossed, you may have something to play with by Friday. Depending on how the builds go!

COMPLETE:
- PSP homebrew application written to extract Remote Play keys.
- Authentication reverse-engineered and implemented in API.
- Audio and video stream decryption implemented in API.
- Audio decoding (AAC using libfaad2) implemented in API.
- Video decoding (H.264 ES libavcodec) implemented in API.
- Event system implemented, keyboard support working.
- Design simple GUI to manage and launch configuration profiles.

TODO:
- BETA release binary builds for Mac OSX, and Windows.
- Add proper audio+video synchronization (added a quick hack for now).
- Clean-up and document API.
- Release source code.

#20
By PS3 News on 28 weeks ago:
A Mac version is now available, with a Windows one coming next week. Continue discussion here: http://www.ps3news.com/forums/ps3-hacks/open-remote-play-v1-0-beta-mac-os-x-released-105919.html



Post a Reply


Please Register or Login to Reply!