记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华

逆向智能咖啡机协议实现终端控制

2016-10-10 21:50

我喜欢咖啡,事实上,我每周都要喝一升。作为一名书呆子黑客,几天前我在亚马逊上面买了一台智能咖啡机。基本上每台智能咖啡机,你都可以使用移动设备(包括Android和iOS)上的app通过wifi对咖啡机进行控制。

这款咖啡机的app相当不错。通过app你可以设置咖啡量,咖啡浓度等操作。只你要按下一个按钮,接下来只需要慢慢等待一杯美味可口的咖啡。

自从在家工作后,我大部分时间是使用电脑键盘而不是智能手机。因此,我需要一台PC端的控制台程序,不过供应商好像还没有进行发布。所以,为了编写我的PC端控制程序,我开始逆向分析咖啡机的Android应用程序,学习咖啡机与app的通讯协议。

你猜结果怎么样?

我可以使用电脑对咖啡机进行控制

terminal

逆向分析通讯协议

对Android的逆行分析通常比对IOS容易,我决定对这款Android APP进行逆向分析。我下载了app程序并且学习了各种类和方法的知识。

使用JADX(with the –show-bad-code argument)对app进行反编译,并对反编译结果查看。使用vim打开CTAGS文件夹里面的代码。

vim

几个小时之后,在am.smarter.smarterandroid.models.a 类里面发现了一些感兴趣的东西,如下:

methods

我发现,每个“数据包”都发送到机器的2081端口,协议也非常简单:

  • 第一个字节:命令编号
  • 第二个字节为N:可选数据(根据指令代码)
  • 最后一个字节: 0x7e代表数据包结束

响应数据包可能不一致,不过大多数是这样的:

  • 第一字节:响应数据的大小
  • 第二个字节:状态(0=成功,否则错误代码)
  • 最后一个字节: 0x7e代表数据包结束

以下例子是是使咖啡机保温5分钟,COMMAND和RESPONSE的参数如下 :

  • COMMAND (命令): 0x3e 0x05 0x7e
  • RESPONSE (响应): 0x03 0x00 0x7e

我写了一个迷你PC端控制程序进行测试,以下是测试结果:

代码下载地址:https://github.com/evilsocket/coffee

首先需要指定咖啡机的ip地址,打开下载好的程序,执行~/.smartercoffee  即可。

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 show this help message and exit
 -A ADDRESS, --address=ADDRESS
 IP address of the Smarter coffee machine.
 -M, --make Make coffee.
 -W, --warm Warm coffee.
 -C CUPS, --cups=CUPS Set number of cups.
 -S STRENGTH, --strength=STRENGTH
 Set coffee strength ( 0-2 ).
 -G, --grind Use grind.
 -F, --filter Use filter.
 -K TIME, --keep-warm=TIME
 Keep the coffee warm for TIME minutes.

安全考虑

虽然移动应用程序需要注册一个帐号,但访问2081端口完全不需要验证。所处内网环境对的任何人都可以访问它,甚至是刷入新固件也不需要验证。

firmware

 

*原文:evilsocket  Mottoin翻译发布

未经允许不得转载: » 逆向智能咖啡机协议实现终端控制

知识来源: www.mottoin.com/90168.html

阅读:97828 | 评论:0 | 标签:终端安全 智能咖啡机 物联网安全 远控 逆向

想收藏或者和大家分享这篇好文章→复制链接地址

“逆向智能咖啡机协议实现终端控制”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

关注公众号hackdig,学习最新黑客技术

推广

工具

标签云