iOS Siri 协议

Siri协议

Siri采用https(默认端口443)协议与服务器进行通信,Siri官方服务器地址是https://guzzoni.apple.com

http请求头

ACE /ace HTTP/1.0
Host: guzzoni.apple.com
User-Agent: Assistant(iPhone/iPhone4,1; iPhone OS/5.0/9A334) Ace/1.0
Content-Length: 2000000000
X-Ace-Host: 4620a9aa-88f4-4ac1-a49d-e2012910921     
iPhone/iPhone4,1表示4s,iPhone/iPhone3,1表示4。

截获Siri请求数据包

利用nodejs建立了一个Siri 服务器,可以获取到iphone上Siri发送过来的数据,把所有数据记录到文件后,用Winhex打开

 

 

0x0D 0x0A 0x0D 0x0A 是https请求头结束 请求头是类似http协议,但采用的是ACE方法而不是常用的GET/POST

0xAA 0xCC 0xEE 0x02 这4个字节是数据开始,后面紧跟着的是zlib压缩的数据(Deflate/Inflate)

通过Inflate解压后,得出以下的二进制数据

数据包头是5个字节
03 00 00 00 01 => 03是客户端的ping包,后面的1是包序列,如果客户端发送了大约4-5个包后没收到服务端返回的数据包(04开头),则Siri提示Sorry了。 
02 00 00 02 43 => 02表示二进制的plist数据,02 43转换成10进制后是579,表示后面接着的长度为579字节的数据是一个完整的二进制plist。我们把这段数据复制出来保存到一个plist文件,就可以用plist文件编辑器查看到里面的内容。



class => 包类型 LoadAssistant一般为tls连接后第一个包,向服务器加载Siri Assistant
aceId => 这个是客户端生成的一个标识,服务端返回的数据包以refId来匹配
iphone4上采用Spire直连guzzoni.apple.com,就要取sessionValidationData

如果验证通过,服务器就会返回AssistantLoaded。Siri往服务器发送语音,服务器识别后就返回识别后的文本

 

用Nodejs写了一个取4s siri key的服务器程序,详细教程请到http://www.sirinode.com/ 下载

 

转载于:https://www.cnblogs.com/songbosi/archive/2012/02/21/2362340.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值