Difference between revisions of "PSN Handshake Signup"

From PS3 Developer wiki
Jump to: navigation, search
m (Created page with "''this page needs cleanup and proper formatting'' Signup Response Basic structure of the response 0x00: 4 Byte - main header -> 30 00 00 4f 0x04: 4 Byte - size -...")
 
m
 
(9 intermediate revisions by 4 users not shown)
Line 1: Line 1:
''this page needs cleanup and proper formatting''
+
{{Wikify}}
  
  
Signup Response
+
==Signup Response==
  
 
Basic structure of the response
 
Basic structure of the response
 
+
<pre>
 
   0x00:  4 Byte - main header -> 30 00 00 4f  
 
   0x00:  4 Byte - main header -> 30 00 00 4f  
 
   0x04:  4 Byte - size   -> 00 5e 00 47
 
   0x04:  4 Byte - size   -> 00 5e 00 47
Line 13: Line 13:
 
   0x26:  6 Byte - np:  00 01 00 00 00 sp-int: 00 01 00 00 00 23  
 
   0x26:  6 Byte - np:  00 01 00 00 00 sp-int: 00 01 00 00 00 23  
 
   0x2a:  4 Byte - {10 5d 00 0b} 0x000b - size of email
 
   0x2a:  4 Byte - {10 5d 00 0b} 0x000b - size of email
   0x2e:  x Byte - email, here 0b in size
+
   0x2e:  x Byte - email, here 0b in size</pre>
 
Legend
 
Legend
  
 
Main Header xx xx xx ss ss = size
 
Main Header xx xx xx ss ss = size
  
Positive Auth
+
==Positive Auth==
  
 
Auth Reply Structure
 
Auth Reply Structure
 
+
<pre>
 
   0x00:  4 Byte - main header -> 31 00 00 00  
 
   0x00:  4 Byte - main header -> 31 00 00 00  
 
   0x04:  4 Byte - size        -> 00 00 00 d4  
 
   0x04:  4 Byte - size        -> 00 00 00 d4  
Line 53: Line 53:
 
   0xc4:  4 Byte - {00 08 00 14}
 
   0xc4:  4 Byte - {00 08 00 14}
 
   0xc8: 20 Byte - SIGNATURE -> maybe HMAC/SHA1
 
   0xc8: 20 Byte - SIGNATURE -> maybe HMAC/SHA1
 
+
</pre>
* often found before Name/Handle, assigned at signup and store at first 8 byte of cache
+
* Often found before Name/Handle, assigned at signup and store at first 8 byte of cache
* * seems to be the same for the same for every console, differs for others
+
* * Seems to be the same for the same for every console, differs for others
  
 
Size
 
Size
Line 72: Line 72:
 
ss = data size in hex
 
ss = data size in hex
  
Timestamps
+
==Timestamps==
 
These are Timestamp:
 
These are Timestamp:
  
X = 00 00 01 2f 31 ff a0 58h -> 1302213927000d
+
<pre> X = 00 00 01 2f 31 ff a0 58h -> 1302213927000d</pre>
 
The X / 1000 = seconds since 1970, so this date is 08.04.2011
 
The X / 1000 = seconds since 1970, so this date is 08.04.2011
  
 
PHP to easy recheck:
 
PHP to easy recheck:
  
$timestamp = 1302010662000 / 1000;
+
<pre> $timestamp = 1302010662000 / 1000;
  date("d.m.Y",$timestamp);
+
  date("d.m.Y",$timestamp);</pre>
 
It's just Miliseconds.
 
It's just Miliseconds.
 +
 +
 +
----
 +
==Profile Settings==
 +
 +
===Request===
 +
 +
On finalize auth ps3 request profile settings is xml based process
 +
 +
request profile with auth encrypted to base64 and sends to a server with this :
 +
 +
Headers:
 +
<pre> POST /basic_view/sec/get_self_profile HTTP/1.1
 +
Connection Keep-Alive
 +
Content-Length 430
 +
Accept-Encoding identity
 +
User-Agent PS3Community-agent/1.0.0 libhttp/1.0.0
 +
Host Url:443</pre>
 +
 +
 +
Contents:
 +
<pre> <profile platform="ps3" sv="[VERSION]">
 +
<ticket>[encrypted with base64 auth handshake]</ticket>
 +
<env>[enviroment]</env>
 +
<avatar size="l" />
 +
</profile>
 +
</pre>
 +
nb: ''[environment] is one of the [[Environments]] lowercased''
 +
 +
===Response===
 +
and get profile responses here :
 +
 +
Headers:
 +
<pre> HTTP/1.1 200 OK
 +
Date Wed, 18 May 2011 08:12:42 GMT
 +
Server Apache-Coyote/1.1
 +
Content-Type text/xml;charset=UTF-8
 +
Content-Length 364
 +
</pre>
 +
 +
Content:
 +
<pre>
 +
<profile result="00">
 +
<jid>[USERNAME]@[SERVER].[COUNTRY].[ENVIROMENT].URL</jid>
 +
<onlinename upd="0">[Nickname on psn]</onlinename>
 +
<country>[Country code]</country>
 +
<language1>3</language1>
 +
<language2 />
 +
<language3 />
 +
<aboutme />
 +
<avatarurl id="1000">[png image url to set avatar display]</avatarurl>
 +
<ptlp>0</ptlp>
 +
</profile>
 +
</pre>
 +
*Get profile need's other certicate to auth ssl connection in this case Dnas root 05
 +
 +
 +
{{Reverse engineering}}<noinclude>[[Category:Main]]</noinclude>

Latest revision as of 19:07, 5 February 2014


Signup Response[edit]

Basic structure of the response

   0x00:  4 Byte - main header -> 30 00 00 4f 
   0x04:  4 Byte - size		   -> 00 5e 00 47
   0x08:  8 Byte - ? Identifier, often found before Name/Handle
   0x10: 16 Byte - Name/Handle
   0x20: 16 Byte - language
   0x26:  6 Byte - np:  00 01 00 00 00 sp-int: 00 01 00 00 00 23 
   0x2a:  4 Byte - {10 5d 00 0b} 0x000b - size of email
   0x2e:  x Byte - email, here 0b in size

Legend

Main Header xx xx xx ss ss = size

Positive Auth[edit]

Auth Reply Structure

   0x00:  4 Byte - main header -> 31 00 00 00 
   0x04:  4 Byte - size        -> 00 00 00 d4 
   0x08:  4 Byte - frame head  -> 30 00 00 ac 
   0x0c:  4 Byte - {00 08 00 14}
   0x10: 20 Byte - SIGNATURE -> maybe HMAC/SHA1
   0x24:  4 Byte - {00 01 00 04}
   0x28:  4 Byte - ? 00 00 00 01 (cfr) or 00 00 01 00 (me & nks) (???)
   0x2c:  4 Byte - {00 07 00 08}
   0x30:  8 Byte - Timestamp (Login Time)
   0x38:  4 Byte - {00 07 00 08}
   0x3c:  8 Byte - Timestamp (Login Expiry)  
   0x44:  4 Byte - {00 02 00 08} 
   0x48:  8 Byte - Identifier *
   0x50:  4 Byte - {00 04 00 20}
   0x54: 32 Byte - Name/Handle 
   0x74:  4 Byte - {00 08 00 04}
   0x78:  4 Byte - language
   0x7c:  4 Byte - {00 04 00 04}
   0x80:  4 Byte - ??? 		
   0x84:  4 Byte - {00 08 00 18}
   0x88: 24 Byte - service ID 
   0xa0:  4 Byte - {30 11 00 04}
   0xa4:  4 Byte - ??? 		07 and 3 undef
   0xa8:  4 Byte - {00 01 00 04}
   0xac:  4 Byte - ??? 		2 undef and 02 00
   0xb0:  8 Byte - 30 10 00 00 00 00 00 00 
   0xb8:  4 Byte - frame head -> 30 02 00 20 
   0xbc:  4 Byte - {00 08 00 04}
   0xc0:  4 Byte - Network: NP: 34 CD 3C A9 SP/QA: B8 2F CB 09
   0xc4:  4 Byte - {00 08 00 14}
   0xc8: 20 Byte - SIGNATURE -> maybe HMAC/SHA1
  • Often found before Name/Handle, assigned at signup and store at first 8 byte of cache
  • * Seems to be the same for the same for every console, differs for others

Size xx xx xx ss ss = message size

Frame Head [xx yy ss ss] xx = 30 yy = unknown. maybe frame number ss = framesize in hex

Limiter {xx xx ss ss} xx = unknown ss = data size in hex

Timestamps[edit]

These are Timestamp:

	X = 00 00 01 2f 31 ff a0 58h -> 1302213927000d

The X / 1000 = seconds since 1970, so this date is 08.04.2011

PHP to easy recheck:

 $timestamp = 1302010662000 / 1000;
 date("d.m.Y",$timestamp);

It's just Miliseconds.



Profile Settings[edit]

Request[edit]

On finalize auth ps3 request profile settings is xml based process

request profile with auth encrypted to base64 and sends to a server with this :

Headers:

 POST /basic_view/sec/get_self_profile HTTP/1.1
 Connection	Keep-Alive
 Content-Length	430
 Accept-Encoding	identity
 User-Agent	PS3Community-agent/1.0.0 libhttp/1.0.0
 Host	Url:443


Contents:

 <profile platform="ps3" sv="[VERSION]">
 	<ticket>[encrypted with base64 auth handshake]</ticket>
 	<env>[enviroment]</env>
 	<avatar size="l" />
 </profile>

nb: [environment] is one of the Environments lowercased

Response[edit]

and get profile responses here :

Headers:

 HTTP/1.1 200 OK
 Date	Wed, 18 May 2011 08:12:42 GMT
 Server	Apache-Coyote/1.1
 Content-Type	text/xml;charset=UTF-8
 Content-Length	364

Content:

 <profile result="00">
 	<jid>[USERNAME]@[SERVER].[COUNTRY].[ENVIROMENT].URL</jid>
 	<onlinename upd="0">[Nickname on psn]</onlinename>
 	<country>[Country code]</country>
 	<language1>3</language1>
 	<language2 />
 	<language3 />
 	<aboutme />
 	<avatarurl id="1000">[png image url to set avatar display]</avatarurl>
 	<ptlp>0</ptlp>
 </profile>
  • Get profile need's other certicate to auth ssl connection in this case Dnas root 05