看着我怎样反向智能手环操纵无人机

黑客信息网

一年前,我买了一个智能手环,型号规格为SONY SmartBand SWR10。如同绝大多数智能手环一样,它一件事没有什么用一直放到抽屉柜里。

情况

突然有一天我有了个非常好的设计灵感——盆友邀约我添加她们的“NASA外太空”APP网络黑客马拉松比赛团队,可是我挑选了“不必撞我的无人机”这一课题研究,它包含无人机操纵和航行信息内容方位的解决方法,因此我打算我用的智能手表来操纵无人机。

当网络黑客马拉松比赛逐渐时,我要去找寻我的智能手表有关的开发设计API和开发环境,我很诧异它竟然沒有一切相关资料。社区论坛上也是有客户说SONY只出示了一些闭源的SDK给他的程序猿,可是我的网络黑客马拉松比赛只容许开源系统的解决方法。实际上我觉得建立自己的插口并不艰难。

构思

因此我运行了我的智能手表运用,随后开启“手机蓝牙HCI监视日志”。这一作用能够网络嗅探全部的总流量并将其导到SD卡中。

我开启日志:

随后用WireShark开启。

这好像是在运作手机蓝牙节能型协议书,而且比 GATT协议书更独特,这是一个双重协议书。手机上有一个“GATT服务项目”,外部设备会接受“GATT机器码”而它包括全部二进制数据。

我选择了第一个UUID (00000208–37cb-11e3–8682–0002a5d5c51b) 随后在谷歌搜索引擎。希望检索到一些传统式的规范GATT服务项目,但我却发觉了一些有趣的东西

一瞬间我认为我能完成了——我发现他人对这一协议书的反向。另外也确认了我是对的,这一新项目包括了联接,挥手,电池状态载入,联接维持的原理完成。可是,加速计数据很怪异。我将加速计上的数据初始化到MPAndroidChart,即时的数据图表表明以下:

剖析

尽管輸出与歪斜高宽比有关,可是值是详细的。在阅读文章完成编码以后,32位系统的整数金额值仿佛包括3个10位的值。它是有效的,由于绝大多数的加速计有10位的精密度(绝大多数ADC)。数据证实了这一点,看前两一部分:

可是分析这3个10位的数据也很怪异,每好多个歪斜的值都是会在511到-512中间转变,沒有偏位可以更改它(沒有整数金额外溢造成)。因此,我认为SONY是否用了哪些传统式的二进制装包方式,或是她们有编号优化算法和压缩算法。

我试着用Protobuf,MsgPack,Thrift 来分析,可是都不起作用。这时候我仅有一天而言加速计跟我的无线网络四轴飞行器关系到一起。但就在我失落时,在查询她们的APP反汇编結果的三十分钟后,我发现下边这种物品:

上半部分的[0,512]是反的,我眼中的自己得到 这种最高值的缘故。我就用简易的异或对其开展调节。我将她们调节到[-1,1范畴],如今要做的便是把加速计和无线控制器创建联接(你能在GitHub上寻找完成)。

最后我完成了这一新项目,而且获得了荣誉奖。

标签:

发表评论 (已有条评论)

  • 评论列表