前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩爆EDUP智能插座Part1

玩爆EDUP智能插座Part1

作者头像
FB客服
发布2018-02-06 12:09:44
8880
发布2018-02-06 12:09:44
举报
文章被收录于专栏:FreeBufFreeBuf

智能插座实现了远程开启/关闭连入的设备,的确是一款懒人神器!其实现原理就是通过WiFi模块实现对继电器的开启或者关闭。EDUP智能插座通过用户提供的凭证连接家庭无线网络访问互联网。一切都设置完成之后,智能插座打开TCP/IP连接到位于中国的服务器(219.147.29.235:221)。

物理层

首先,我们准备了一些小螺丝刀和一把瑞士军刀,接着我们小心的打开智能插座,拆开图如下:

通过谷歌搜索我们了解到设备的主件:一些被动组件,一个5Mhz的晶体振荡器,一块没有打上印记的芯片(个人猜测为PIC16C770),一个2K数据存储器、继电器、WiFi板......

虽然我个人对于集成电路逆向工程的相关知识不够了解,但是我们所做的工作并非白做。至少我们对于这款智能插座设备更加了解,每一个细节都有助于我们全面的了解这个系统。

网络层

我们利用hostapd程序进行一些测试。为了阻止设备进入内部网络,我们添加了一些防火墙规则,并且在设备内存中设置访问凭证。

启动运行之后,我们可以通过EDUP提供的安卓App切换继电器,通过Nmap我们看到有两个开放的端口:TCP/23 (telnet) 和 TCP/80 (http)。

我们尝试连接telnet,这里有一个简单提示输入密码。我们谷歌搜索“AT + command Shell”,我们发现WiFi模块实际上是一块低成本的WIFI UART,编号为 TLG10UA03。然后我们通过默认的密码成功访问AT命令终端,并且我们还发现了一份技术文档,包括了我们在后面会有使用的AT命令清单。链接:http://pan.baidu.com/s/1eQ6ezSI 密码:rbqn

如果你对这个点足够好奇,你可以使用一些AT命令来熟悉这个命令终端。

这里暴露了大量智能插座信息:

传输层

下面,我们将对设备如何进行工作以及其组成元素进行讨论。我们可以捕获网络访问点接口流量,并分析服务器和设备之间的数据传递。

协议很简单,大致如下:

1.协议开始

一旦TCP信息交换完成,服务器会Push一个携带15字节有效载荷的TCP段并激活URG flags。

用户确认第一段之后,发送另外两个分别为28字节和22字节的数据包,同时PSH和URG也被激活。

此时此刻,已经成功建立连接,并且用户通过发送所谓的Keep-Alive包进行响应。

2.保持连接

正如前面所述,客户发送这类段来提醒服务器设备依旧存活着。如果我们断开连接,或者设备休息的时候。每隔30秒就会发送一个Keep Alive包,且每个包中载荷都相同,这样服务器就承认其状态。如果没有,客户端就会被假定是失去联系,并尝试重新开始一个会话。

3.命令:On,Off

建立会话后,服务端确认客户端保持连接,然后服务端就可以发送命令给客户端,执行中继器的激活或者停止。

经过把玩一段时间,我了解到:

1、前两个字节(0xFF, 0xFF)可能为某种开始标记或者头,每个数据段都是由这两个字节作为开头。

2、接下来的这个字节(0x00)表明了协议版本。

3、第四个字节(0x15)表明了有效载荷的长度。如图, 0x15 = 21,也就是总字节数。

4、对于后面6个字节的含义我不太清楚,我猜测可能是编码的时间戳,或者是一个校验和。

5、接下来的两个字节总是 0x09, 0x00。同样我也没搞明白是什么含义。

6、再后面的6个字节是客户端的MAC地址。

7、接着后面两个字节固定为0x02, 0x80。

8、最后一个自己似乎是命令本身:0x80代表ON命令,0x00代表Off命令。

下期预告

接下来,我们将看到模拟服务端,控制设备。敬请期待!

*参考来源n0wblog,译者/鸢尾 转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档