• Stars
    star
    575
  • Rank 77,622 (Top 2 %)
  • Language
    Ruby
  • Created about 13 years ago
  • Updated about 13 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Files we used to reverse-engineer Siri

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Γ  !

More Repositories

1

ADTransitionController

UINavigationController with custom transitions
Objective-C
1,188
star
2

OverlayContainer

Non-intrusive iOS UI library to implement overlay based interfaces
Swift
1,149
star
3

ADLivelyTableView

Lively UITableView
Objective-C
743
star
4

ADClusterMapView

MKMapView with clustering
Objective-C
658
star
5

Vim

Port of the Vim text editor to the iOS
C
533
star
6

PokemonGo_Android_RE

Java
511
star
7

ADLivelyCollectionView

Drop-in subclass of UICollectionView that lets you add custom animations to any UICollectionView
Objective-C
432
star
8

HeaderListView

Android ListView with sticky headers
Java
313
star
9

AudioModem

Transfer data using microphone/speaker on iOS devices
Objective-C
196
star
10

Shutterbug

Remote image loader with caching for Android
Java
99
star
11

ADZipURLProtocol

Open static website or access data from a zip archive
C
52
star
12

CandyCrushSolver

This is an Android project that helps you solve the game Candy Crush.
Java
47
star
13

zizou

Elo ranking managed through the messaging software Slack
Ruby
13
star
14

D3Android

D3Android is a new library to make charts on Android
Java
12
star
15

bike-share-prediction

Bike-share usage prediction API
Ruby
10
star
16

clarke

Ruby
8
star
17

Apex

An awesome visualization of what's hot on Apple's App Store
JavaScript
4
star
18

clarke-messenger

Ruby
2
star
19

cyril

Bot pairing Slack users connected to the general channel
Ruby
2
star
20

regex_field

Regex field for Rails FormHelper
JavaScript
1
star
21

spec_tracker

Spec tracker helps tracking tests that validate specification use cases
Ruby
1
star
22

clarke-slack

Ruby
1
star
23

gradle-dependencies-demo

1
star
24

adfastlane-gem

Fastlane wrapper to allow usage of distant Gemfile. Applidium internal usage
Ruby
1
star