Git Product home page Git Product logo

cracking-siri's Introduction

Here are the tools we wrote to reverse-engineer Siri.

The code is extremely dirty as it was written, erased, written again, and is a pure product of a trial-and-error process. Anyway, here's a simple how-to if you want to have fun with it :

How to get the necessary bits

  • Generate a certificate authority
  • Add it to your iPhone
  • Sign a certificate for "guzzoni.apple.com" using that authority. This should produce the ".crt" and ".key" files your server will need.
  • Setup a fake DNS server that resolves "guzzoni.apple.com" to your own machine, and configure your iPhone to use it.
  • Start the "siriServer.rb" server. You will need some ruby gem installed. I have tested it only on Mac OS X 10.7.2 with Ruby 1.9.2.
  • Make Siri dictation request, for example from the Notes.app application. On the server, this will dump all the "interesting" bits (X-Ace-Host identifier, sessionData and such).
  • Use them to replace instances of "COMMENTED_OUT" in the code

How to do speech-to-text using a non-iPhone4S machine

  • Record your voice into whatever format you like
  • Use ffmpeg to convert the sound to raw sound samples (see the text file for the exact command line). Name it "tentative.raw"
  • Install the speex library and its header. On Mac OS X, "brew install speex" once you've setup Homebrew
  • Compile the speexEnc.m file (gcc speexEnc.m -lspeex -framework Foundation -o speexEnc)
  • Run ./speexEnc. It will produce a input.sif file with speex packets the Ruby script will be able to read
  • Run the "Siri.old.inline.rb" script. Et voilà !

cracking-siri's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cracking-siri's Issues

no input.sif after running ./speexEnc

Hi there first of all!

Machine: MacBook Pro
OS: Mac OS X 10.7 Lion
Ruby: 1.8.7 patchlevel 249
ffmpeg version: 0.8.5

I tried doing the speech-to-text from any device and as I noticed after executing ./speexEnc there is no input.sif so the ruby script (Siri.old.inline.rb) fails in the init func:

Guzzoni TCP connection established. Setting up SSL layer
SSL layer to Guzzoni established !
Sent HTTP headers
Sent content header !
Guzzoni connection closed !
Siri.old.inline.rb:147:in initialize': No such file or directory - input.sif (Errno::ENOENT) from Siri.old.inline.rb:147:inopen'
from Siri.old.inline.rb:147:in ssl_handshake_completed' from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:inrun_machine'
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
from Siri.old.inline.rb:199
zlib(finalizer): the stream was freed prematurely.

What can I do?

Update tools for iOS 7

Have you considered updating the tools for iOS 7? iOS 7 uses MPTCP, a new protocol, and maybe new certificates. All of which have broken SiriProxy.

SiriServer using Apache and Ruby

Is there a chance that this will ever be designed for apache support incase someone wanted to do something which is what I'm doing which is to make it accessible by the internet so if I'm on a trip, I can use siri on my none-iPhone 4S. I already have a server running with https enabled, that is why I am wondering.

This doesn't look like a Speex file

Hello,

i want to convert the .spx to .wav.
But the Command...

speexdec data.spx

says:

This doesn't look like a Speex file

Hmm
I startet the Server per "ruby siriServer.rb" and connect per iPhone.
But the data.spx is no .spx !?
What made i false?

Thank for Answers!

Cracking Siri in iOS 10

Siri seems to use only two protocols, TCP and TLSv1.2, in iOS 10. Is it still possible to crack Siri?

Problem with 'eventmachine' when running siriServer.rb

I use RVM, so I removed the

#!/usr/bin/env ruby

and replaced with

#!/Users/nybras/.rvm/rubies/ruby-1.9.2-head/bin/ruby

when I try to run it with sudo I get this, even I have the 'event machine' gem properly installed

sudo ruby siriServer.rb 
/Users/nybras/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': no such file to load -- eventmachine (LoadError)
from /Users/nybras/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from siriServer.rb:2:in `<main>'

and without sudo

ruby siriServer.rb 
/Users/nybras/.rvm/gems/ruby-1.9.2-head/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_tcp_server': no acceptor (RuntimeError)
from /Users/nybras/.rvm/gems/ruby-1.9.2-head/gems/eventmachine-0.12.10/lib/eventmachine.rb:572:in `start_server'
from siriServer.rb:73:in `block in <main>'
from /Users/nybras/.rvm/gems/ruby-1.9.2-head/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `call'
from /Users/nybras/.rvm/gems/ruby-1.9.2-head/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run_machine'
from /Users/nybras/.rvm/gems/ruby-1.9.2-head/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in `run'
from siriServer.rb:72:in `<main>'

I dont know what to do from now on, I was following this tutorial:
http://f3v3r.com/2011/12/29/how-to-get-iphone-4s-siri-authentication-keys/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.