The iPhone Wiki is no longer updated. Visit this article on The Apple Wiki for current information. |
Difference between revisions of "S5L8720 (Hardware - SHA1)"
ChronicDev (talk | contribs) m (S5L8720 (Hardware) SHA1 moved to S5L8720 (Hardware - SHA1)) |
|||
Line 1: | Line 1: | ||
− | ==S5L8720 SHA-1 Hardware== |
||
− | Base Address: 0x38000000 |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Programming Guide=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | As there is no real documentation of the hardware (The Samsung S3C6400X seams to use a very similar SHA-1 generator, but not the same), this is based on what [[iBoot]] does and on a lot of trial-and-error. |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ====How it works==== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | Basically it is like a hardware version of a SHA-1 algorithm. The hardware processes data in 512Bit (64 Bytes) chunks (Just like a software algorithm). <br> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | It does NO pre-processing (appending a '1' Bit to the data, pad the data so that the length mod 512 is 448, and append the bit-length of the data as a 64-bit big-endian integer). <br> |
||
− | This has to be done in software. |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ====Calculating the SHA-1 of a message==== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | # Prepare the message as usual. See [http://en.wikipedia.org/wiki/SHA_hash_functions Wikipedia on SHA] |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | # Switch on the clock for the SHA-1 generator |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | # Reset the generator. To do this set bit 0 of reset register and clear it afterwards (iBoot waits until the hash is ready before resetting it) |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | # Clear (Write 0) to the Configuration Register (Not sure if this is needed as it already reads 0 after resetting, but iBoot does it) |
||
− | # Clear register 0x80 and 0x10 (Also not sure why, as they also read 0) |
||
− | # Write 64 bytes of the message to the data input registers starting at the lowest |
||
− | # If this were the the first 64 bytes clear bit 3 in the Configuration register, else set it |
||
− | # Set bit 1 (Start Hash) of the Configuration register and wait until bit 0 (Hash Busy) is cleared |
||
− | # If more data to hash go to point 6 |
||
− | # Read the calculated hash of the Output SHA-1 Hash registers |
||
− | # Switch off the clock |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ==Registers== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Register Summary=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <table border=1 width=100%> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <tr> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <td align=left width=100pix><b>Register</b></td> |
||
− | <td><b>Description</b></td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x00</td> |
||
− | <td align=left>Configuration</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x04</td> |
||
− | <td align=left>Reset</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x08</td> |
||
− | <td align=left>Unknown, but referenced in iBoot</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x0C</td> |
||
− | <td align=left>Unknown, but referenced in iBoot</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x10</td> |
||
− | <td align=left>Unknown, but referenced in iBoot (Set to 0 before calculating a hash)</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x20 - 0x30</td> |
||
− | <td align=left>Output SHA-1 hash / Input Initialization Vector</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x40 - 0x7C</td> |
||
− | <td align=left>Data Input (64 Bytes)</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x80</td> |
||
− | <td align=left>Unknown, but referenced in iBoot (Set to 0 before calculating a hash)</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x84</td> |
||
− | <td align=left>Unknown, but referenced in iBoot</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>0x8C</td> |
||
− | <td align=left>Unknown, but referenced in iBoot</td> |
||
− | </tr> |
||
− | </table> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Configuration Register=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <table border=1 width=100%> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <tr> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <td align=left width=100pix><b>Bit</b></td> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <td><b>Function</b></td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>Bit 0</td> |
||
− | <td align=left>Hash Busy. Is set when the hash calculation is started and cleared when the generator is done.</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>Bit 1</td> |
||
− | <td align=left>Start Hash. Set to 1 to start hashing of the data in the Input Data registers.</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>Bit 2</td> |
||
− | <td align=left>Unknown</td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>Bit 3</td> |
||
− | <td align=left>Config IV. Use arbitary IV (=1), Use SHA-1 constants (=0) (Used for starting a new hash (=0), or continue a previous one (=1)).</td> |
||
− | </tr> |
||
− | </table> |
||
− | All other bits are unknown or not used |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Reset Register=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <table border=1 width=100%> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <tr> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <td align=left width=100pix><b>Bit</b></td> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | <td><b>Function</b></td> |
||
− | </tr> |
||
− | <tr> |
||
− | <td align=left width=100pix>Bit 0</td> |
||
− | <td align=left>Reset Hash. Resets the generator and all registers.</td> |
||
− | </tr> |
||
− | </table> |
||
− | All other bits are unknown or not used |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Hash Out / IV In=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | Read: Outputs the hash in little-endian <br> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | Write: Set the initialization vectors |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | ===Data Input=== |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | Read: Read what was previously written there (like normal RAM) <br> |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
− | Write: The current 64 byte data chunk to calculate the hash of. (little-endian) |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | |||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | Haxed by 1337Urmom at The Pois0nhack team |
||
+ | vv |
Revision as of 06:33, 7 November 2009
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team
Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team Haxed by 1337Urmom at The Pois0nhack team vv