欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

看我如何利用终端来让智能咖啡机制作出美味的咖啡

来源:本站整理 作者:佚名 时间:2016-10-11 TAG: 我要投稿


前言
我个人非常喜欢喝咖啡,说实话,我估计我每周都要喝好掉几升的咖啡…我不仅是一名黑客,而且我还是一个名副其实的极客。于是乎,就在几天之前,爱喝咖啡的我果断在亚马逊商城买了一台智能咖啡机,也算是赶了一把智能家居的热潮。
这是由智能设备制造商Smarter所推出的一款带有Wi-Fi功能的智能咖啡机,当这台咖啡机连上了你家的Wi-Fi之后,你就可以用手机客户端来控制它了。别担心,Smarter 很贴心地为Android用户和苹果用户提供了相应的客户端。你可以设想这样一种场景:当你辛苦工作了一天,一回到家就有杯热腾腾的咖啡在那里等着你了,这是一种什么样的体验?Smarter智能咖啡机就可以做到这一点。如果你不了解这款智能咖啡机的话,可以访问其官网以了解详细的信息[传送门]。
安装了相应的app之后你就会发现,这款智能咖啡机所配备的App设计得非常棒。在App的帮助下,你可以直接设置咖啡的杯数和浓度,然后按下手机中的按钮,接下来你就可以摊在沙发上等着热腾腾的咖啡“出炉”了。

因为通常情况下我都是在家工作的,所以我使用电脑键盘的时间多过我使用智能手机的时间。因此,我就感觉对于手机App而言,命令行客户端貌似更加适合我一些。但是现实和理想总是有差距的,厂商当然不会提供这样的工具给我们。所以,我就打算对咖啡机的Android端应用程序进行逆向分析,然后深入了解一下它所使用的网络通信协议,并为实现我自己的客户端做好准备工作。
你猜怎么着?没错!在经过了一番折腾之后,我终于可以用终端来控制我家的智能咖啡机了。

对通信协议进行逆向分析
相比对iOS应用进行逆向分析,Android应用的逆向分析过程要相对简单一些,所以我才选择从咖啡机的Android端应用入手[App点我获取]。下载好apk文件之后,我要先对文件进行反汇编,然后才可以开始研究源代码中的各个类和方法。
于是我打开了JADX(使用参数--show-bad-code),然后在CTAGS(一款方便代码阅读的工具)的帮助下开始对输出的源代码进行分析。几个小时过后,我发现了一个非常有趣的类(am.smarter.smarterandroid.models.a),在这个类中有几个方法引起了我的注意,具体如下图所示:

这些数据全部都会被发送至智能咖啡机的TCP端口2081,而且咖啡机所采用的网络通信协议也十分简单。
第一个字节:命令数;
第二个字节至N:可选数据,具体将取决于命令代码;
最后一个字节:永远为0x7e,它代表的是数据的结尾;
不同的命令会使响应信息发生一些变化,但是对于大多数控制命令而言,响应信息的形式基本如下:
第一个字节:响应信息的大小;
第二个字节:状态码(0=成功,其他即为错误代码);
最后一个字节:永远为0x7e;
我在下方给大家提供了一个例子,这是一个控制命令和其对应的响应信息。这个控制命令可以让咖啡保温五分钟,具体如下所示:
命令:0x3e 0x05 0x7e
响应:0x03 0x00 0x7e
于是,为了编写出我的终端控制程序并对其进行功能测试,我已经将咖啡机所有的控制命令全部映射出来了…为了更好地给大家展示我的努力成果,我专门录制了一个视频。我不得不说,这玩意儿简直棒极了!
演示视频:
 
如果你感兴趣的话,你也可以自行动手尝试一下,毕竟实践才能出真知嘛!但是请注意,第一次运行时你需要指定设备的IP地址,你的配置数据将会保存在~/.smartercoffee文件中,此后你就无需再进行配置了。[点我获取工具源码]
配置IP地址的命令样例如下所示:

coffee make -A 192.168.1.50
一些简单的控制命令
制作一杯咖啡:

coffee make
制作两杯咖啡,并且使用过滤器过滤掉研磨机中的咖啡豆渣:

coffee make –filter
咖啡保温十分钟:

coffee warm --keep-warm=10
完整使用手册:
☕ ☕ ☕  SmarterCoffee Client ☕ ☕ ☕
by Simone 'evilsocket' Margaritelli
Usage: coffee [options] (make|warm)
Options:
  -h, --help                           显示帮助信息
  -A ADDRESS, --address=ADDRESS      设置Smarter智能咖啡机的IP地址
  -M, --make                          制作咖啡
  -W, --warm                         咖啡保温
  -C CUPS, --cups=CUPS                设置咖啡杯数

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载