jimmykane / The-Three-Little-Pigs-Siri-Proxy

A intelligent Siri Proxy with multiple key storage and key throttling.
137 stars 49 forks source link

any1 tried OS X 10.8 Dictation? #315

Open ssumer opened 12 years ago

ssumer commented 12 years ago

Just installed OS X 10.8 GM, and I noticed that the dictation on OS X 10.8 uses same domain as iOS5 Siri (guzzoni.apple.com).

It means that OS X 10.8 could create the validation data just like iPad 3.

I have successfully managed to connect from OS X 10.8 dictation to Siri proxy by modifying host file, and installing cert. Unfortunaly, the connection via proxy has been rejected or wouldn't respond properly. I just wanted to use Asiri plugin to support Korean text dictation using Google API, just like in iPad3

Here is the log

[Info - SiriProxy] Created a connection! [Info - Plugin Manager] Plugins loaded: [#<SiriProxy::Plugin::Asiri:0x00000009970438 @language="ko-KR", @manager=#<SiriProxy::PluginManager:0x00000009970b40 @plugins=[...]>>] [Info - SiriProxy] Uptime [398450] Active connections [3] Max connections [250] [Info - SiriProxy] Created a connection! [Info - Siriproxy] Curent connections [3] [Info - SiriProxy] Unknow Device Connected from IP xxxx [Info - SiriProxy] Changed header to iphone4s [Key - SiriProxy] Keys available for Public [5] [Keys - SiriProxy] Key [248] Loaded from Database for Validation Data [Key - SiriProxy] Key with id[248] increased it's keyload from [0] to [10] [Info - SiriProxy] using saved sessionvalidationData [Info - SiriProxy] Device has assistantId: d3f8e719-34c4-48bb-a246-d18330a62180 [Info - SiriProxy] Device has speechID: feb63357-abdb-4cd7-9282-1dd6c7bbe068 [Info - iPhone] Received Object: LoadAssistant (group: com.apple.ace.system) [Key - iPhone] Recieved Object Using: Key id [248] and Instance Keyload[10]
[Info - Forwarding object to Guzzoni] LoadAssistant [Info - iPhone] Received Object: StartSpeechDictation (group: com.apple.ace.speech) [Key - iPhone] Recieved Object Using: Key id [248] and Instance Keyload[10]
[Info - Forwarding object to Guzzoni] StartSpeechDictation [Info - SiriProxy] Uptime [398455] Active connections [2] Max connections [250]

Ponyboy47 commented 12 years ago

Run your server at a higher log level so we can see whats wrong. There arent any errors that i see, so im not sure why it is failing. Also, you should be able to add your mac to the list of devices so that it doesnt register as an unknown device

ssumer commented 12 years ago

Here is the high level of log, I just deleted meaningless 'unzipped data'

And, the proxy seems occasionally crashed

[Info - SiriProxy] Uptime [70] Active connections [4] Max connections [400] Create server for iPhone connection [Info - SiriProxy] Created a connection! start conn #<SiriProxy::Connection::Iphone:0x00000014d0a4d0 @signature=24, @processed_headers=false, @output_buffer="", @input_buffer="", @unzipped_input="", @unzipped_output="", @unzip_stream=#, @zip_stream=#Zlib::Deflate:0x00000014d0a340, @consumed_ace=false, @is_4S=false, @is_iPad3=false, @sessionValidationData=nil, @speechId=nil, @assistantId=nil, @speechId_avail=false, @assistantId_avail=false, @client=nil, @createassistant=false, @loadedassistant=nil, @loadedspeechid=nil, @devicetype=nil, @activation_token_recieved=false, @assistant_found=false, @connectionfromguzzoni=false, @commandFailed=false, @finishspeech=false, @GetSessionCertificateResponse=false, @validationData_avail=true, @name="iPhone", @ssled=false> [Info - Plugin Manager] Plugins loaded: [#<SiriProxy::Plugin::Asiri:0x00000014d08900 @language="ko-KR", @manager=#<SiriProxy::PluginManager:0x00000014d09008 @plugins=[...]>>] [Info - SiriProxy] Created a connection! [Header - iPhone] ACE /ace HTTP/1.0 [Debug - iPhone] Forwarding 19 bytes of data to Guzzoni [Header - iPhone] Host: guzzoni.apple.com [Debug - iPhone] Forwarding 25 bytes of data to Guzzoni [Header - iPhone] User-Agent: Assistant(MacBook Pro/MacBookPro6,1; Mac OS X/10.8/12A269) Ace/1.2 [Info - Siriproxy] Curent connections [4] [Info - SiriProxy] Unknow Device Connected from IP xxx [Info - SiriProxy] Original Header: User-Agent: Assistant(MacBook Pro/MacBookPro6,1; Mac OS X/10.8/12A269) Ace/1.2 [Info - SiriProxy] Changed header to iphone4s [Info - SiriProxy] Final Header: User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0.1/9A405) Ace/1.0 [Debug - iPhone] Forwarding 72 bytes of data to Guzzoni [Header - iPhone] Content-Length: 2000000000 [Debug - iPhone] Forwarding 28 bytes of data to Guzzoni [Header - iPhone] X-Ace-Host: 7bfeeeb3-925d-4bd1-a8db-97035cb50328 [Debug - iPhone] Forwarding 50 bytes of data to Guzzoni [Header - iPhone] [Debug - iPhone] Found end of headers [Debug - iPhone] Forwarding 2 bytes of data to Guzzoni ========UNZIPPED DATA (from iPhone =========

xxx

[Key - SiriProxy] Keys available for Public [8] [Keys - SiriProxy] Key [251] Loaded from Database for Validation Data [Keys - SiriProxy] Key [251] Loaded from Database for Validation Data For Object with aceid [E08182C5-6CBE-44DC-81ED-238AE422A997] and class LoadAssistant [Key - SiriProxy] Key with id[251] increased it's keyload from [0] to [10] [Info - SiriProxy] using saved sessionvalidationData [Info - SiriProxy] Device has assistantId: d3f8e719-34c4-48bb-a246-d18330a62180 [Info - SiriProxy] Device has speechID: feb63357-abdb-4cd7-9282-1dd6c7bbe068 [Info - iPhone] Received Object: LoadAssistant (group: com.apple.ace.system, ref_id: ,ace_id: E08182C5-6CBE-44DC-81ED-238AE422A997) [Key - iPhone] Recieved Object Using: Key id [251] and Instance Keyload[10]
{"group"=>"com.apple.ace.system", "properties"=> {"language"=>"en-US", "activationToken"=>"\x03\n\xEA\xE5S\xC8\xA1\xECNKv=z-{K\xFE\x06l1", "sessionValidationData"=> "\x02\xEB\xD4\x8E\x9F\x86\xF5\x81\x9B\xD5M\xF6\xF5\x83\xAB\x11u\xC6Q,~\x02k\x17q\x85+\xEDA\xB1NI]\x00\x00\x00\xE0\x03\x00\x00\x00I\x00\x00\x00\x80\xC9{{\xC9\x1F:H \xF8\x94\x83s\xAB\x9FT\xDC\xA6\xC5\xFA\x8E)\xDEb,L\xE1\xC5\xF8Q\x9A\xF3\x97\xBB4QX\xF0e\xF3\v\x03\x97$)\xBF\xBE\x8F\xA11)\xA9\xA2g\xB6v\xD5\xEF17J\xE3\x92#\xF0GH'\xC0\xF38.~\x9D\xADgL\xE39U\xA0X 0(\xB4d\x15\xE2C(\xD2\x96O\xC1y\x95F\x95C\e\xFB\xCAt\xE3$\x06H\xE1\x83\xD2t\xBB\x8E\x8A\x9D\xDC8.\x9BOS\xE9\xCC\xFFR\xE1\xD0\x00\x00\x00\x00\x00\x00\x00O\x01\x8B)a\xFFM\xB7lx\x13\xEF\xE3\xFD\x9F0\xC7\x01\xD2\x1E1L\x00\x00\x006\x04\a&zj\xAE\x9B\xD4\xF13,.\xB0\xD8\xB5a\xBDO\xFB\x91`\x18\x80\xD36\xF6\x9B\xDF\xF0^\xB5\x87A\x8F\xB2\xE0\xCC\xA7\xD8\x1E\xDB\xE7\x98\xEA\xAA\xBD\x94\x00\xED\x8F\xC9\xC6", "speechId"=>"feb63357-abdb-4cd7-9282-1dd6c7bbe068", "assistantId"=>"d3f8e719-34c4-48bb-a246-d18330a62180"}, "class"=>"LoadAssistant", "aceId"=>"E08182C5-6CBE-44DC-81ED-238AE422A997"} [Info - Forwarding object to Guzzoni] LoadAssistant [Debug - iPhone] Forwarding 637 bytes of data to Guzzoni [Info - iPhone] Received Object: StartSpeechDictation (group: com.apple.ace.speech, ref_id: ,ace_id: 740B9E09-CB18-47BF-9F45-BC4CB902CD41) [Key - iPhone] Recieved Object Using: Key id [251] and Instance Keyload[10]
{"group"=>"com.apple.ace.speech", "properties"=> {"fieldId"=>"AXTextArea 0", "keyboardType"=>"Default", "activationToken"=>"\x03\n\xEA\xE5S\xC8\xA1\xECNKv=z-{K\xFE\x06l1", "keyboardReturnKey"=>"Default", "applicationName"=>"com.apple.TextEdit", "language"=>"en-US", "region"=>"en_US", "audioSource"=>"BuiltInMic", "interactionId"=>"450267A3-6797-4F11-8C81-4BFD99267AD2", "censorSpeech"=>false, "codec"=>"Speex_WB_Quality8", "applicationVersion"=>"301"}, "class"=>"StartSpeechDictation", "aceId"=>"740B9E09-CB18-47BF-9F45-BC4CB902CD41"} [Info - Forwarding object to Guzzoni] StartSpeechDictation [Debug - iPhone] Forwarding 368 bytes of data to Guzzoni ========UNZIPPED DATA (from iPhone =========

xxxx

[Info - iPhone] Received Object: SpeechPacket (group: com.apple.ace.speech, ref_id: 740B9E09-CB18-47BF-9F45-BC4CB902CD41,ace_id: D322ED60-220F-4C4C-914C-7B2271D22F60) [Key - iPhone] Recieved Object Using: Key id [251] and Instance Keyload[10]
{"group"=>"com.apple.ace.speech", "properties"=> {"packets"=> ["5\xDE\xED\x17R[K\x8D\xD9GJ\x7FO\x0F#\x87\xFE\xC6\xBC\x04|t\fR\xFE\x95\xAC1\v\xFBH\xF8\x8A\xCC\xD6\xB7\x8C\xF7hF.\x81i{C\xF2\xCE\xD9s\xE2Y\n\xBDO\xDB\xAEqS\xDD5\xCBt\x193z\b\xBES]\xEE\v\xA7\v\xE1\xE2\x04\xDA\xE5\x17\xEE\xDDb\xA5\v\xF93\xD3\xCFj\t\x14\xBBp\xF4\xDA\x9A\xFD$~}a\x88Q\x9D\xED\x10L\x15@b\xFD\xFF\r\xBD\xF6'\x8D+\x01\xD0A\xFE\xCC\x17\x94\x015@\xD2\x9B\xC3E\x9F\xFB[<\xCF7\x81Q\n\xB1\xC9\x0E\xD1R\xF2\xD9\xCC\xC2d\xC4\xB8\xD9\xA27\xD6O\x828N\xFF\xDF\xCD\xA8.nS\xC0\x94\xACRk\xD6\xD4\x84\xEF\x15E5\xCA\xDF;Cc\x80\xB9O\x83c\x19\xF0\x88\v\xC1! \xE3\x9A\xDE\x9F\v\x89\xCA\xCF\x16s]\xEE\xCB\x9B\nG\xF2\xFB\x0E\xDB\xA6\#{\xA6\xFC\xE5\xBE\xFD~\xC9^\f\xFE$U\xE4\xDF\v!\x93E\xB5\x1D\xE5\x7F\xB6\xED\x19\x99\x93\xBDcU\xA6\xFF\xB9\x1E\x1E\x83\x11\x9B-\xA0b\x90;N\x94\x06+*\xC8\x9D!\x1Ds\x99]\xAD5\xC4\xF0\xBD\x90\xAEF\xF7\x8F\xF8\x88\xED\xF2\xB7X\xFE{c\xB7\x0E\"\xB3\x82M\x82\xC4\x8D\xD9\x80\xB6\xB3I=\xC4\xC1p\xE3\xEB@\\r\xCF8\xFE\xBFK\xDFb\xBA\xAF\x9E9x\e\xCD\xA1\xE23B\xBA2\xC8\x04Z\x1A\xA3\x0E%+\xA3]\xEE\xF3\xAF\v\xC3\xF7l\x1A&\"Yn\xED\xD8\x93\xF8\xBB\xAE\x99W]\xFD\xA1\xD9\xB7\r\x8F\xEC$\x11\x85\x9D\x84\xA1\xA2\xAD\xB3\x82\xDBj02\x13b\xB4?\"z\tq.\xD2\x92\xEA \xB8\xC0\x1A\x05\xBC\x90\xA0\x03\xD4\xE7w\x04s5\xDE\xEF=0\xCD\xF3\xAB\xE2)\xD3zQ1%\x87\xBF`\xEF\xFD\xD9\xEB\xE3\xD0\x18\xBD\xB4]\x82\xDF\xB8,\vt\x7FV\xD3O\xD5\x94\xCC#\xE5\xD3\xBB\x90q\x89\xA0\x12\x93X/\x10\xAF\x80\x9E\x94\xDA\x9ED2CO\xC9\xB1\xC3\a3]\x0E\x13\xC7\ac\xF1\xB23\xE5\x81s{\xB2\x15A\xBB#\xA4\xCBQ2\x8F\x94*\x9D\xFB\x04\xC6\xC5\xD1\xA5\xCC\xB6\xF0\x19\xEE,\x1A5\x9D]\x85\x93\xB9?.(\x99&\x80c\bN\xCFN\xDA-\xA7)\xEF\xE3b\xD2\x83;\xF075\xD8\x9A\xBApV\xCFY\xC8D\xAE\xB3Q\x82\xACo\xF5\xAE\xA5(z\xE4\x12\xE9\xAB\xCD\xDDC/\"\xBD\x89\x9Dea\x9E\xEB\x06Tu\x1A>c\xB3\xFB\xF9\x82\xFA\xF8N\x1C\xAC\x117\xA4\x8E\x8B\x90\xB5!\xA7c\x13\x13M\x8Ct;Cl]du\v\xB7s\xB2a\x05\xA4\xE5\x8Ba\xBA\xB7\xB8\x16\xB2}\xC0Z\xAF\x95G\xDCI\x11\xBF@!\xF3\t\x90\x8Dn\xAA\xC8\x7F\xE9\x90\x83l\xBD\xF1\t\xB0\xA59\xDF\xA2:Z4\xE3-!/\xE7\xFBe\xD2\xE5\xCE2\xC4\x19"], "packetNumber"=>0}, "class"=>"SpeechPacket", "refId"=>"740B9E09-CB18-47BF-9F45-BC4CB902CD41", "aceId"=>"D322ED60-220F-4C4C-914C-7B2271D22F60"} /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bundler/gems/SiriProxy-Asiri-a062dc1c825d/lib/siriproxy-asiri/siriproxy-asiri.rb:28:in exists?': can't convert nil into String (TypeError) from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bundler/gems/SiriProxy-Asiri-a062dc1c825d/lib/siriproxy-asiri/siriproxy-asiri.rb:28:inrecord_binary' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bundler/gems/SiriProxy-Asiri-a062dc1c825d/lib/siriproxy-asiri/siriproxy-asiri.rb:19:in filter' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bundler/gems/SiriProxy-Asiri-a062dc1c825d/lib/siriproxy-asiri.rb:22:inblock in class:Asiri' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/plugin.rb:33:in instance_exec' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/plugin.rb:33:inprocess_filters' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/plugin_manager.rb:41:in block in process_filters' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/plugin_manager.rb:39:ineach' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/plugin_manager.rb:39:in process_filters' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/connection/iphone.rb:33:inreceived_object' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/connection.rb:1133:in prep_received_object' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/connection.rb:657:inprocess_compressed_data' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/connection.rb:622:in receive_binary_data' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/em/protocols/linetext2.rb:94:inreceive_data' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:in run_machine' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/eventmachine-0.12.10/lib/eventmachine.rb:256:inrun' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy.rb:101:in initialize' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/command_line.rb:103:innew' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/command_line.rb:103:in start_server' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/command_line.rb:92:inrun_server' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/lib/siriproxy/command_line.rb:42:in initialize' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/bin/siriproxy:6:innew' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/gems/siriproxy-0.9.13/bin/siriproxy:6:in <top (required)>' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bin/siriproxy:19:inload' from /usr/local/rvm/gems/ruby-1.9.3-p125@SiriProxy/bin/siriproxy:19:in `

' zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely. zlib(finalizer): the stream was freed prematurely.

chickentw commented 12 years ago

Probably it the plugins problem

hackersbox commented 12 years ago

I tried this on my Macbook pro with the latest Mountain Lion but the connection is being dropped by the server. I think I installed the certificate correctly though.

Any advice?

@Ponyboy47

Ponyboy47 commented 12 years ago

@ssumer It appears that your crash is stemming from the Asiri plugin. I've looked at the code for Asiri where it says the crash emminated but I can't see anything wrong with the Asiri code and am not sure why it caused the crash. Are you still having this issue? I'd talk to the developer of Asiri about your crash..

@hackersbox I would imagine that the newest release of Mountain Lion would be using the new apple server at kryten which could account for your connection being dropped. Use the experimental branch..it should work, and also make sure your proxy is set up to allow unknown clients. I don't know all of the different Mac user agents, but I could start adding them to the siriproxy code so they get registered as clients like the iPad3 and iPhone 4S..

hackersbox commented 12 years ago

@Ponyboy47 I logged the DNS request from the Mac and it still uses guzzoni.apple.com, The server drops the connection just like when it received a request from a device with no certificate installed. But I think I installed the cert correctly on the Mac. Just open and add it with Keychain right?

hackersbox commented 12 years ago

and btw, i used both the main and experimental branches when i did the test.