IoT裝置程式開發及編譯環境搭建初體驗

2021-09-08 12:34:36 字數 2256 閱讀 2565

mirai事件一經曝出,立即引領了一輪研究iot裝置的熱潮。目前,對mirai的報告大多只是在對其功能實現上的介紹,卻很少提及如何實現iot裝置程式開發的測試環境。本文在對mirai的原始碼研究的基礎上,實現了乙個比較簡單的iot裝置開發編譯環境。該工具能自動配置交叉編譯環境,使其可以滿足簡單的物聯網開發測試。

編譯指令碼在git上為build.sh,可根據情況對bot檔案進行編譯。編譯分為release模式和debug模式,release模式對bot檔案進行交叉編譯,使其適用於不同的嵌入式架構;debug模式直接對bot檔案進行編譯,並在debug程式執行的過程中會列印出除錯資訊。

小公尺路由器3一台,選擇它,是因為它可以方便地安裝ssh外掛程式,具體的方法,可參照:

登陸上小公尺路由器,如圖所示:

git上主要存放的是bot客戶端程式,其中config.sh為交叉編譯環境自動配置指令碼,build.sh為程式編譯指令碼,需要先執行config.sh搭好交叉編譯環境,才能對bot程式進行編譯。

本專案的檔案相當於實現了乙個簡單的是客戶端,先在bot目錄下的include.h中更改要連線的ip和port。執行build.sh 指令碼編譯程式,如:./build.sh debug

即可在debug目錄下編譯好所要的程式。由於小公尺路由器的cpu採用的是mips架構,系統為linux,在測試過程中,只有用mipsel-gcc編譯的程式才能正常執行,下面會做詳細說明。因此,不同cpu架構的iot裝置,需要用對應的交叉編譯工具,才能編譯出能正常執行的可執行程式。下圖中,即為編譯出的適應於不同架構的可執行程式。

對於如何判斷某個iot裝置適用哪種可執行程式,通過看路由器的cpuinfo,就可以知道cpu model的架構,為mips;通過檢視路由器的系統版本,為linux2.6.36,即可查知該系統支援的庫函式,在程式開發的時候,查明所用的庫函式該系統是否支援非常重要,以免引起程式意外退出。如下圖所示為小公尺路由器的cpuinfo和系統版本資訊。

編譯好程式後,在debug目錄下找到./mirai.mipsel程式,用scp命令將該程式投放到路由器的tmp目錄下(小公尺路由器支援scp命令,其他的iot可能不支援,需要探測其支援的命令工具),執行該程式,如下圖:

在投放可執行程式過程中,需要注意cpu是大端儲存還是小端儲存的問題,在實驗過程,採用mips-gcc編譯的程式,直接執行,會報如下錯誤:

排查後才知道,mips-gcc編譯出的為大端儲存的可執行程式;mipsel-gcc編譯出的為小端儲存的可執行程式。小公尺路由器為小端儲存,故用mipsel-gcc編譯的程式才能正常執行。

服務端比較簡單,採用的是現成的工具,找一台linux主機(虛擬機器即可),安裝nc工具(精悍的小工具),在centos系統下可直接安裝: yum install nc

在客戶端程式已執行的情況下,執行:nc –l 9999  //監聽9999埠

只要客戶端執行該ip下的9999埠,即可建立通訊。

服務端程式執行圖為:

該測試程式是在mirai原始碼的基礎上做的裁剪,已刪除攻擊模組,目的在於做乙個針對iot裝置的程式開發測試。總的來說,mirai到目前為止都還是一款先進的物聯網程式,值得大家深入研究,並做相應的測試。最後,不足之處,大家多多提出來一起討論。

交叉編譯環境 搭建開發環境

一 安裝ubuntu redhat等linux作業系統 二 修改源 可省略 sudo vi etc apt sources.list deb 或直接在 系統 系統管理 軟體源 選擇軟體源 三 更新源列表 sudo apt get update 四 安裝中文環境 系統 系統管理 語言支援 在 支援的語...

搭建python編譯環境 Python開發環境搭建

本文章記錄python學習路上的心路歷程,為大家提供學習python的思路。開發環境搭建和開發工具選擇 一 開發環境 anaconda安裝 安裝畫面 到這裡,推薦都勾選上,第乙個是將anaconda加入到系統的環境變數裡面,後續就不用手動新增,第二是允許anaconda關聯到ide工具,開啟ide工...

openwrt 編譯環境搭建及Makefile

openwrt編譯環境搭建 作業系統 centos 5.8 64位 安裝gnome,可使用xmanager yum y groupinstall x window system yum y groupinstall desktop 安裝svn yum install subversion make ...