So I have really been working my @ss off to get this done as fast as possible, and now here it is: a SiriProxy server program which you can install on a cheap VPS or your own server and let it go! It does everything automatically: reads the key from a 4S every time it changes, and uses it when a 4, 3GS or iPod touch 4G makes a request
It uses this stuff:
-metasploit fakeDNS server – enhanced version by Wesley McGrew, modified to work with the latest Metasploit,
-Applidium’s Cracking Siri files, especially: eventmachineGuzzoni.rb (modified of course)
-StanTheRipper’s SiriAuth (modified a little bit)
How does it work?
Well, first we need to install our root certificate on the 4S, then set it up to use our DNS server. The big advantagr of McGrew’s fakeDNS server is that it passes through every request to a realDNS-server and alters only the requests you want, which means you can still use the 4S for everything (browse the web, check emails) because it does get valid DNS responses from our fakeDNS server.
Of course Siri wouldn’t work yet.
But I have found this awesome file called eventmachineGuzzoni.rb amongst Applidium’s Cracking-Siri files and it is good for one thing: get data from a 4S and pass it directly to Apple’s server.
I just needed to alter it a little bit so it interprets parts of the data before sending it to Apple, so I will be able to get the session validation key before talking to Apple.
So right now we have a setup that doesn’t change anything in the life of the 4S user but still gives us 4S keys to use.
Next I needed to alter the SiriAuth file to read the session validation data from the file my eventmachineGuzzoni server created. Once this was done my server-platform was ready.
To achieve the goal (no maintenance at all) I changed the SiriAuth’s port to something different than 443 so both eventMachineGuzzoni and SiriAuth can run on the same machine.
After a 4S makes a request the program reads the key and compares it with the stored one. If they match it doesn’t do anything, if they don’t match it writes out the captured 4S key to the file.
SiriAuth reads this file every time a request is made from a non-4S device, making it possible to always use the latest key without the need to change the server or restart anything.
It was a fun project to do, maybe I will add one more feature I miss: if the 4S key you use expires than I might send back Siri a response, so she will say: “your key has been expired, please get a new one to use Siri” or something like that.
If anybody needs the modified server files please leave a comment below and I will upload it somewhere for you.