Editing IDPS

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
= Description =
The IDPS is a 16 byte value that contains console specific information. Exactly what information this stores is not completely known.
 
The IDPS is a sequence of 16 bytes which is used as a unique per-console identifier for PlayStation consoles. The IDPS is stored and certified in [[Flash:Encrypted Individual Data - eEID|EID]].


= Structure =
= Structure =


<pre>
<pre>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Chassis Check
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&dArr;&nbsp;&nbsp;&dArr;                   
00000000  00 00 00 01 00 89 00 0B 14 00 EF DD CA 25 52 66  .....‰....ïÝÊ%Rf
00000000  00 00 00 01 00 89 00 0B 14 00 EF DD CA 25 52 66  .....‰....ïÝÊ%Rf
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&uArr;&nbsp;&uArr;&nbsp;&nbsp;&nbsp;&uArr;&nbsp;&uArr;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&uArr;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&uArr;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Product Code&nbsp;&nbsp;Product Sub Code
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Target ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PS3 Model type
</pre>
&nbsp;&nbsp;&nbsp;&nbsp;(Internal:Product Code)&nbsp;&nbsp;&nbsp;(Internal: Product Sub Code)
 
* 1st and 2nd bytes represent the magic (always 00 00)
* 3rd and 4th bytes represent the Company (usually SCE)
* 5th and 6th bytes represent the [[Product Code]]
* 7th and 8th bytes represent the [[Product Sub Code]] <!--// Note that CECHAxx is type 0x01 and CECHBxx is type 0x02 but they both have a COK-001 motherboard... (Changing 0x02 to 0x01 in CECH-B will enable wifi options in menu. But there is still missing hardware), and at the opposite... CECH-25xx models are type 0x0B but with 2 possible motherboards: JSD-001 or JTP-001//-->
* remaining 8 bytes are parsed by bits not by bytes (see [[IDPS#IDPS second half]])
 
<pre>
00 00 <- Unknown
00 01 <- Company (SCE)
00 89 <- Product Code: PS3, CEX, oceania
00 0B <- Product Sub Code: CECH-25xx (25xx series)
14 00 EF DD CA 25 52 66 <- Second half: factory code 5, no Ps Flag, serial number 61405, random stamp CA 25 52 66
</pre>
</pre>
6th byte represents your [[Target ID]]


== Dummy PSP IDPS in Kicho & Dengo Program ==
8th byte represents your [[SKU_Models|PS3 Model]] <!--//note CECHAxx is type 0x01 and CECHBxx is type 0x02 both uses a COK-001 motherboard... and... CECH-25xx models are type 0x0B with 2 possible motherboards: JSD-001 or JTP-001//-->
 
<pre>0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x07, 0xFF, 0x03, 0xFF, 0xFF, 0xFF, 0xD7, 0xC3, 0xE5, 0x5A</pre>
 
Found in PSP Kicho & Dengo Tool flashData.prx.
 
== Dummy Reference Tool IDPS ==
 
<pre>0x00, 0x00, 0x00, 0x01, 0x00, 0x81, 0x00, 0x01, 0x03, 0xFF, 0xFF, 0xFF, 0x18, 0x43, 0xC1, 0x4D</pre>
 
This is the dummy IDPS that is used by PS3 Reference Tool aim_iso when IDPS fails to be obtained from flash. That IDPS belongs to a Reference Tool DECR-1000A. The Reference Tool IDPS from above is static. PS3 CEX 3.55 does not have it.
 
Source: [http://rmscrypt.wordpress.com/2011/05/16/idps-what-the-hell-is-that-thing/ rms' blogtext].
 
== Dummy PSP Emulator IDPS ==
 
<pre>0x00, 0x00, 0x00, 0x01, 0x00, 0x81, 0x00, 0x01, 0x0C, 0x40, 0x00, 0xB1, 0x0E, 0x69, 0x69, 0x78</pre>
 
Found in emulator_drm.sprx (iso self inside).
 
== IDPS second half ==
 
*Byte 8 bits 0-5: Factory Code
*Byte 8 bits 6-7 and bytes 9-10-11: Serial Number
*Byte 8 bits 6-7 and byte 9 bits 0-5: Ps Flags on PSP with Diag Factory Code
*Bytes 12-15: Random Stamp (guessed name). 3 theories: 1) totally random number, 2) hash of previous bytes (then there would exist at least 3 keysets), 3) encrypted timestamp.
 
== IDPS Regex ==
 
Based on 16 millions of PS3 IDPS dumps, on other PS consoles dumps and on IDPS structure.
 
<pre>0{7}10[012][089A][0123456789ABCDEF]00[0123456789ABCDEF]{18}</pre>
 
Restricted to PS3:
 
<pre>0{7}100[89A][0123456789ABCDEF]00[0123456789ABCDEF]{18}</pre>
 
= Location =
 
== Serial flash ==
 
The PS3 IDPS can be found in serial flash, precisely in EID0 and EID5. See [[Flash:Encrypted_Individual_Data_-_eEID#EID0|Flash]] (NAND @ 0x80870 / NOR @ 0x2F070).


== Network (PSN connections) ==
9th and 10th byte : <abbr title="(0x1400 &gt;&gt; 0xA) = 5d or 0x1400h thus 1010000000000b then shift the pointer left by 0xDh resulting in 101b or 0x5h">chassis check</abbr>


=== idpstealer.exe ===
The IDPS can be found in EID0 and EID5, see [[Flash:Encrypted_Individual_Data_-_eEID#EID0|Flash]] (NAND @ 0x80870 / NOR @ 0x2F070)


* Patched since FW 4.70 and deprecated since ps3exploit
Displayed under setting information on MultiMan or on registry/application_persistent file inside playstation Store folder (as DeviceID).
* This method no longer works because now Sony uses '''OpenPSID''' instead of '''IDPS''' although the key/algorithm remains the same
* This should work also on PS4 and PSVita, but with a different key (not known/public atm)
* Download links: [https://dl.dropboxusercontent.com/u/35197530/zip/idpstealer.7z 1], or [https://web.archive.org/web/20160309135920/http://pastie.org/private/wlakfucps3bc21dfuosdtg 2]


== idpstealer ==
<div style="border-width: 1px; border-style:dashed; border-color:#000000; padding: 10px; background-color:#FFFFFF; color:#000000; ">
<div style="border-width: 1px; border-style:dashed; border-color:#000000; padding: 10px; background-color:#FFFFFF; color:#000000; ">
From flatz: Privet, PS3 fans! Once KaKaRoTo published his backup tool I’ve decided to bring a way of getting a Console ID (IDPS) to the community. It can be used on OFW/CFW firmware and you don’t need any additional software/hardware installed on your PS3.
Privet, PS3 fans! Once KaKaRoTo published his backup tool I’ve decided to bring a way of getting a console ID (IDPS) to the community. It can be used on OFW/CFW firmware and you don’t need any additional software/hardware installed on your PS3.


However there are several cons about releasing:
However there are several cons about releasing:
# A big company will fix it in the next firmwares.
# A big company will fix it in the next firmwares.
# It can be used to steal other people’s IDPS if you have an access to their consoles.
# It can be used to steal other people’s IDs if you have an access to their consoles.


And it seems that this is the only method of getting ConsoleId without using hardware solutions on the moment. So please, if you want to get an IDPS from your console then do it as fast as possible because I think this method won’t work in the nearly future.
And it seems this is the only method of getting console ID without using hardware solutions on the moment. So please, if you want to get an IDPS from your console then do it as fast as possible because I think this method won’t work in the nearly future.


How it works:
How it works:
IDPStealer works as a proxy server and intercepts all network traffic (including SSL traffic via HTTPS over HTTP tunneling) and it tries to get IDPS from it. It doesn’t contains any malicious code and can be safely used like any other proxy server.
IDPstealer works as a proxy server and intercepts all network traffic (including SSL traffic via HTTPS over HTTP tunneling) and it tries to get IDPS from it. It doesn’t contains any malicious code and can be safely used like any other proxy server.
</div>
</div>


Line 101: Line 46:
  IDPS have been successfully written to: idps.bin
  IDPS have been successfully written to: idps.bin


= Obtaining IDPS of a PS3 =
https://dl.dropboxusercontent.com/u/35197530/zip/idpstealer.7z
 
== HEN ==
 
With PS3Xploit, just do a flash dump and search inside.
 
== CFW ==
 
There are homebrews to dump or even spoof your PS3 IDPS.
 
== Bruteforce ==
 
You can verify the IDPS of a PS3 console through 2 ways: PARAM.SFO of savedata or HDD backup from PS3 Backup Utility. You would need to bruteforce about 7 bytes, if you know the PS3 model.
 
Problem: "My old PS3 received the YLOD, however I have a hard disk drive backup of it, but I no longer have the actual unit, and I do have a new PS3. I want to recover all my data to my new PS3, but I need to be able to dump all the data from archive2.dat to create a fresh HDD backup with all the data to restore to my new PS3 unit. So I need to crack the IDPS used to encrypt the backup."
 
Solution (to test) by zecoxao: "Bruteforce the IDPS from the IDPS hash of a PARAM.SFO file (second hash iirc). You select your region and model and only have to bruteforce the last six bytes. If the scene could establish some kind of standard or bruteforce blueprint, like a blank PARAM.SFO of the PS3 SingStar application, which should look the same on every console, someone could even work on a rainbow table for IDPS. The easiest would be PARAM.SFO of savedata, by manually verifying a certain sha1-hmac made from the file PARAM.PFD with IDPS as key. I was just looking into that and made a small PoC in C#, which bruteforces my PS3 IDPS. But even with all optimizations (especially for C#) and running on all cores with parallelization it is not really that fast. Moreover, I even cheated and only bruteforced the last six bytes of my known IDPS. It is currently still running... Using openCL would help, because graphic cards are naturally faster than CPUs. Currently looking into that, but I never worked with openCL before and cannot even find a hmac/sha1 kernel for openCL. Like nobody every did that before ... ;) [https://searchcode.com/codesearch/view/45893397/ useful?]"
 
= IDPS dumping Tools =
 
== PS3 Model Detection ==
 
Source: http://www.ps3hax.net/2011/01/homebrew-app-ps3-model-detection/]
 
<pre>
Dumping PS3 Model Data:
 
- PS3 System Target ID:    0x85 (Retail - Europe)
- PS3 Motherboard Revision: 0x0B (JTP-001 Motherboard, Revision 1)
- PS3 BD-Laser Revision:    0x04 (KES-400, SACD supported)
 
Probable Model: CECH-2504A
 
Raw Model Data:
 
  Byte 0: 0x00
  Byte 1: 0x01
  Byte 2: 0x00
  Byte 3: 0x85
  Byte 4: 0x00
  Byte 5: 0x0B
  Byte 6: 0x00
  Byte 7: 0x04
</pre>
 
Notes:
* '7th byte of IDPS' is ''not'' [[Bluray Drive]] (it was misunderstood at that time). You can see it in the example where it names incorrectly a [[CECH-25xx]] as Super Audio CD compatible with a [[KES-400]] laserslide (which in real life has either [[KES-460A]] or [[KES-470A]] without daughterboard (swap can be done without remarry).
* Also, it named bytes 0-2 "Byte 0", byte 3 "Byte 1", byte 4 "Byte 2", byte 5 "Byte 3", byte 6 "Byte 4", byte 7 "Byte 5", byte 8 "Byte 6", byte 9 "Byte 7" etc.
 
== IDPS Viewer ==
 
Source [http://www.tortuga-cove.com/hacking/31-ps3/8396-released-idps-viewer link]
 
* Displays the IDPS
* Shows Product Code
* Displays Motherboard revision
* Save IDPS (16 bytes from EID) into dev_hdd0/IDPS.bin file
 
== multiMAN ==
 
IDPS is displayed under setting information in multiMAN PS3 homebrew.


= See also =
http://pastie.org/private/wlakfucps3bc21dfuosdtg


[https://github.com/CelesteBlue-dev/PS-ConsoleId-wiki PS ConsoleId wiki by CelesteBlue]
* This method no longer works because now Sony uses '''Open PSID''' instead of '''IDPS''' although the key/algorithm remains the same.
* This should work also on PS4 and PSP2/PSVita, but with a different key (not known/public atm)


{{Flash}}
{{Flash}}
{{Development}}<noinclude>[[Category:Main]]</noinclude>
{{File Formats}}<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)