D-link M30固件模拟

新发布m30固件模拟
2026-01-11 13:15
8933

最近在学习IOT的固件,所以找了dlink的M30固件来进行模拟,首先从官网上下载1.10版本,因为固件是加密过的,需要解密,然后再进行模拟。

固件解密

github上已经有了解密dlink固件的程序[GitHub - devttys0/delink](https://github.com/devttys0/delink.git),下载下来,使用rust进行编译最后生成delink,然后解密。

./delink M30A1_FW110B02.bin m30_110_dec.bin

解密完成后,使用binwalk来提取固件。

binwalk -Me m30_110_dec.bin

提取成功之后,可以得到squashfs文件系统。

image.png

固件模拟

固件分析

在模拟之前,需要先大概过一下这个固件的关键信息,如web服务,启动脚本等。

为了方便,我使用firmwalkersquashfs-root文件夹进行扫描。

./firmwalker.sh ./squashfs-root

完成之后查看扫描结果,看能否发现一些关键服务以及脚本。

image.png

发现了一个关键的web服务程序httpd。同时需要留意一下以下几个目录:bin, sbinusr/binusr/sbin,提取出来的可执行程序可能会指向不正确的链接,如/dev/null,需要修复一下,让它们指向busybox。脚本如下:

#!/bin/sh
# 批量修改 ./bin/、./sbin/、./usr/bin/、./usr/sbin/ 下指向 /dev/null 的软链接
# 定义需要处理的目录和对应的busybox路径
TARGETS="
./bin ../bin/busybox
./sbin ../bin/busybox
./usr/bin ../../bin/busybox
./usr/sbin ../../bin/busybox
"

# 遍历每一行配置
echo "$TARGETS" | while read dir busybox_link; do
    # 跳过空行
    [ -z "$dir" ] && continue

    # 检查目录是否存在
    if [ ! -d "$dir" ]; then
        echo "警告:目录 $dir 不存在,跳过该目录"
        continue
    fi

    echo "========================================"
    echo "开始处理目录:$dir(链接指向:$busybox_link)"
    # 遍历目录下所有文件
    for file in "$dir"/*; do
        # 跳过子目录
        [ -d "$file" ] && continue

        # 检查是否是指向 /dev/null 

试读结束,发布七天后转为公开

公开时间:2026年1月18日 13:15:56

提前解锁全文,需花费 50 积分

登录解锁全文
分享到

参与评论

0 / 200

全部评论 0

暂无人评论
投稿
签到
联系我们
关于我们