Tutorial On Setting Up A Proxy Server For Siri On iPhone 4/3GS (Guide)

By -

Many of you who do not own an iPhone 4S really want to try out Siri, the best feature of iPhone 4S. As most of you are probably aware that there is currently no direct method on getting Siri on a non-iPhone 4S device, basically what I mean is that you will need to set up a proxy server so your iPhone 4/iPhone 3GS can use that to connect to Apple’s servers. Here I will show you on how to set up your own Siri Proxy Server.

Spire Siri port

Now before I start on how to Get Siri on iPhone 4/iPhone 3GS, there are some requirements that you should meet.

Requirements

  • Have knowledge of basic Linux command lines (Very important, if you do not have any knowledge then do not attempt this)
  • An iPhone 4S ( Used for Siri authorization keys)
  • Spire ( Mentioned below)
  • Port forwarding: 53 and 433 (Used for your router, you should know this it is not explained below)
  • Download SiriAuth ( Siri Server )
  • Download AuthGrabber ( Gets iPhone 4S Siri authorization keys)
  • Download Extra files

Disclaimer: Do NOT attempt this if you are not sure what you are doing. We are not responsible if something goes wrong.

Download Spire

As I mentioned in the requirements you will need Spire. If you do not have it follow the steps below and if you already have Spire skip this portion.

STEP 1: Jailbreak your device on iOS 5.0.1

STEP 2: Launch Cydia

STEP 3: Tap search button and search for Spire and download it

STEP 4: Once downloaded reboot your iOS device.

Download iPhone 4S Authorization keys

STEP 1: Run .SH file, if you are being presented with a command saying not found, run the command below.

sudo chmod +x [name_of_.sh_file]

STEP 2: Now you should have the iPhone 4S, downloaded Authgrabber from the link above and ports 53 and 433 forwarded. Run the command below

./dependencies.sh

STEP 3: You will now need the certificate file that should be downloaded to iPhone 4S. To do that run the command below

sudo ./certs.sh

Set Up DNS Server

STEP 4: You should now setp up DNS server which is used in python. Copy the entire text below on to a text file and replace

“555.555.555.555”  with your actual internet IP address and save it as “dns.py” to the same place as other AuthGrabber files.

import socket
class DNSQuery:
  def __init__(self, data):
    self.data=data
    self.dominio=''
    tipo = (ord(data[2]) >> 3) & 15   # Opcode bits
    if tipo == 0:                     # Standard query
      ini=12
      lon=ord(data[ini])
      while lon != 0:
        self.dominio+=data[ini+1:ini+lon+1]+'.'
        ini+=lon+1
        lon=ord(data[ini])
  def respuesta(self, ip):
    packet=''
    if self.dominio:
      packet+=self.data[:2] + "\x81\x80"
      packet+=self.data[4:6] + self.data[4:6] + '\x00\x00\x00\x00'   # Questions and Answers Counts
      packet+=self.data[12:]                                         # Original Domain Name Question
      packet+='\xc0\x0c'                                             # Pointer to domain name
      packet+='\x00\x01\x00\x01\x00\x00\x00\x3c\x00\x04'             # Response type, ttl and resource data length -> 4 bytes
      packet+=str.join('',map(lambda x: chr(int(x)), ip.split('.'))) # 4bytes of IP
    return packet
if __name__ == '__main__':
  ip='555.555.555.555'
  print 'Fake DNS Server:: dom.query. 60 IN A %s' % ip
  udps = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  udps.bind(('',53))
  try:
    while 1:
      data, addr = udps.recvfrom(1024)
      p=DNSQuery(data)
      udps.sendto(p.respuesta(ip), addr)
      print 'Antwort: %s -> %s' % (p.dominio, ip)
  except KeyboardInterrupt:
    print 'Beenden'
    udps.close()

Step 5: To run the server, enter the command.

sudo python dns.py

STEP 6: Download the “Extra files” from the above requirement portion and extract those to directory of AuthGrabber and run the command.

sudo ruby authGrabber.rb > OUTPUT.txt

STEP 7: Now you will need to change Wi-Fi DNS to your iP address on the iPhone 4S. Go Settings> Wi-Fi> select Wi-Fi> DNS.

To See if it’s working

Use Siri to test if its working or not. When you bring up Siri you should see texts running, “matrix style’ (that’s what I like to call it). Open OUTPUT.txt to check if there is anything inside, if you see anything then it means it’s working. If you wish you can close the DNS server.

Install Siri Proxy Server

STEP 1: Download SiriAuth, and start it in the same way as you done for AuthGrabber.

STEP 2: Create certificate file using the same command used for AuthGrabber

sudo ./certs.sh

STEP 3: Follow the on screen instructions for creating certificate, the info can be anything but remember to use real information for the IP address.

You will need to remember that unlike AuthGrabber certificate this should NOT be deleted as it is required for running Siri.

STEP 4: Edit Siriauth.rb file using a text editor and the copy the things below. Output.txt file needs to be edited too, the one used above.

  1. XAceHostKey
  2. ValidationDataKey (the large batch of data)
  3. AssistantIDKey
  4. SpeechIDKey

STEP 5: Copy the auth keys to SiriAuth.keys from output.txt. Make sure to paste them between the quotes.

STEP 6: Run the server by entering the following command

sudo ruby start.rb

To See If it’s working

Server started
Selected X-Ace Host: [redacted]
Selected assistantId: [redacted]
Selected speechId: [redacted]
Selected ValidationData: [redacted]

If you see the above text it means you have done everything right. Well done.

Port Siri To Spire

If you have done all the things above it is now time to port Siri to Spire.

By now you should have downloaded Spire from Cydia, if not go to the first portion and find out how to download Spire.

Go Settings>Spire and enter the address of your newly created proxy server “http://….”. Once done that go to General> Siri turn it on and respring your device.

Congrats !

You should now have successfully ported Siri to your iPhone 4 or iPhone 3GS.

Let us know in the comments below if you tried this method and it worked for you.

Stay tuned at Maypalo and follow us on Twitter or join our Facebook Fanpage to keep yourself updated on all the latest News

CEO & Founder of Maypalo

13 Comments to Tutorial On Setting Up A Proxy Server For Siri On iPhone 4/3GS (Guide)

  1. Will try.. thanx for this!
    have you checked out ???

    mikeyincredible-iosinject.blogspot.com/view/classic

    This guy is going great..
    following him… new hope for iPone 4 (5.0.1 , bb 4.11.08) unlock..
    cover this!

    • If you get an error that says an address is already in use, then run the following, and then try the Python command again.

      “sudo killall dnsmasq”

      But, if this doesn’t work, then something else is using port 53, and you’ll need to figure out what process is using it:

  2. Another error when I run authGrabber.rb :

    authGrabber.rb:2:in `require’: no such file to load — rubygems (LoadError) from authGrabber.rb:2

    What’s wrong please ?

    Regards

  3. Can I have your help please ?
    Another error when I run authGrabber.rb :

    authGrabber.rb:2:in `require’: no such file to load — rubygems (LoadError) from authGrabber.rb:2

    What’s wrong please ?

Leave a Reply

Your email address will not be published. Required fields are marked *