<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>IoT on F145H 的博客</title><link>http://47.98.243.15/tags/iot/</link><description>Recent content in IoT on F145H 的博客</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Thu, 25 Sep 2025 00:00:00 +0800</lastBuildDate><atom:link href="http://47.98.243.15/tags/iot/index.xml" rel="self" type="application/rss+xml"/><item><title>GDBfuzz: Fuzzing Embedded Systems using Debug Interfaces</title><link>http://47.98.243.15/posts/gdbfuzz/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/gdbfuzz/</guid><description>&lt;p&gt;前记：在对 DIR-816路由器 的漏洞 CVE-2025-5623 的复现过程中，发现这是一个典型的内存溢出漏洞，利用该漏洞可以控制路由器的内存，从而实现对路由器的控制。为了进一步研究该漏洞和学习相关fuzz工具，模拟漏洞发现过程，我们使用了 GDBfuzz 这个工具来对路由器进行 fuzzing 测试。&lt;/p&gt;&#10;&lt;p&gt;相关论文在 &lt;code&gt;docs/Fuzzing Embedded Systems using Debug Interfaces.pdf&lt;/code&gt;&lt;/p&gt;&#10;&lt;h2 id="gdbfuzz-的安装和测试"&gt;GDBfuzz 的安装和测试&lt;/h2&gt;&#10;&lt;p&gt;首先，从最基础的安装和使用学习 gdbfuzz 这个工具。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;git clone https://github.com/F145H-F145H/gdbfuzz&#10;cd gdbfuzz&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;根据 &lt;code&gt;README.md&lt;/code&gt; 文档，我们最好使用一个独立的 python 环境，且最好是 3.10 版本，笔者在 python3.13 环境下安装依赖时遇到了错误。在 &lt;code&gt;make&lt;/code&gt; 的过程中，如果遇到错误或网络问题等，可以根据 &lt;code&gt;Makefile&lt;/code&gt; 文件手动解决问题。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda create -n python310 &lt;span style="color:#79c0ff"&gt;python&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;3.10&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;conda activate python310 &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 这里我使用 miniconda 管理python版本，可以在这里进行安装： &lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# https://www.anaconda.com/docs/getting-started/miniconda/install#linux-2&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;python3 -m venv .venv&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;source .vnev/bin/activate &lt;span style="color:#8b949e;font-style:italic"&gt;# 使用本地虚拟环境&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;make&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;chmod a+x ./src/GDBFuzz/main.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;安装完成后，我们可以由简到繁地进行测试。首先，我们打开./为了进一步观察 fuzz 过程，我们使用 Ghidra 打开测试程序，使用 &lt;code&gt;Script Manager&lt;/code&gt;，搜索 &lt;code&gt;bridge&lt;/code&gt; 关键字，找到 &lt;code&gt;ghidra_bridge_port.py&lt;/code&gt; 设置端，然后运行 &lt;code&gt;ghidra_bridge_server_background.py&lt;/code&gt;，注意 .cfg 文件的端口需要和这里保持一致。&lt;/p&gt;</description></item><item><title>DIR816路由器栈溢出复现和深入探索</title><link>http://47.98.243.15/posts/cve-2025-5623/</link><pubDate>Fri, 29 Aug 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/cve-2025-5623/</guid><description>&lt;h2 id="路由器漏洞分析"&gt;路由器漏洞分析&lt;/h2&gt;&#10;&lt;p&gt;在官网下载对应版本固件&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.dlink.com.cn/techsupport/ProductInfo.aspx?m=DIR-816"&gt;https://www.dlink.com.cn/techsupport/ProductInfo.aspx?m=DIR-816&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;固件：&#10;&lt;a href="http://47.98.243.15/files/iot/DIR-816A2_FWv1.10CNB05_R1B011D88210.img"&gt;DIR-816A2_FWv1.10CNB05_R1B011D88210.img&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;使用 &lt;code&gt;binwalk&lt;/code&gt; 查看信息，没有加密，因此直接进行解包，提取出系统进行分析。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;binwalk -Me DIR-816A2_FWv1.10CNB05_R1B011D88210.img&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;find ./ -iname &lt;span style="color:#a5d6ff"&gt;&amp;#39;busybox&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;cp -r ./extractions/DIR-816A2_FWv1.10CNB05_R1B011D88210.img.extracted/0/Linux_Kernel_Image.bin.extracted/1822EE/squashfs-root/ .&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://47.98.243.15/posts/cve-2025-5623/CVE-2025-5623-1-1.png" alt="image" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;这个漏洞存在于 &lt;code&gt;/bin/goahead&lt;/code&gt; 程序中 &lt;code&gt;isIpNetmaskValid&lt;/code&gt; 函数中，由于主调函数的 &lt;code&gt;sip_address&lt;/code&gt; 和 &lt;code&gt;dip_address&lt;/code&gt; 参数可控，在其后传参并调用的此函数中，直接对字符串进行了写入操作，无论传入参数的长度如何，都会被复制到 &lt;code&gt;local_30&lt;/code&gt; 缓冲区中，存在漏洞调用路径的入口函数有三个 &lt;code&gt;FUN_0044ab48&lt;/code&gt; &lt;code&gt;FUN_0044dde8&lt;/code&gt; 和 &lt;code&gt;FUN_0046bb80&lt;/code&gt;，在这里我使用了 &lt;code&gt;FUN_0046bb80&lt;/code&gt; 进行漏洞复现。&lt;/p&gt;&#10;&lt;p&gt;( &lt;code&gt;FUN_0046bb80&lt;/code&gt; 中，关于 &lt;code&gt;sip_address&lt;/code&gt; 和 &lt;code&gt;dip_address&lt;/code&gt; 的获取。 )&lt;/p&gt;</description></item><item><title>LD_PRELOAD</title><link>http://47.98.243.15/posts/ld-preload/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/ld-preload/</guid><description>&lt;h2 id="模拟固件下的-patch-和-hook"&gt;模拟固件下的 patch 和 hook&lt;/h2&gt;&#10;&lt;h3 id="ld_preload"&gt;LD_PRELOAD&lt;/h3&gt;&#10;&lt;p&gt;LD_PRELOAD 是 Linux 系统中的一个环境变量，它可以影响程序的运行时的链接（Runtime linker），它允许你定义在程序运行前优先加载的动态链接库。&lt;/p&gt;&#10;&lt;p&gt;当程序调用一个动态链接库中的函数（如 &lt;code&gt;printf&lt;/code&gt;, &lt;code&gt;open&lt;/code&gt;, &lt;code&gt;malloc&lt;/code&gt;）时，动态链接器负责在已加载的共享库中找到该函数（符号）的实际地址，动态链接器按照特定的顺序搜索共享库来解析符号。&lt;code&gt;LD_PRELOAD&lt;/code&gt; 赋予指定的库最高的搜索优先级。&lt;/p&gt;&#10;&lt;p&gt;这意味着：如果一个函数（例如 &lt;code&gt;open&lt;/code&gt;）在 &lt;code&gt;LD_PRELOAD&lt;/code&gt; 指定的库 A 中被定义，同时也在标准库 B（如 &lt;code&gt;libc.so.6&lt;/code&gt;）中被定义，那么链接器会优先找到并使用库 A 中的 &lt;code&gt;open&lt;/code&gt; 函数，而完全忽略库 B 中的原始 &lt;code&gt;open&lt;/code&gt; 函数。&lt;/p&gt;&#10;&lt;p&gt;示例如下： 图中虚线表示动态链接过程，实线表示函数调用流程。预加载库通过拦截-转发机制实现了对系统调用的透明监控。&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code class="language-mermaid" data-lang="mermaid"&gt;sequenceDiagram&#10; box 无 LD_PRELOAD（普通模式）&#10; participant Program as 程序&#10; participant LibC as 标准库&#10; end&#10; &#10; box 有 LD_PRELOAD（拦截模式）&#10; participant ProgramX as 程序&#10; participant Preload as 预加载库&#10; participant LibCX as 标准库&#10; end&#10; &#10; Note left of Program: 普通执行&amp;lt;br/&amp;gt;./openfd&#10; Program-&amp;gt;&amp;gt;LibC: 调用 open(&amp;#34;test.txt&amp;#34;)&#10; LibC--&amp;gt;&amp;gt;Program: 返回文件描述符 (fd)&#10; &#10; Note right of ProgramX: 拦截执行&amp;lt;br/&amp;gt;LD_PRELOAD=./libpreload.so ./openfd&#10; ProgramX-&amp;gt;&amp;gt;Preload: 调用 open(&amp;#34;test.txt&amp;#34;)&#10; Note over Preload: ✋ 拦截 open 调用!&amp;lt;br/&amp;gt;🔍 访问文件: test.txt&#10; Preload-&amp;gt;&amp;gt;LibCX: 调用原始 open()&#10; LibCX--&amp;gt;&amp;gt;Preload: 返回文件描述符 (fd)&#10; Note over Preload: ✅ 返回文件描述符: fd&#10; Preload--&amp;gt;&amp;gt;ProgramX: 返回文件描述符 (fd)&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;示例 2-1 &lt;code&gt;openfd.c&lt;/code&gt;&lt;/p&gt;</description></item><item><title>利用binfmt_misc机制加快CGI调试</title><link>http://47.98.243.15/posts/binfmt-misc/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/binfmt-misc/</guid><description>&lt;p&gt;学习参考文章&#10;&lt;a href="https://mp.weixin.qq.com/s?__biz=Mzk0OTU2ODQ4Mw==&amp;amp;mid=2247487412&amp;amp;idx=1&amp;amp;sn=c54f5b26b7a14a4ec76dfdf866684f57&amp;amp;chksm=c2ebddafc36bbf1ac3308a5cda98e2e478cced85a3a8dc1309c3c40c9ebfb1984273414a5833"&gt; 奇安信天工实验室 利用binfmt_misc机制加快CGI调试&lt;/a&gt;&#10;&lt;a href="https://www.cnblogs.com/yaohong/p/17481358.html"&gt; 姚红 binfmt_misc &lt;/a&gt;&#10;&lt;a href="https://zh.wikipedia.org/wiki/Binfmt_misc"&gt; binfmt_misc Wikipedia &lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;&lt;code&gt;binfmt_misc&lt;/code&gt; 是 Linux 内核的一项功能，其使得内核可识别任意类型的可执行文件格式并传递至特定的用户空间应用程序，如模拟器和虚拟机，它是内核中准备用户空间程序运行的诸多二进制格式文件处理程序之一 。例如，可以用它来自动运行 Java 或 Python 脚本，或在 x86_64 系统上运行 ARM 二进制文件等。这里，我们可以通过 &lt;code&gt;binfmt_misc&lt;/code&gt; 这项功能来简化和加速跨平台文件的调试过程。&lt;/p&gt;&#10;&lt;p&gt;在许多文章中提到使用 &lt;code&gt;binfmt_misc&lt;/code&gt; 往往需要先将其挂载，但是在笔者的系统上（Ubuntu 24.04）已经不再需要手动进行挂载。所以高版本的系统大多可以跳过挂载这个阶段，这一点可以通过命令得到确认，或者是直接运行一个 python 脚本。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;mount | grep binfmt_misc&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;./test.py&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;在 Linux 系统中，直接“执行” Python 脚本时，&lt;code&gt;binfmt_misc&lt;/code&gt; 机制会自动调用 &lt;code&gt;python3 test.py&lt;/code&gt; 来运行脚本。其原理是通过 &lt;code&gt;binfmt_misc&lt;/code&gt; 机制将以特定格式（如以 &lt;code&gt;#!&lt;/code&gt; 开头的脚本文件）自动关联到相应的解释器（如 Python 解释器），从而实现无需手动指定解释器即可直接运行脚本文件。&lt;/p&gt;</description></item><item><title>Cisco RV160W 固件模拟</title><link>http://47.98.243.15/posts/cisco-rv160/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/cisco-rv160/</guid><description>&lt;p&gt;本次进行的固件模拟，依旧是基于 Cyberangel 师傅的博客进行学习。指北：&lt;a href="https://www.yuque.com/cyberangel/rg9gdm"&gt; Cyberangle 公开知识库 &lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;先对获得的固件进行解压、打包备用。&lt;/p&gt;&#10;&lt;p&gt;固件：&#10;&lt;a href="http://47.98.243.15/files/iot/RV16X_26X-v1.0.01.01-2020-08-17-11-09-01-AM.img"&gt;RV16X_26X-v1.0.01.01-2020-08-17-11-09-01-AM.img&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="http://47.98.243.15/posts/cisco-rv160/Cisco_RV160-1-1.png" alt="image" loading="lazy" decoding="async"&gt;&#10;&lt;/p&gt;&#10;&lt;p&gt;设置网桥、启动虚拟机，给出代码和截图。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 创建网桥&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo brctl addbr ms_br &lt;span style="color:#8b949e;font-style:italic"&gt;# 创建一个名为`ms_br`的网桥设备&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ip link set ms_br up &lt;span style="color:#8b949e;font-style:italic"&gt;# （启动）刚刚创建的网桥`ms_br`，使其处于活动状态&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ip addr add 192.168.10.1/24 dev ms_br &lt;span style="color:#8b949e;font-style:italic"&gt;# 给网桥`ms_br`分配一个IP地址`192.168.10.1`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 创建并连接TAP设备&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ip tuntap add dev ms_tap mode tap &lt;span style="color:#8b949e;font-style:italic"&gt;# 创建一个TAP设备，命名为`ms_tap`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo brctl addif ms_br ms_tap &lt;span style="color:#8b949e;font-style:italic"&gt;# 将TAP设备`ms_tap`添加到网桥`ms_br`中&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ip link set ms_tap up &lt;span style="color:#8b949e;font-style:italic"&gt;# 启用TAP设备`ms_tap`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo ip addr add 192.168.10.10/24 dev ms_tap &lt;span style="color:#8b949e;font-style:italic"&gt;# 给`my_tap`分配一个IP地址`192.168.10.10`&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;开启虚拟机：&lt;/p&gt;</description></item><item><title>Cisco RV340利用链研究</title><link>http://47.98.243.15/posts/cisco-rv340/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0800</pubDate><guid>http://47.98.243.15/posts/cisco-rv340/</guid><description>&lt;p&gt;作为初次接触IoT漏洞研究的探索，本文基于多篇优秀技术文章完成环境搭建和漏洞复现，主要参考：&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.yuque.com/cyberangel/rg9gdm/zz75e4"&gt; Cyberangel 师傅的语雀文章 Cisco RV340利用链研究 &lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://zhuanlan.zhihu.com/p/526291311"&gt; 盛邦安全 的知乎文章 Cisco RV340命令执行漏洞（CVE-2022-20707）及关联历史漏洞分析 &lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://forum.butian.net/share/1869"&gt; 就叫16385吧 的奇安信攻防社区文章 pwn2own2021中的Cisco路由器 &lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://bestwing.me/Pwning%20a%20Cisco%20RV340%20%20%E6%BC%8F%E6%B4%9E%E5%88%86%E6%9E%90%EF%BC%88CVE-2022-20705%20%E5%92%8C%20CVE-2022-20707.html"&gt; Swing 的博客 Pwning a Cisco RV340 漏洞分析（CVE-2022-20705 和 CVE-2022-20707 &lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://www.cnblogs.com/sun-ye/p/15750212.html"&gt; lone_legend 的博客园文章 配置 QEMU Ubuntu 虚拟机通过网桥连接外网 &lt;/a&gt;&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;注意：笔者不再使用这篇博客的环境，不建议使用这篇博客进行环境安装的参考。&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="基础环境的安装和测试"&gt;基础环境的安装和测试&lt;/h2&gt;&#10;&lt;h3 id="环境准备"&gt;环境准备&lt;/h3&gt;&#10;&lt;p&gt;&lt;code&gt;MIPS&lt;/code&gt;交叉编译工具链搭建及其32位指令集。&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# qemu 安装&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install qemu qemu-user qemu-user-static qemu-system binfmt-support&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 虚拟网络工具包&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install uml-utilities bridge-utils&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 安装 mips 交叉编译环境&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gcc-mips-linux-gnu&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gcc-mipsel-linux-gnu&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gcc-mips64-linux-gnuabi64&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gcc-mips64el-linux-gnuabi64&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# 多架构调试依赖&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;sudo apt install gdb-multiarch&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;习惯使用 &lt;code&gt;conda&lt;/code&gt; 进行环境管理，创建一个专门用来进行 IoT 操作的 &lt;code&gt;conda&lt;/code&gt; 环境（主要管理 &lt;code&gt;python包&lt;/code&gt; 等），此步骤可以省略。&lt;/p&gt;</description></item></channel></rss>