May 20, 2010

TinyUmbrella - Unified TinyTSS and The Firmware Umbrella in ONE!

03.13.83 - Changes

  • Fixed a bug for ppc users. Sorry minimum osx required version is 10.5 - I couldn't get the thing working in 10.4 because of some dependency changes from 10.4 -> 10.5.
  • Should now work on mac mini's if you have Leopard.
  • Cosmetic changes
  • Some small refactorings to get ready for ios4.



03.13.81 - Changes
  • OK so I fixed a huge error that rendered restores basically impossible because of some stupid oversight. Please update to 03.13.81 so you can correctly restore your device and not fail at the iTunes screen :) Thanks guys - keep the bug reports coming!
  • I can confirm that restores work as I've used my own iPhone 3GS on 3.1.2 as a test.
03.13.79 - Changes
  • Detects if port 80 is in use and should properly report why it cannot start. I may add a feature to detect the actual PID that is using port 80.
  • Added the region info to the model number to aid users in finding the carrier to which their device is locked. IE: Model Numbers in the USA that end in LL/A are locked to AT&T.
  • Various and sundry minor defect/exception fixes.
03.13.73 - Changes
  • Added Log instead of a single label for feedback
  • Added context menu for ECID text and the Log console
    • Copy - Copy the whole ecid to clipboard
    • Copy (Hex) - Copy the ecid as Hex number
    • Paste - Paste the ECID in the clipboard
    • Clear - Duh?
  • Pastebin submission of log file (right click -> Pastebin Log)
  • Hovering over ECID field will display a tooltip of the ECID in Hex format
  • The OSX version no longer needs to be started twice the very first time its launched! (I no longer fail at execl!)
  • The OSX version now should work on Leopard (10.5)
  • The OSX version can be dragged into the /Applications folder


TinyUmbrella is ready for testing. I've done most of what I said I would do in the last post. TinyUmbrella is a combination SHSH file saver as well as local TSS server. For those of you that have no idea what that is I'll explain.

If you have one of the following devices:
  • iPhone 3GS
  • iPod Touch 3rd Generation (32 or 64)
  • iPod Touch 2nd Generation (with a model number MC) 
Then you have probably noticed that Apple does not let you go back down to older firmware versions for your device. Once you 'upgrade' they don't let you downgrade. The way they stop you is basically by a simple response that iTunes receives when you try to restore the firmware of your choosing. See, the firmware is now signed for the above devices. It is signed with a unique id (ECID) that only your device has. Apple takes the firmware version files and combines them with your ECID and generates a hash that ONLY APPLE can generate. iTunes packages up this valuable information and sends it to your device. Your device checks the information and verifies the signature (making sure it really came from Apple because it CANNOT be forged as the encryption is very high). If the signature matches then the restore process can continue. If the signature does not match, the device raises an error and the restore process stops. Thanks to Saurik (Jay Freeman) we all now know how to circumvent this. Apple only provides this signature for firmware versions while the firmware version is 'Active'. So once a new firmware version is out, Apple stops signing the older version and only signs the new version. This is why you cannot get 3.1.2 signatures anymore. Apple is currently only signing 3.1.3 signatures (and 3.2 for iPads). This will change when the next firmware is released. Soon 3.1.3 (and 3.2) firmware signatures will be a thing of the past and Apple will only sign the next one. The version is important. If you do not have the EXACT signatures for the exact device (ECID) for the exact firmware version, you cannot restore that device to that version. PERIOD. So, if there was a way to save that signature for later use, we could bypass the need for asking Apple (only to have them say 'No') to restore our firmware. If you have a jailbroken device, you can visit cydia and your shsh will be saved 'on-file'. But if you are not jailbroken yet, or if a jailbreak has not yet been released for the firmware your device is on, you are just out of luck as you can only get cydia if you are jailbroken. This is where TinyUmbrella comes in.


TinyUmbrella sends the same exact request that iTunes sends Apple when requesting the signatures for your device to be restored. The difference is that TinyUmbrella does not need to do anything to your device. You do not need to be on the firmware version that TinyUmbrella is requesting signatures. As an example, I've been on 3.1.2 for quite some time. TinyUmbrella has saved my 3.1, 3.1.2 and 3.1.3 signatures. This is because the request that iTunes sends to Apple includes your ECID and the details about the firmware version. Apple sends the response signatures and TinyUmbrella saves them so you can use them whenever you want; Even if Apple has stopped signing that particular version.


The latest version of TinyUmbrella contains a small server that forces iTunes to connect to it instead of going to the apple servers. When you run TinyUmbrella and start the TSS server, your saved SHSH signatures will be cached up and ready for use. Once TinyUmbrella is running and the TSS server is running. You can open iTunes and start your restore to the firmware version you have SHSH files for. iTunes will accept the responses as if they had come from Apple itself.


It is important to realize that Apple can disable this in a future iTunes update. Currently iTunes v9.1.1 (12) works perfectly. Always be wary of any iTunes updates. Feel free to follow me on twitter (@notcom) and I'll let you know if iTunes versions are TinyUmbrella - safe. 

TinyUmbrella is also able to detect your ECID so you don't have to do anything like enter recovery and search through obscure system windows to find your ECID. It's automatic. All you have to do to save your SHSH is press the Save My SHSH button. TinyUmbrella even makes the request through Cydia so that Cydia will have your device's SHSH signatures 'on-file' immediately. This gives you double protection of having your SHSH signatures locally as well as on Saurik's trusted servers.


I put a lot of work on this little tool. I hope it helps many of you restore your devices even after Apple thinks you shouldn't be able to. In my opinion, I should be the final say when it comes to what versions of what software runs on my device. I think you feel the same way too.


I've made the OSX and Windows versions of TinyUmbrella available for beta testing. It's an open beta so feel free to give it a try. Let me know if you come across any issues. Here are the system requirements:


OSX
  • OSX 10.6.x - known issues on 10.5
  • Java 1.5+ (ships with 10.6)
  • iTunes 9.0 - iTunes 9.1.1 (25) (other versions I'm not 100%)
  • Administrator Privileges to run on port 80 and make /etc/hosts modifications
Windows
  • Windows XP, Vista, 7 (x86 or 64bit)
  • Java 32 bit (VERY important - will not work if you have 64 bit Java running)
  • iTunes 9.0 - iTunes 9.1.1 (25) (I've personally tested on 9.0.0 and 9.1.1)
  • Administrator privileges for running on port 80 and making hosts changes
TinyUmbrella makes the necessary configuration changes for you on-the-fly so that you don't have to play with your hosts file in order to route iTunes to your computer. I also save your shsh files in your home directory under the directory called ".shsh". You can also drag and drop old shsh files you have created from previous versions of umbrella onto the TinyUmbrella window and they will be renamed and saved to the .shsh directory for use by the TSS server.


I plan on fixing bugs before release and getting the Linux version completely working before calling it a release.

May 16, 2010

TinyUmbrella - Coming Soon.

Edit: Thank you @iOPK for the awesome header ;)

Umbrella and TinyTSS are in the process of being merged into a single app. Basically I've added a button to the new Umbrella UI. This button allows you to turn on and off the TinyTSS server. I'm also adding a ton of features to the app as a whole to make it more user friendly. Here are some ideas I'm currently working on / have already implemented locally (on my machine).
  • Auto configuration of the hosts file - no more messing with the hosts - I do it for you (with the backup being named hosts.umbrella) yes for Windows, Mac, and Linux (If you can figure out a way to restore using Linux that is :) ).
  • Umbrella now will save your shsh files silently in a new directory (~/.shsh). This allows the built in TSS server to read all of the files in that directory and cache them.
  • Umbrella will support drag and drop. My goal will be for you to be able to drag your .shsh files and drop them onto Umbrella and Umbrella will save the files to the ~/.shsh directory. I also plan on supporting the OLD 00.shsh 01.shsh 02.shsh files as well :)
  • [OSX ONLY] - Because Umbrella's built in TSS will need to run on port 80, Umbrella will ask you for your superuser password just once (Through the Authorization mechanism - which means your operating system will ask for your permission not me). This will explain the admin popup you will receive when Umbrella runs for the first time on your machine. After this first time, the application will exit and the next time you run Umbrella it will be able to start the service on port 80.
  • Already mentioned but this is still a HUGE code change - Umbrella's built in TSS server will cache multiple .shsh files (dragging and dropping shsh files onto Umbrella will add them to the TSS cache immediately). This also means that the TSS server will now intelligently respond to the request based on the ECID in the request instead of stupidly spitting out whatever data is in the .shsh file loaded at startup.
I'm in the process of integrating the two applications now. The TinyTSS start button will be next to the 'Save My SHSH' button and will simply say 'Start' when the server is down and 'Stop' when the server is up. A label below the button will indicate the servers status. I'm thinking of putting a small ? icon for the user to click on to be able to see the .shshs loaded as a list of devices. ie.
  • iPhone3GS 3.1.2 (7D11) - 123412341234
  • iPhone3GS 3.1.3 (7E18) - 123412341234
  • iPod3G 3.1.3 (7E18) - 222233334444
  • iPod2G 3.1.2 (7D11) - 111133332222
This will give the user a better indication of what devices can be restored on this machine running Umbrella with the built in TSS server.


I plan on getting this stuff wrapped up over the next week or so. Trust me - it's going to make life so much easier for everyone that has no idea what java -jar tinytss.jar means.


:)

May 13, 2010

Umbrella Released with device detection on OSX, Windows, Linux

Edit: I've re-added the v222 zip for TinyTSS while I work on the rewrite.

I've finished the first round of fixes with Umbrella. Umbrella now supports mac, windows, and linux although linux is a bit flaky until I iron out some (non critical) defects. (I'm aware of the segmentation fault but I haven't pinned it down)

Eventually Umbrella and TinyTSS will be combined into the same application. Now that I've gotten device detection finished on Umbrella I can work on the TinyTSS rewrite.

As always keep me posted if you find any bugs.

Special thanks to @iOPK for the icons!

umbrella.exe md5: 3c762b9b2087b97d17599079d2527667
Umbrella-03.13.32.dmg md5: 2849f10bb0056bb9c1dca66e2d688f06
umbrella-linux-03.13.32.zip: ba176cfd27464f2d38d59378145b82c1

May 5, 2010

Umbrella with device detection is now in beta

Edit: Fixed a few random exceptions that would cause the app to be unable to detect devices. (VERY rare but still possible)

Edit: Re-added iPod Touch 2G support. Also added model number to the detection label at the bottom of the window so iPod Touch users can better tell if they need to save their SHSH or not (MC ipot touch 2g MUST)


Edit: I've gotten it working now with all versions of iTunes > 9.0. Windows x86 and 64 bit are supported, OSX is supported. (Vista, XP and Windows 7 are all confirmed working).

This is RC1. I'm going to work on any bugs you guys find and RC2 will have linux support. Final will fix any linux bugs and should be fully functional.


As a note I *MAY* support 64bit java on windows through a bridge or using libimobiledevice. We'll see...

Edit: I've been working on bug fixing and currently all I have left is getting iTunes 9.1.x working. Windows 64 will not work until I write some form of bridging code. And after this initial release I'll get right to work on the linux version... which I promised @posixninja :P

I've finished implementing the device detection logic for Umbrella. I've kept the codebase in java simply because I'm lazy and don't feel like porting all of that code to c AND maintaining 4+ versions for each operating system.

The first thing you'll notice in the zip is that the source and supporting files are not in there. The fact is that the support files are huge. The zip file was over 10mb with them in it. So I've stripped it down to just the umbrella.exe and umbrella.dmg (and tinytss.exe which is unchanged for now).

This beta will only support windows and mac (linux is in the works). Even further, it only supports 32 bit java. I've gotten some nasty errors on 64 bit java in windows and before I do a full release I want to make sure those are ironed out. I'm not 100% sure this will work on windows 64 with a 32 bit java JVM but by all means give it a try.

This new version is very simple. Here's a screenshot:
As you can see it doesn't get much easier. When you start the app it will tell you to connect a device.

Once the device is connected you will be able to get your shsh for 3.1.3/3.2 depending on your device.

That's it (for most users).




For the rest of you there are 'Advanced Options' which is nothing more than the options you used to have.

If a device is connected, the ECID field will be populated for your convenience. Or if you want to get the SHSH for another device, enter it like you did in the old version.

Please remember this is beta. I'm only realeasing it because I think it works "OK" not perfect but definitely well enough that most people will be able to work just fine. In fact I've personally tested it on OSX, Windows 7 (32 bit) and Windows XP (32 bit) and have had no problems.

There are some requirements in order to get the detection to work.

  1. You must have iTunes > 9.0 installed and (I've received at least one report that win 7 64bit with 9.1.1.11 iTunes works)
  2. You must have java jdk 1.5 or higher.
  3. For the Windows version you need to be able to run it as administrator because I read the registry for the native library locations.
  4. You must not be using 64 bit java (Windows only)
  5. 64 bit windows is OK as long as you are using 32 bit java.
I think that about sums it up. Save those SHSH files!

May 3, 2010

The SpiritJB Release

SpiritJB has been released! Congratulations to @comex, chronic-dev, and all others that were involved. Hats off to you all!

If you're looking for Umbrella the link is on your right.

I wanted to update Umbrella & TinyTSS but with the Spirit Storm I couldn't, in good conscience, update with the risk of breaking the app. The last thing I wanted was to leave thousands of people stranded. So far almost 120k downloads have been registered for fw-umbrella. Wow.

Ok so for the next couple weeks I'm going to be working on a major rewrite of the app. It's been a long time since I've written anything in C from the ground up so bear with me. v222 of fw-umbrella is stable and should keep us all holding onto our local shsh files until 4.0 os ships. I want to have the rewrite finished before 4.0 is out the door.

It's looking like 4.0 is going to ship around the release of the new iphone along with a fairly major iTunes release. This iTunes release will have code that will read a new key in the shsh responses. This key will be verified in iTunes itself to determine if the shsh can/should be used. The importance of this is that iTunes currently does very little checking of the shsh that is returned by the TSS server (apple, saurik, or tinytss). This 'feature' will allow apple to stop us from restoring our idevices to 'disallowed' os versions. What's worse is that their intent is to put this new-key reading code in the bootrom of the new iphone coming out this summer. This will enable them to stop restores on the device (above and beyond the current shsh check).

Beating this system will take a lot of work and patience. I hope to [re]write firmware umbrella in such a way that I don't have to rewrite it again after 4.0 comes out.