zoukankan      html  css  js  c++  java
  • IoT设备程序开发及编译环境搭建初体验

    引言

    Mirai事件一经曝出,立即引领了一轮研究IoT设备的热潮。目前,对Mirai的报告大多只是在对其功能实现上的介绍,却很少提及如何实现IoT设备程序开发的测试环境。本文在对Mirai的源码研究的基础上,实现了一个比较简单的IoT设备开发编译环境。该工具能自动配置交叉编译环境,使其可以满足简单的物联网开发测试。

    编译环境搭建

    采用脚本的方式,在git中为config.sh,可自动安装交叉编译工具安装包,并将可执行目录配置到环境变量中。具体步骤如下,采用wget到固定的网站上下载交叉编译安装包(需要其他交叉编译工具包,可自行添加),解压即可用,不用对安装包进行编译安装,并将安装包可执行文件目录写入/etc/profile的末尾,最后使用source /etc/profile使其生效,如未生效,手动执行命令source /etc/profile即可。

                           config.sh.png

    编译脚本

    编译脚本在git上为build.sh,可根据情况对bot文件进行编译。编译分为release模式和debug模式,release模式对bot文件进行交叉编译,使其适用于不同的嵌入式架构;debug模式直接对bot文件进行编译,并在debug程序运行的过程中会打印出调试信息。

                    build.sh.png

    测试环境

    小米路由器3一台,选择它,是因为它可以方便地安装SSH插件,具体的方法,可参照:

    https://jingyan.baidu.com/article/624e7459ae65e834e8ba5afd.html

                                                       router3.png

    登陆上小米路由器,如图所示:

                            ssh.png

    测试方法

    下载该项目程序,git地址为:https://github.com/scu-igroup/IoT_bot

    git上主要存放的是bot客户端程序,其中config.sh为交叉编译环境自动配置脚本,build.sh为程序编译脚本,需要先运行config.sh搭好交叉编译环境,才能对bot程序进行编译。

    git.png

    客户端程序编译及运行:

    本项目的文件相当于实现了一个简单的是客户端,先在bot目录下的include.h中更改要连接的IP和port。运行build.sh 脚本编译程序,如:./build.sh debug

    即可在debug目录下编译好所要的程序。由于小米路由器的CPU采用的是MIPS架构,系统为Linux,在测试过程中,只有用mipsel-gcc编译的程序才能正常运行,下面会做详细说明。因此,不同CPU架构的IoT设备,需要用对应的交叉编译工具,才能编译出能正常运行的可执行程序。下图中,即为编译出的适应于不同架构的可执行程序。

    hx.png

    对于如何判断某个IoT设备适用哪种可执行程序,通过看路由器的cpuinfo,就可以知道cpu model的架构,为MIPS;通过查看路由器的系统版本,为linux2.6.36,即可查知该系统支持的库函数,在程序开发的时候,查明所用的库函数该系统是否支持非常重要,以免引起程序意外退出。如下图所示为小米路由器的cpuinfo和系统版本信息。

    cpuinfo.png

    version.png       

    编译好程序后,在debug目录下找到./mirai.mipsel程序,用scp命令将该程序投放到路由器的tmp目录下(小米路由器支持scp命令,其他的IoT可能不支持,需要探测其支持的命令工具),运行该程序,如下图:

    agent.png

    遇到的问题:

    在投放可执行程序过程中,需要注意CPU是大端存储还是小端存储的问题,在实验过程,采用mips-gcc编译的程序,直接运行,会报如下错误:

    屏幕快照 2017-03-22 15.11.08.png

    排查后才知道,mips-gcc编译出的为大端存储的可执行程序;mipsel-gcc编译出的为小端存储的可执行程序。小米路由器为小端存储,故用mipsel-gcc编译的程序才能正常执行。

    服务端程序:

    服务端比较简单,采用的是现成的工具,找一台Linux主机(虚拟机即可),安装nc工具(精悍的小工具),在centos系统下可直接安装: yum install nc

    在客户端程序已运行的情况下,运行:nc –l 9999  //监听9999端口

    只要客户端运行该IP下的9999端口,即可建立通信。

    服务端程序运行图为:

    server.png

    总结

    该测试程序是在Mirai源码的基础上做的裁剪,已删除攻击模块,目的在于做一个针对IoT设备的程序开发测试。总的来说,Mirai到目前为止都还是一款先进的物联网程序,值得大家深入研究,并做相应的测试。最后,不足之处,大家多多提出来一起讨论。

  • 相关阅读:
    【转】git教程
    Ubuntu下编译运行Kamailio
    windows下编译FreeSwitch
    自己常用的wireshark过滤条件
    CSRF 漏洞原理详解及防御方法
    Sql 注入详解:宽字节注入+二次注入
    Kali下Ettercap 使用教程+DNS欺骗攻击
    Sql注入的分类:数字型+字符型
    Windows Server 2012 R2 配置FTP服务器
    Kali Linux 初始化配置:Apache2 /SSH /FTP
  • 原文地址:https://www.cnblogs.com/h2zZhou/p/6637903.html
Copyright © 2011-2022 走看看