[Tutorial] Make your own Siri proxy server for use with Spire

spire_tutorial_featured

Update 1/18/2012: You may be interested in Jimmy Kane’sThe Three Little Pigs Siri Proxy.” It’s quite advanced and reliable.

Ever since the release of Spire for iOS 5.0.1, many people were hustling to find a working proxy server so that they can use Siri on their non-4S device. Hosting your own server on your own network (which can, optionally, be accessed externally through, for example, a 3G connection) can be a little tricky, but is fairly easy. This post will explain this entire process from start to finish.

Talking to Siri.

Notes/Features

Here are some important things to note:

  • This tutorial will be using Linux. If you’re on Windows, then get a copy of VirtualBox and run Ubuntu 11.10 in it. Set your networking preferences to “Bridged”.
  • This guide shouldbe able to work for Mac OS X, but I’ll need some testers for it.
  • Users who want to use your server will be able to connect on any Internet connection, whether it be Wi-Fi, 3G or possibly EDGE.

How This Works

The way that this all works is quite simple. You’ll be using something called “SiriAuth”, which is basically your server. For this to work, you’ll need to grab the Siri authorization keys from a 4S which, as mentioned below, will need to be done every 24 hours. Beyond that, people can connect to the server through your IP address or, what’s more recommended, a DynDNS sort of solution (for example, FreeDNS). The DNS route takes your home IP address and masks it to a domain name for ease of use so that, should your home IP address change, the people with your URL will still be able to connect to it without worrying about IP address changes.

Before You Quit!

Many people think that this is difficult, primarily because of how lengthy it is. Read the requirements below. This honestly isn’t that difficult to pull off.

Use an already working Siri server…

If you’re willing to pay a small monthly fee to use an already working Siri server, then go here: http://thetecherra.com/2012/01/19/spire-cheap-siri-server-slots-use-siri-on-your-non-4s-device/

Requirements

Here are some of the requirements:

  1. Experience with command-line options/Terminal - You’ll be running various commands. You must know what cd, sudo, ruby, etc. do.
  2. Linux – As mentioned above, you’ll need Linux, although you might be able to be used with Mac OS X, so please test this for us.
  3. Port 443 & 53 forwarded – This is to be done with your router. Click here for port forwarding information. Other ports can be used by modifying siriAuth.rb.
  4. An iPhone 4S – This is used to grab the Siri authorization keys. The person with the 4S doesn’t actually have to be near you. You can use any 4S over the Internet. These keys will need to be re-grabbed every 24 hours.
  5. A jailbroken iOS 5.0.1 device – This is used for Spire :) .
  6. Spire – Install this on the iOS 5.0.1 device that you want Siri to be used on.
  7. Up to an hour worth of time – Depending on your skill level and problems that you may run into, you’ll need maybe an hour of time.
  8. Patience – And the willingness to at least attempt to diagnose your own errors.

Credits

Some people to thank:

  • @chpwn, @rpetrich, & Apple - For providing Spire.
  • Applidium - For coming up with “Cracking-Siri”.
  • Plamoni - For creating SiriProxy.
  • StanTheRipperFor providing the tools used (SiriAuth + AuthGrabber).

Downloads

Here are the required downloads:

  1. SiriAuth, 8KB~ (mirrors below) – The Siri server, by StanTheRipper.
    1. MultiUpload
    2. MegaUpload
    3. UploadKing
    4. UploadHere
    5. DepositFiles
    6. Hotfile
    7. zShare
    8. FileSonic
    9. Wupload
  2. AuthGrabber, 13KB~ (mirrors below) – The script that’s used to grab the Siri auth keys from a 4S, whether it be locally on your network or remotely, also by StanTheRipper.
    1. MultiUpload
    2. MegaUpload
    3. UploadKing
    4. UploadHere
    5. DepositFiles
    6. Hotfile
    7. zShare
    8. FileSonic
    9. Wupload

Step 0 – Quick .sh Note!

If you’re attempting to execute a .sh file, and Terminal is saying that the command is not found, then you’ll need to run the following:

sudo chmod +x [name_of_.sh_file]

After that, you should be able to run the .sh.

Step 1 – Getting the 4S Keys

Assuming you have an iPhone 4S, ports 53 & 443 forwarded, and Linux, all you have to do is run the follow command (after using cd to change the directory to where the AuthGrabber files are located)

./dependencies.sh

This will make sure that all of the other required bits of software are installed.

Next, you’ll need to generated the certificate file that has to be installed onto the iPhone 4S. To do this, run the following:

sudo ./certs.sh

Follow the on-screen prompts to generate your certificate. The information doesn’t have to be accurate, and can basically be whatever you want.

Note: This certificate is only required to be installed onto the device whenever the 4S auth keys are required. After they’re grabbed, you can remove the certificate, or just leave it installed as it causes no harm.

Next up, you’ll need to setup a small DNS server that’s used in Python. Refer to this link: http://pastebin.com/raw.php?i=7EXgFXek. Copy and paste everything there into a blank plain-text file. Search for “555.555.555.555″. Replace this with the IP address of the machine (if you’re doing it locally), or your actually Internet IP address (if the 4S is remote). Save this file as “dns.py” to the same directory as the other AuthGrabber files.

To run the DNS server, run this command:

sudo python dns.py

After that, you should see something like this:

Fake DNS Server:: dom.query. 60 IN A 555.555.555.555

If you get an error that says an address is already in use, then run the following, and then try the Python command again. 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:

sudo killall dnsmasq

Before you start the server, you’re going to need a few more files. Download the following ZIP, and extract the two files within to your AuthGrabber directory:

While the server is running, open up a new Terminal window, change the directory back to the AuthGrabber folder, and run the following:

sudo ruby authGrabber.rb > OUTPUT.txt

This will start authGrabber.rb, and will output the grabbed keys into OUTPUT.txt. Both the DNS server and authGrabber server are running. On the 4S, you’ll need to change its Wi-Fi DNS to your IP address, whether it be local or remote. This can be done in Settings>Wi-Fi>[blue arrow for your Wi-Fi network]>DNS. Make sure to go back a menu and exit out of Settings for it to work.

Lastly, on the 4S, try and bring up Siri. As soon as this is done, you’ll see text fly by in your Terminal window. Open up OUTPUT.txt to see if anything is inside. If you see various keys and whatnot, then you’re done. You can now kill the DNS server by CTRL+C’ing the appropriate Terminal window.

If you need to grab the keys, just start the DNS server, start the authGrabber server, give the 4S your certificate, and give it your IP address for them to change their Wi-Fi DNS to.

Step 2 – Starting Your Siri Proxy Server

Starting the Siri proxy server is similar to starting the authGrabber server above.

After changing Terminal’s directory to the SiriAuth folder, run the following command:

./dependencies.sh

This makes sure that all the required bits of software are all installed.

Next, you’ll need to generated the certificate file that has to be installed onto the jailbroken Spire device. To do this, run the following:

sudo ./certs.sh

Follow the on-screen prompts to generate your certificate. The information doesn’t have to be accurate, and can basically be whatever you want. The only part that needs real information is when it asks you for the IP address of your server, whether it be a local IP, your Internet IP, or a URL of a DynDNS sort of thing.

Note: This certificate is required to use Siri, and will not work if it’s removed.

Next, you’ll need to edit siriAuth.rb with the keys that were grabbed earlier. Open the file with a text editor (most likely gedit), as well as the OUTPUT.txt file that was made earlier. There are 4 things that need to be copied:

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

From OUTPUT.txt, copy the appropriate key into siriAuth.key. The place to copy them to is near the beginning of the file. Make sure to copy the key between the quotes, and paste them between the quotes, respectively. Save the file when done.

To start the server (the fun part), simply run the following:

sudo ruby start.rb

It’ll say the following if the server has been successfully started:

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

Move on to step 3 :) .

Step 3 – Setting Up Spire

This part is simple.

Go into Settings, and then Spire. In the box, enter in the URL or IP address of your server, after http://. You may need to add https:// for it to work.  After it’s set, go back to the main menu in Settings, and go to General > Siri. Make sure that you turn it on. After it’s been turned on, respring your device.

Test to see that this is working by bringing up Siri (or Siri’s dictation feature). If it is, you’ll see a lot of text scrolling through the Terminal window for siriAuth.

That’s it!

That’s all there is to this. It’s honestly quite straightforward, assuming you don’t get any errors when trying to start authGrabber or siriAuth.

If you have any questions, I’ll try and answer them. Leave them below in the comments area. I won’t respond to questions via Twitter.

Feel free to follow Brian and The Tech Erra on Twitter.

  • Stephen W Blumenthal

    Brian what is your fee and where can I find information? Stephen.w.blumenthal@gmail.com

    • Anonymous

      The information as been added to the post.

  • Tyler raimo

    how do i run [install.sh] there is no such file in the download

    • Anonymous

      My mistake. It should be dependencies.sh.

  • Tyler raimo

    i keep getting [authGrabber.rb:2:in `require': no such file to load -- rubygems (LoadError)
    from authGrabber.rb:2] for [sudo ruby authGrabber.rb > OUTPUT.txt]

    • Anonymous

      Try:

      sudo apt-get install ruby

      Or,

      sudo apt-get install rubygems

      After you try those, run the command again.

      • Tyler raimo

        now i get /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — eventmachine (LoadError)
        from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require’
        from authGrabber.rb:3

        • Anonymous

          Do:

          sudo gem install eventmachine

          • Tyler raimo

            now i get /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — cfpropertylist (LoadError)
            from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require’
            from authGrabber.rb:5

          • Tyler raimo

            this is what the install of eventmachine looks like

            sudo gem install eventmachine
            Building native extensions. This could take a while…
            Successfully installed eventmachine-0.12.10
            1 gem installed
            Installing ri documentation for eventmachine-0.12.10…
            Installing RDoc documentation for eventmachine-0.12.10…
            Could not find main page README
            Could not find main page README
            Could not find main page README
            Could not find main page README

          • Anonymous

            That’s okay.

            Do this to install CFPropertyList:

            sudo gem install cfpropertylist

          • Tyler raimo

            nothing is showing up n output.txt

            authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
            from authGrabber.rb:73

          • Anonymous

            That means the iPhone 4S doesn’t have the certificate installed.

            Or, you might want to try the siriServer.rb setup that’s here: http://thetecherra.com/2011/12/10/tutorial-run-siri-on-your-iphone-4-from-start-to-finish-wip/

          • Tyler raimo

            i installed the certificate and i still do not get any keys

          • Tyler raimo

            i get no keys and this shows up

            /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:304:in `start_tls’: Could not find ./server.passless.key for start_tls (EventMachine::FileNotFoundException)
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:302:in `each’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:302:in `start_tls’
            from siriServer.rb:27:in `post_init’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:45:in `new’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `instance_eval’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/em/connection.rb:36:in `new’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1430:in `event_callback’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
            from siriServer.rb:73

          • Anonymous

            Try running this instead of authGrabber.rb:

            sudo ./cache.sh

          • Tyler raimo

            i cant get the key for some reason

          • Anonymous

            That’s pretty detailed.

          • Greenerx

            Successful until here:

            /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — cfpropertylist (LoadError)
            from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require’
            from authGrabber.rb:5

          • Anonymous

            sudo gem install cfpropertylist

          • Clement

            Brian, when I type: sudo gem install cfpropertylist , get below error.. Any ideas ?

            ERROR: Could not find a valid gem ‘cfpropertylist’ (>= 0) in any repository
            ERROR: Possible alternatives: CFPropertyList
            thanx

          • Anonymous

            Everything is case-sensitive in Linux, so:

            sudo get install CFPropertyList

          • Cthuraisamy

            Thanks Brain .. It worked

  • Anonymous

    Wow that’s a lot more complicated than what I did. http://www.idownloadblog.com/2011/12/09/how-to-install-siri-proxy-tutorial-video/ Anyway nice tutorial.

    • Anonymous

      Also since I already have a server can I just go straight to the section for grabbing the keys.

      Cheers

    • Anonymous

      How’s it complicated? It’s incredibly simple.

      • Anonymous

        Well it’s not that complicated but like you need to download alot of stuff probably thats why. But since I already have a server on my local ip can I sue the dns settings for python to change it to my actual Internet ip?

        Thanks and Cheers

  • Tyler raimo

    i got every thing entered when i try to use siri it does the ding twice and doesn’t work

    • Anonymous

      That’s still not detailed.

  • Tyler raimo

    i got i working on 3g but not wifi?

    • Anonymous

      That’s odd… Either way, you’re still not being detailed.

      • Tyler raimo

        i put my ip address of my server in spire and it will work on 3g but on wifi i have to change it to the local ip address for it to work

        • Anonymous

          Add :443 to the end of your IP address and see if it works. You can probably use FreeDNS instead.

          • Sangokudbz79

            That is normal, because someone on the same network cannot access the external Ip of the server in question. Probably because you are in dmz so you dont have any internal IP.

          • Sangokudbz79

            Try using another wifi (like a public or even your neighbourgs wifi and it will work ;)

  • Templeman15

    I am having the same problem as Tyler. I have installed the cert guzzoni.apple.com on the iPhone 4s, I have changed the dns to my IP. I have started dns.py, then siriAuth.rb. I try and use siri on my 4s and I get:

    Macs-MacBook-Pro-2:siriServer mac$ sudo ruby authGrabber.rb > OUTPUT.txt
    ruby: No such file or directory — authGrabber.rb (LoadError)
    Macs-MacBook-Pro-2:siriServer mac$ cd ~/desktop/SiriProxy/auth
    Macs-MacBook-Pro-2:auth mac$ sudo ruby authGrabber.rb > OUTPUT.txt
    authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from authGrabber.rb:73

    ….. I then tried to skip to the next step and use my keys I extracted using another method, which seem to be correct. I put them into siriAuth.rb and have my key installed on the iPhone 4. After I do sudo ruby start.rb I get:
    Selected X-Ace Host: (and displays my keys, the actual key I put into the file) for each key, etc.

    I try and use siri with spire and I get a huge amount of data but pretty much looks like this:
    “class”=>”CommandFailed”,
    “refId”=>”4AADFB1B-6757-45DB-A7FD-18945DCF3A2B”,
    “properties”=>
    {“errorCode”=>0, “reason”=>”Not authenticated”, “callbacks”=>[]}}

    ….any ideas, thanks a lot for the great tut!

    • Templeman15

      sorry I meant I started dns.py and then sudo ruby authGrabber.rb > OUTPUT.txt…

    • Anonymous

      Not authenticated means the keys have expired or simply aren’t working.

      Maybe reinstall the eventmachine gem?

      • Templeman15

        I was using convertValidationData.rb from another tutorial before I put the keys into siriAuth.rb. Works perfectly thanks!

        I still can’t extract the keys from the beginning of my first comment. I re-installed eventmachine and still got the same error. Thanks for your help

        • Templeman15

          I also tried it on ubuntu and I got the same errors there.

  • Danish

    HELPP
    ubuntu@ubuntu:~/abc/AuthGrabber$ sudo chmod +x ./dependencies.sh
    buntu@ubuntu:~/abc/AuthGrabber$ sudo ./dependencies.sh
    refreshing apt (just in case)…
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric InRelease
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/main TranslationIndex
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/restricted TranslationIndex
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/main Translation-en_US
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/main Translation-en
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/restricted Translation-en_US
    Ign cdrom://Ubuntu 11.10 _Oneiric Ocelot_ – Release i386 (20111012) oneiric/restricted Translation-en
    Ign http://security.ubuntu.com oneiric-security InRelease
    Ign http://archive.ubuntu.com oneiric InRelease
    Ign http://archive.ubuntu.com oneiric-updates InRelease
    Get:1 http://security.ubuntu.com oneiric-security Release.gpg [198 B]
    Get:2 http://archive.ubuntu.com oneiric Release.gpg [198 B]
    Get:3 http://security.ubuntu.com oneiric-security Release [32.4 kB]
    Get:4 http://archive.ubuntu.com oneiric-updates Release.gpg [198 B]
    Get:5 http://archive.ubuntu.com oneiric Release [40.8 kB]
    Get:6 http://security.ubuntu.com oneiric-security/main i386 Packages [64.5 kB]
    Get:7 http://archive.ubuntu.com oneiric-updates Release [32.4 kB]
    Get:8 http://archive.ubuntu.com oneiric/main i386 Packages [1,226 kB]
    Get:9 http://security.ubuntu.com oneiric-security/restricted i386 Packages [14 B]
    Get:10 http://security.ubuntu.com oneiric-security/main TranslationIndex [73 B]
    Get:11 http://security.ubuntu.com oneiric-security/restricted TranslationIndex [70 B]
    Get:12 http://security.ubuntu.com oneiric-security/main Translation-en [34.2 kB]
    Get:13 http://security.ubuntu.com oneiric-security/restricted Translation-en [14 B]
    Get:14 http://archive.ubuntu.com oneiric/restricted i386 Packages [8,216 B]
    Get:15 http://archive.ubuntu.com oneiric/main TranslationIndex [3,289 B]
    Get:16 http://archive.ubuntu.com oneiric/restricted TranslationIndex [2,263 B]
    Get:17 http://archive.ubuntu.com oneiric-updates/main i386 Packages [249 kB]
    Get:18 http://archive.ubuntu.com oneiric-updates/restricted i386 Packages [2,968 B]
    Get:19 http://archive.ubuntu.com oneiric-updates/main TranslationIndex [74 B]
    Get:20 http://archive.ubuntu.com oneiric-updates/restricted TranslationIndex [71 B]
    Hit http://archive.ubuntu.com oneiric/main Translation-en
    Hit http://archive.ubuntu.com oneiric/restricted Translation-en
    Get:21 http://archive.ubuntu.com oneiric-updates/main Translation-en [116 kB]
    Get:22 http://archive.ubuntu.com oneiric-updates/restricted Translation-en [508 B]
    Fetched 1,814 kB in 57s (31.4 kB/s)
    Reading package lists… Done
    installing required stuff etc…
    Reading package lists… Done
    Building dependency tree
    Reading state information… Done
    Note, selecting ‘libxslt1-dev’ instead of ‘libxslt-dev’
    Note, selecting ‘libncurses5-dev’ instead of ‘ncurses-dev’

    ERROR PART

    Package dnsmasq is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source

    E: Package ‘dnsmasq’ has no installation candidate
    Installing dnsmasq settings…
    Installing RVM…
    ./dependencies.sh: 8: Syntax error: redirection unexpected
    ubuntu@ubuntu:~/abc/AuthGrabber$

    • Anonymous

      Edit dependencies.sh to not install dnsmasq.

      • Danish

        then how should i install dnsmasq???

      • danish

        this error is also there

        Installing RVM…
        ./dependencies.sh: 8: Syntax error: redirection unexpected

  • Pingback: [Tutorial] Make your own Siri proxy server for use with Spire | iG33kstas.com

  • Benny Isaacs

    When i try to sudo ruby authGrabber.rb > OUTPUT.txt

    it says: /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — cfpropertylist (LoadError)
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require’
    from authGrabber.rb:5
    so i tried ubuntu@ubuntu:~$ sudo apt-get install CFPropertyList
    but it said: eading package lists… Done
    Building dependency tree
    Reading state information… Done
    E: Unable to locate package CFPropertyList

    What should I do?

    • Anonymous

      Just the IP.

      • Benny Isaacs

        ok.. it worked to me but just locally.. butt now it isnt working at all:
        ubuntu@ubuntu:~/SiriAuth$ sudo ruby start.rb
        Server started
        Selected X-Ace Host: 813e26bb-55c0-422e-81d6-53896213d7c2
        Selected assistantId: 498419d5-6d93-4bd3-90a9-fdee55278f3f
        Selected speechId: c82c4fcf-ae8a-47e7-8b7a-6df81c657908
        Selected ValidationData: &
        � �w�
        �_����T��)�I�Ӎ v��sf��w�Vه���[:��;����~��+�k��(O�����Czm��(���jEj!�d�Ƒ����HOOmL���9��]u���Uu���&�Y*5GVU�

        /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server’: no acceptor (RuntimeError)
        from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server’
        from ./siriAuth.rb:286:in `initialize’
        from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call’
        from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
        from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
        from ./siriAuth.rb:285:in `initialize’
        from start.rb:5:in `new’
        from start.rb:5

        • Anonymous

          Is authGrabber still running? Close it if it is. Or, run this:
          lsof -i :53

          It’ll tell you whatever’s using port 53. Run sudo killall [name of process] to kill it. For example, sudo killall named.

          • Benny Isaacs

            now i started it but it’s tells me :
            [Info - Guzzoni] Object: CommandFailed (group: com.apple.ace.system, refId: D9FD9C45-91D3-43C7-92EB-F2EC4E195F1C, aceId: 64722454-7837-4a6a-b248-e0aa54a6417b)
            {“group”=>”com.apple.ace.system”,
            “aceId”=>”64722454-7837-4a6a-b248-e0aa54a6417b”,
            “class”=>”CommandFailed”,
            “refId”=>”D9FD9C45-91D3-43C7-92EB-F2EC4E195F1C”,
            “properties”=>
            {“errorCode”=>0, “reason”=>”Not authenticated”, “callbacks”=>[]}}

            and i took the 4S keys just an hour ago.. after i took it just an 2 hours ago.. so i grabbed 4S keys twice.

          • Anonymous

            That’s currently the problem that I’m experiencing. Haven’t found a fix.

          • Benny Isaacs

            now when i am trying t grab new keys it tells me:
            authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
            from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
            from authGrabber.rb:73

          • Anonymous

            Is the DNS properly set? And the certificate?

          • Benny Isaacs

            yes..
            it worked but now it’s not..

          • JasonS

            I’m having the same issue as well. Checked the cert and dns. Not sure what I’m missing or didn’t configure correctly.

          • Benny Isaacs

            nvm it’s the keys :P

          • Anonymous

            I know, but it doesn’t matter, because if you get the keys from the same 4S again, they’ll be the same.

  • Kok Hean

    How do I actually forward the port? The website gave me a list of applications and I do not know which one to click on.

  • Brian D

    i got it to work, but the redacted indications dont show, oh well. but it works!! thanks techerra. but maybe make a tutorial on how to upload it to a website/freeDNS?

    • Anonymous

      It’s pretty easy. FreeDNS just needs you to replace the nameservers for a domain to theirs, and you can give FreeDNS an IP address for it to point ti.

      • Clement

        Brain, I had it working with Wifi last nite.. I created a freeDNS and forwarded the right port and changed spire to dns. It now works on 3G but wifi is broken. I figured it should work.. I tried removing the old ca and it don’t help.
        Any ideas?

        • Clement

          my bad.. Brian.. nt Brain.. Sorry :)

          • Clement

            fixed.. issue on my router.

          • Sangokudbz79

            Just curious, what was it? I’m hosting a website @home and I can’t access it on the dyndns adress. I must use the local ip.

      • Brian Dang

        do i still need to run the server on my linux box? im trying to find something that doesnt require my linux box to always be on. and do you think you could write some script that copies the data from the output.txt to the siriAuth.rb?

        • Anonymous

          siriAuth has to be running all the time, or else Siri won’t work at all.

          Someone created something like that, but I don’t have the email that contained the script anymore :( .

        • sangokudbz79

          Follow @smartype (eric day, creator of siri0us.). He’s develloping exactly what you want. An server ON the iphone.

  • JasonS

    Brian,
    When I try to grab the keys from a 4S I get the following:

    authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from authGrabber.rb:73

    The certificate is installed on the 4S and the DNS server is running. What am I missing?

    • Clement

      Check your output.txt file, the data should be there. I got the same but data was captured in output.txt

      • http://www.facebook.com/EvilsResonances Florian Harr

        Nothing, my Output.txt is 0 byte big and empty …

      • http://www.facebook.com/EvilsResonances Florian Harr

        Okay, I managed to get the Keys. My problem and mistake was definitely the certificate stuff.

        I used sudo ./certs.sh instead of ./certs.sh
        I was already wondering why he didn’t ask for passwords and stuff like that

    • http://www.facebook.com/EvilsResonances Florian Harr

      I get exactly the same error message as you do and I don’t get what’s going wrong. I created and installed the certificate and installed it on the device.

      My configuration is a Ubuntu 11.10 system with all depenendencies install running in parallels on a Mac OS X 10.7 host.

      I’m trying to get the Siri Key’s remotely. I see all dns request in the dns window but the authGrabber shuts down exactly the second siri starts showing up on the remote iphone 4s

  • Greenerx

    authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from authGrabber.rb:73

    • Clement

      Check your output.txt file, the data should be there. I got the same but data was captured in output.txt

      • Greenerx

        I checked, its empty..

        • Clement

          hmm.. Just to confrim, you got the CA you created in SiriAuthGrabber folder installed on Iphone 4s. And u changed wifi DNS of 4s to point to your server ip, correct ? if so.then try this, installing each one below and then try.. I know I got the error.. I re-ran eventmachine and the rest..but then I got the same msg as u had but when I checked my output.txt, the data from 4s was there.

          sudo gem install eventmachine

          sudo gem install CFPropertyList

          sudo gem install httparty

          sudo gem install json

          • Greenerx

            I did all that before I set up the servers.. All those gems are already installed..

          • Clement

            I did as well.. but re-ran them again. If you want to be safe take a snapshot your server if you are running it as a virtual and try it. If not, I won’t be much of assitance further since I’m not linux expert.
            Was trying to help based on my experience..

      • Greenerx

        I did everything just as it says.. And I always get stuck at this stage.. Any ideas?

  • Cthuraisamy

    You can forward the ports on your router (if supported)..most Routers do now days.
    Just add the ports and select your machine ip address

  • http://www.ipadshouse.com/complete-spire-proxy-host-list-for-siri/ Digitalunlocking

    I have done everything like thus guide says but receive no connection error

  • Brian Dang

    is there a way to document how many people are connected? looking to sell some slots but i dont want them leaking it >:]

    • Anonymous

      Unfortunately, I don’t think that there’s a way. You *might* be able to allow certain IP addresses into your server, but then I think there may be some issues if they decide to use 3G or multiple Wi-Fi networks.

      • Brian Dang

        well how do you about letting /certain/ IPs?

        • Anonymous

          I don’t know.

  • JasonS

    So I was able to get the proxy server working and siri works on my iphone. But every now and then siri will not respond. When I check the server I have the following error message. I thought for a moment since it says “Not authenticated” that the 4S keys had expired. I extracted the keys from the 4S and they were same. It is strange as it will work then stop working for a while then work again for a while. A google search found others having this same problem but I couldn’t find a resolution. Any ideas anybody?

    {“group”=>”com.apple.ace.system”,
    “aceId”=>”a78d54e8-ff5e-45ce-8071-431b4576c1e6″,
    “class”=>”CommandFailed”,
    “refId”=>”DE3EADD5-03CD-48FF-97EA-7FCAB4608BE3″,
    “properties”=>
    {“errorCode”=>0, “reason”=>”Not authenticated”, “callbacks”=>[]}}

    • Anonymous

      That’s what I’m having issues with with my server. Really annoying…

      • sangokudbz79

        On our side, when it happens, exactly at 12:00, means the keys have expired. He puts the new one when he come back from work and it works again.

  • Josh

    I got everything complete, but siri keeps telling me that something is wrong. I don’t see any text moving in the server after the server says its started, and lists my keys. Double checked my keys. Ports are forwarded correctly, tried with https, http, with 443 on the end. Local address as well as dyndns address. I am unable to get spire/siri to communicate with the proxy server on the iphone4 in anyway. What other ways can I test?

    • Anonymous

      I’m starting to think that Apple has caught on to all of this.

    • JasonS

      Did you import the cert from the SiriAuth folder into your iphone4? Mine did the same thing until I import the cert and did a respring.

      • Josh

        I did not do that part. However, I just did it and now instead of an immediate two dings, and siri telling me she is having a problem. The mic stays on for as long as I talk, and then it thinks for about a minute before she tells me she has a problem. Still nothing showing on the siri server.

        • Anonymous

          I’d try and help, but I’ve honestly had enough Siri stuff over the past 5 days.

        • sangokudbz79

          You got 3gs right? If so, update to 5.0.1 solved my problem. Had same as you before I upgraded.

  • sangokudbz79

    Well big thanks for this tutorial and troubleshooting! Got it working and working like a charm. Btw, I got an iphone 3gs and I see no dictation icon in spotlight/note app. Do you guys get one on the iphone 4?

    • evil

      what did u do that it works? my error is when an iphone is connecting:

      authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
      from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
      from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
      from /var/lib/gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
      from authGrabber.rb:73

      any idea?

  • Brendan

    Ive ran the dependencies.sh a couple times already.

    When i try to run authGrabber.rb

    /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — eventmachine (LoadError)
    from /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:36:in `require’
    from authGrabber.rb:3

    what am i missing?

    • Brendan

      did a sudo apt-get install eventmachine*

      now i get — cfpropertylist instead of –eventmachine

      • sangokudbz79

        sudo apt-get install CFPropertyList

        Carefull, uppercase count.

        • Brendan

          I tried that and i get
          E: Unable to locate package CFPropertyList

          • Anonymous

            Those are gems.

            sudo gem install [nameofgem;casesensitive]

    • Anonymous

      sudo gem install eventmachine

  • Jfayre

    When starting authGrabber.rb, I don’t get the “proxy layer established” message, which it looks like I should see from looking at the code. I also don’t get any data from iPhone 4s. iPhone 4s is external and ports are forwarded. Have tried with dnsmasq as well as dns.py. Any ideas?

  • http://www.facebook.com/people/Baris-Kilic/100000906985862 Baris Kilic

    Can anyone help ?

    ./authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
    from /usr/local/rvm/gems/ruby-1.9.3-p0/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
    from /usr/local/rvm/gems/ruby-1.9.3-p0/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /usr/local/rvm/gems/ruby-1.9.3-p0/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from ./authGrabber.rb:73:in `’
    Request cached, writing to auths/acehosts0.txt

    what is false ?!

  • Drew_Jordan

    Alright, i get this message which seems correct in terminal which worked in the previous tutorial.

    sudo ruby authGrabber.rb > OUTPUT.txt

    authGrabber.rb:40:in `unbind’: undefined method `close’ for nil:NilClass (NoMethodError)
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:1417:in `event_callback’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from authGrabber.rb:73
    Which i think this is a good message saying it has done its job, but when i check the output.txt file, its blank. I have the ca.crt which is guzzoni.apple.com and i think it is installed correctly on my 4S. Why is it blank? Help?

    • http://www.facebook.com/people/Baris-Kilic/100000906985862 Baris Kilic

      Same here, always get this error -.- Update.txt is blank…

  • Drew_Jordan

    Server started
    Selected X-Ace Host: cfe34d23-2d7b-4657-bc8c-0d4e0873b200
    Selected assistantId: be25cdf4-9d55-4684-90fc-e1127a542e75
    Selected speechId: d90866fa-9838-4213-b7ba-c14c8f97bff4
    Selected ValidationData: ??.ؓQp]?? ??Y??7?r?w????E?I?ބ ?S`?#Ω֑??wa5ܦE??́??1??*?u???/I]?~N???C?@
    /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server’: no acceptor (RuntimeError)
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server’
    from ./siriAuth.rb:286:in `initialize’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine’
    from /Library/Ruby/Gems/1.8/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run’
    from ./siriAuth.rb:285:in `initialize’
    from ./start.rb:5:in `new’
    from ./start.rb:5

    This is on mac… I am getting this error message and one step closer getting it to work? Any help?

    • Anonymous

      That usually means that something else is using the same port (443). Is AuthGrabber running at the same time? If so, turn that off before starting SiriAuth.

      • Drew_Jordan

        Alright thanks! I got everything working, but only works on the local wifi network. How do I make it work on Edge/3G? If its a FreeDNS, but not working subdomain? How do you create one? My main question is, how do you make work on Edge/3G?

        • Anonymous

          You’ll have to change the IP of your certificate to your Internet IP (http://whatismyip.com) and point Spire to it: https://IP:443

          • Drew_Jordan

            Yeah, tried it but doesn’t work. Wish there was an easier way to make it work on Edge/3G

  • http://www.facebook.com/EvilsResonances Florian Harr

    Server started
    Selected X-Ace Host: e681b993-9cc0-4af4-8397-09641b49938e
    Selected assistantId: 8998d8e7-b31a-4c2e-b26c-ccd5991fca41
    Selected speechId: c828d01e-d119-4f77-a81b-189367a42eb3
    Selected ValidationData: ��J>%�����Ja)z��
    �����I�:�I)���ІE�~OcR���`�5|2
    @���B���(6�z oT[���g������nC�:|����Gr�n~�eR�����g���%s�������V��1��^��H����x�>k�
    �P��O� �!A��>sz�h>N- 6 qs�Lv?�l�}��FO
    ��f���R��a�,��L��Q���-�B�l�G�J�~

    This is what my output looks like after I started the server with start.rb

    How can I check if I can reach my server?

    And can someone explain me where those keys belong to and match ?

    • http://www.facebook.com/EvilsResonances Florian Harr

      Okay, I got everything working!

      Now my problem is that I need to install the ca.crt created in Step 2 manually on my iPhone to use Siri/Spire afterwards.

      Is there any way to avoid that?

      using http instead of https is not working!

      • Anonymous

        The certificate is required. What do you mean by manually?

        Just use https.

        • http://www.facebook.com/EvilsResonances Florian Harr

          After I grabbed the authentication keys I created new certificates in the SiriAuth folder.

          To make Spire work on my iPhone 4, I needed to install this ca.crt created before in the SiriAuth folder on my iPhone by emailing it to my device. Is this a correct procedure?

          I thought I could obtain this certificate manually…

          • Anonymous

            Yes, that’s the correct procedure, as mentioned in the post.

  • http://www.facebook.com/stefan.muska Stefan Musca Popescu

    Thanks a lot for the tutorial! So i get it work on mac os x lion. The only problem i have now is that siri is not responding by voice, only is executing what i’m asking (show me weather, show clock, make/delete appointments, etc.). I’m trying now to make it work on 3G. Could be that spire is not complete? Or I did something wrong???

    • Anonymous

      Hmm… Something went wrong somewhere.

      In regards to 3G, you’ll simply need to make a new certificate that points to the new IP address, and fill Spire in with that IP address.

      I had a similar issue with Siri not talking back when I was using SiriN1ght, but everything works perfectly with Spire, so I can’t help you there.

      • http://www.facebook.com/stefan.muska Stefan Musca Popescu

        Ok, got it to work on 3G and also to talk (restore and jailbreak again)

        Tnx again man!

  • Arman_kousha

    hi i have a linux host is there any one can make a siri proxy on my host?
    tnx

    • Anonymous

      If you’re willing to pay us for setting it up, then sure. And you’ll need 4S auth keys.

  • DynamoJones

    it says the person w/ the 4s needs not be near you, so how do you aquire the keys from someone 10, 40, 100 miles away from you?

    • Anonymous

      The 4S needs to change their DNS to your actual IP address.

  • DHi10

    Any idea about controlling users by UDID for exemple for a VPS Server ??

    • Anonymous

      I don’t think that the UDID is even sent to any server when using Siri, so I don’t think that it’s [currently] possible.

      • DHi10

        iOS4Me and other Siri Server it’s use it but their wont put their Script :(

        • Anonymous

          They probably use the one that’s at the update at the top of the post.

  • Deepzinzu

    Can u post a full video on this? That would be helpful :) please do if possible…

    • Anonymous

      I would, but this isn’t really /that/ hard enough not to do it yourself. All of the steps are already laid out. All you have to do is execute the commands and do some small file editing.

  • Siri_Dude

    How do I add plugins to this? I got the server to work perfectly, but how do I some plugins?

  • Siri_Dude

    Any one know how to install plugins into this type of server? I cant seem to figure it out.

  • Aa

    so is there a way I won’t need to grap 4s keys every 24 hours but rather is happens automatically, if there is, I’d go for this gladly

    • Anonymous

      Surprisingly, there still isn’t an automatic way. Was hoping that there would be a jailbreak tweak of some sort that did that.

    • Ultimation

      Okey, its all done, you can run the updater.exe to grab the new version or download it from http://www.cowarserver.com/siriproxy/...

      the new version will automatically load the new keys, and authgrabber and proxy now run as 1 joint instance, so no more manual reloading, its all automatic!

  • Ultimation

    I have developed a native proxy in the .net framework for windows users (No ruby/perl) required!

    http://windowssiriproxy.blogspot.com/2012/02/siri-proxy-for-windows.html

    • Anonymous

      That’s fine and everything, but it’d be better if it had automatic 4S key detection in SiriProxy instead of having to use the old-school AuthGrabber.

      • Ultimation

        already on it :) , the proxy will act as both in 1 along with auto updating the key. please wait for the new version!

      • Ultimation

        Okey, its all done, you can run the updater.exe to grab the new version or download it from http://www.cowarserver.com/siriproxy/1002.exe

        the new version will automatically load the new keys, and authgrabber and proxy now run as 1 joint instance, so no more manual reloading, its all automatic!

  • Isacrakk

    Hi, when i run sudo ruby authGrabber.rb > OUTPUT.txt I get this response:
    /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require’: no such file to load — eventmachine (LoadError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require’
    from authGrabber.rb:3

    I’ve tried everything but can’t get that commando to work, what can I do?

    • Anonymous

      sudo gem install eventmachine

  • Mathias Fossum

    Can someone please reuplode those two extra files before starting the DNS server? all links are broken :/

    • besweeet

      The DepositFiles link works just fine for all of the files.

      • Mathias Fossum

        oh it works thanks :)

  • Mathias Fossum

    when i do sudo ruby authGrabber.rb > OUTPUT.txt

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

    help! i want this to work :P

    • besweeet

      That means rubygems isn’t installed.

      • Mathias S Fossum

        Where can i get that from? From the local store? :P