每日签到奶昔超市积分商城奶昔访达
返回列表 发布新帖

[软路由] 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包

972 17
发表于 2026-4-20 01:31:43 | 查看全部 阅读模式

登录后免广告,享受更多奶昔会员权益!

您需要 登录 才可以下载或查看,没有账号?注册

×
感谢论坛的 @dswqgu 提供3.7.19免格包,我在这基础上实现了musl兼容层,使整个OpenWrt的软件包生态可以原生运行在爱快上,不需要虚拟机、Docker 装 OpenWrt 。不过 iKuai 的国内用户量是真的很大,稳定性和多 IPv6 线路、流控能力都广受好评,那么好的系统连一个 root 都没有,生态封闭得爱快云上只有一个 Docker 插件,想装个 htop 、tcpdump 都不行。

iKuai 本来就是 OpenWrt 套皮(musl libc + Linux kernel),所以"兼容层"其实不是翻译,只是给 OpenWrt 的包找个家、把 musl 链接器告诉它去哪找 lib。整个方案大概 200 行 shell,没有任何重新实现。
仅用于学习用途,资源仅限个人学习、研究使用,不得用于商业运营、传播或非法用途;版权归爱快公司所有;使用者应在合理范围内使用,24 小时内删除

安装及更新
  • 安装任意官方爱快 ISO ,由于是 rootfs 系统随便装个3.7.x 版本就行
  • Naixi v69 (md5: 3fd0997a81149c1e4949aaa5e8431f33): 下载固件并升级
  • 启动 SSH ,前往系统设置-->登录管理-->远程访问-->远程维护:

用户名:sshd ,密码就是你设置的那个远程维护密码,登录后就是 root 权限。

安装 OpenWrt 运行环境
安装 openwrt 环境:naixi openwrt init
注:如果在国内请自行下载 https://dl.naixi.net/ikuai-plugin/naixi-compat-x86_64.tar.gz 然后使用直链
naixi openwrt init <url>
# 任何 OpenWrt 的 ipk 包都能装,自动落到独立目录不污染 rootfs ,重启不丢
opkg install vim

插件可通过 naixi list查询列表及运行状态

不过爱快都在搞 4.0 了,3.7.x 本身就没在维护了,就当 EOL 前的狂欢吧。

Naixi OpenWrt兼容设计:
  1. iKuai rootfs (ramdisk, 重启重置)
  2. ├── /usr/bin/ ← OpenWrt 包的命令在这里 symlink (boot 时建)
  3. ├── /sbin/naixi ← 包管理器
  4. ├── /sbin/naixi_boot.sh ← 启动恢复
  5. └── /etc/log/naixi/ ← 持久存储(不被重启抹掉)
  6.     ├── opkg-root/ ← 用户 opkg install 装的包都在这
  7.     │   ├── usr/bin/{nano,htop,vim,...}
  8.     │   └── usr/lib/{libncurses.so,...}
  9.     ├── openwrt-root/ ← OpenWrt rootfs(musl chroot)
  10.     └── cache/ ← opkg 二进制本身的备份
复制代码

三个关键技巧
1. musl ld 路径接力
iKuai 的 /lib/ld-musl-x86_64.so.1 默认只查 /usr/lib。在启动脚本里改 /etc/ld-musl-x86_64.path:
  1. /etc/log/naixi/openwrt-root/lib
  2. /etc/log/naixi/openwrt-root/usr/lib
  3. /etc/log/naixi/opkg-root/usr/lib
  4. /usr/lib
复制代码
这样 OpenWrt 包带的 .so 库自动被链接器找到,不动 host 的 /usr/lib。
2. opkg 装到独立 dest
opkg 0.7(libsolv 版)支持 --add-dest <name>:<path> CLI:
  1. opkg --add-dest naixi:/etc/log/naixi/opkg-root install nano
复制代码

包 100% 落到 /etc/log/naixi/opkg-root/,不污染 / 也不撑爆 ramdisk。
我们包了个 wrapper(/usr/bin/opkg,500 字节 sh 脚本),把所有 force flag 和 add-dest 都默认加上:
  1. #!/bin/sh
  2. exec /usr/bin/opkg.real \
  3.     --add-dest naixi:/etc/log/naixi/opkg-root \
  4.     --force-depends --force-checksum --force-space "$@"
复制代码
用户用 opkg install nano 跟 OpenWrt 一模一样。
3. 用 symlink 解决 PATH 难题
iKuai 的 shell 启动链有点奇葩(/etc/setup/rc shebang #!/bin/bash /etc/ikcommon,里面硬写 export PATH=...),导致 sshd 登录后 PATH 总被 reset 成 /usr/sbin:/usr/bin:/sbin:/bin。
试过改 /etc/profile、/etc/bash.bashrc、/root/.bashrc、patch /etc/ikcommon —— 都被某种玄学覆盖。
最后用最暴力但最可靠的方案:boot 时 symlink。
  1. for f in /etc/log/naixi/opkg-root/usr/bin/*; do
  2.     name=$(basename "$f")
  3.     [ -e /usr/bin/$name ] && continue   # 不覆盖系统命令
  4.     ln -sf "$f" /usr/bin/$name
  5. done
复制代码
/usr/bin 永远在 PATH 里,命令直接能跑。同名不覆盖,避免误伤 host。

持久化
ramdisk 重启会清空,所以:
• opkg 二进制本身备份到 /etc/log/naixi/cache/,boot 恢复
• musl chroot 永远在 /etc/log/naixi/openwrt-root/,重启不动
• 用户装的包在 /etc/log/naixi/opkg-root/,重启不动
• symlink 每次 boot 重建(因为 /usr/bin 是 ramdisk)
→ 用户视角:装一次,永久可用。

分析工具:Nyarc — 固件逆向工程控制台

NyarcPro iKuai固件操作教程

固件检测

# 检测固件类型
nyarc --fw-detect iKuai8_x64_3.7.19.bin

# 输出:
#   Size: 45.6MB
#   Vendor: iKuai
#   Format: ikuai_firmware
#   Version: 3.7.19
#   firmwareid: 10001 (免费版)

固件解密

# 解密rootfs (自动检测fixed/dynamic key)
nyarc --ikuai-decrypt firmware.bin decrypted.xz

# 输出:
#   🔑 Mode: fixed (key=77b1fa93742cb39d3383553e848a5291)
#   ✅ Hash verification: SUCCESS
#   ✅ Decrypted: decrypted.xz (34.9MB)

密钥说明

版本 密钥模式 密钥
≤3.7.16 Fixed 77b1fa93742cb39d3383553e848a5291
3.7.19 Fixed 同上(使用旧版vmlinuz)
3.7.22 Free Dynamic 9be61ec6f06181c3e68de54899c704bb
3.7.22 Ent Dynamic 58c0343a82e1447e89f423e39095a090
4.0.24 Dynamic ab25f5f19c125f7620d27906de49f256

解压rootfs

# 解密后得到XZ压缩的ext2
xz -d decrypted.xz

# 挂载
mkdir /tmp/rootfs
mount -o loop decrypted /tmp/rootfs

# 浏览
ls /tmp/rootfs/
# bin dev etc lib lib64 mnt proc root sbin sys tmp usr var www

修改rootfs

# SSH密码
sed -i 's|^root:.*|root:$1$naixi233$AgpY4n3TdEDVt/AjLuM/y.:17857:0:99999:7:::|' /tmp/rootfs/etc/shadow

# 云控阻断
sed -i 's/59.110.6.135/127.0.0.1/g' /tmp/rootfs/usr/ikuai/script/client.sh

# 添加启动脚本
sed -i 's/return$/\/sbin\/naixi_boot.sh \&\n\treturn/' /tmp/rootfs/usr/ikuai/script/plugins.sh

重打包

# 卸载
umount /tmp/rootfs

# XZ压缩 (必须CRC32!)
xz -6 --check=crc32 decrypted

# 加密 (fixed key)
nyarc --ikuai-encrypt decrypted.xz encrypted.enc fixed

# 加密 (dynamic key, 指定密钥)
nyarc --ikuai-encrypt decrypted.xz encrypted.enc dynamic 9be61ec6f06181c3e68de54899c704bb

解包

# 一键解包到目录
nyarc --ikuai-unpack firmware.bin /tmp/ikuai/

# 输出:
#   /tmp/ikuai/
#   ├── header.json          ← 固件元信息
#   ├── vmlinuz              ← 内核
#   └── rootfs/              ← 解密+解压后的根文件系统
#       ├── etc/
#       ├── usr/
#       └── ...

# 现在可以修改 /tmp/ikuai/rootfs/ 下的文件

构建

# 一键重打包
nyarc --ikuai-repack /tmp/ikuai/ output.bin

# 输出:
#   ✅ XZ压缩 (CRC32)
#   ✅ rootfs加密 (fixed key)
#   ✅ Header更新 (length/md5/sha256)
#   ✅ output.bin (45.6MB)

或分步操作

# 1. 解密rootfs
nyarc --ikuai-decrypt firmware.bin rootfs.xz

# 2. 加密rootfs
nyarc --ikuai-encrypt rootfs.xz rootfs.enc fixed
# dynamic key:
nyarc --ikuai-encrypt rootfs.xz rootfs.enc dynamic <key_hex>

# 3. 重建bin
nyarc --ikuai-repack ext2.img output.bin --base firmware.bin

关键约束

约束 说明
XZ必须CRC32 xz --check=crc32,内核不支持CRC64
Hash算明文 加密前计算hash
sbox uint32溢出 不要"修复"成int64
Header JSON无空格 separators=(',', ':')
Header gzip strip 10字节 ext2 gzip不strip
Header gzip mtime 0x594b9b6f
ext2 gzip mtime 0
length字段 = gzip(ext2)完整大小
firmwareid 10001=免费, 10002=企业

插件管理

pmd数据库

# 解密pmd数据库
# 密钥: ikupdat-d~#-
# 格式: Salted__ + AES-256-CBC + EVP_BytesToKey(MD5, count=1)
# 内容: JSON数组 [{"name","version","secret_key","arch"}]

已知插件密钥

插件 secret_key
docker 354a738f7b2756a848f3b8de541ec57
docker-bin 354a738f7b2756a848f3b8de541ec58
shell 70946f9965a3c140b28e36a82ed148b
ik_host jJ9FzkgwUm6bL3dG
pmd challstr@holly~

安全扫描

# 扫描rootfs安全问题
nyarc --scan /tmp/rootfs

# 输出:
#   🛡️ Security Score: 0/100
#   🔴 Critical: 75  🟠 High: 74  🟡 Medium: 417
#   🔴 Hardcoded Password in /etc/shadow
#   🟠 Weak Hash (MD5)

版本支持

版本 解密 加密 重打包 状态
3.7.19 完整支持
3.7.22 Dynamic key
4.0.20 验证通过
4.0.24 Dynamic key

Nyarc — Nyarime Advanced Reverse-engineering Console

爱生活,爱奶昔~
回复

使用道具 举报

AIfengyue

评论17

CrueylLv.1 发表于 2026-4-27 17:02:14 | 查看全部
root@ubuntu:~/ik# /root/ik/nyarc-pro-linux-amd64 \
>   --ikuai-unpack \
>   /root/ik/iKuai8_x64_3.7.22_Build202603301146.bin \
>   /root/ik/test_clean_unpack
📦 Firmware gzip at offset 0xBC, header 188 bytes
📦 Partition image: /root/ik/test_clean_unpack/partition.img (50.0MB)
📂 Extracted boot/vmlinuz, boot/rootfs, boot/grub/
🔑 Key mode saved: dynamic
🔑 Mode: dynamic (key=9be61ec6f06181c3e68de54899c704bb)
⚠️ Hash mismatch: calc=0xB43FCA4C stored=0x57C2217F (may still be valid)
✅ Decrypted: /root/ik/test_clean_unpack/rootfs.xz (33.6MB)
📂 Rootfs image: /root/ik/test_clean_unpack/rootfs.img (130.0MB)

📋 Release info:
   PORTAL=portal.ikuai8-wifi.com
   FIRMWAREID=10001
   FIRMWARENAME=IK-RouterOS
   GITCOMMIT=fe8197d
   LINUX_VERSION=5.10.194
   KERNEL_PATCHVER=5.10
   VERSION=3.7.22
   VERSION_NUM=300070022
   BUILD_DATE=202603301146
   MODELTYPE=X86
   ARCH=x86
   SYSBIT=x64
   DEFAULT_IP=192.168.9.1
   SUPPORT_VCACHE=true
   SUPPORT_DTALK=true
   SUPPORT_WECOM=true
   VERSTRING="3.7.22 x64 Build202603301146"

✅ Full extraction complete: /root/ik/test_clean_unpack
root@ubuntu:~/ik# /root/ik/nyarc-pro-linux-amd64 \
>   --ikuai-repack \
>   /root/ik/test_clean_unpack \
>   /root/ik/iKuai8_x64_3.7.22_clean_repack.bin \
>   dynamic 9be61ec6f06181c3e68de54899c704bb
📦 Creating ext4 rootfs image...
📦 Rootfs modifications synced
📦 XZ compressing rootfs...
🔐 Encrypting rootfs...
✅ Encrypted (dynamic mode): /root/ik/test_clean_unpack/boot/rootfs (33.6MB)
📦 Rebuilding partition image...
📦 Gzip compressing...
✅ Firmware repacked: /root/ik/iKuai8_x64_3.7.22_clean_repack.bin (44.5MB)
📝 Updating firmware header...
✅ Header rebuilt: length=46657156 md5=a7e4318523b7ae3d847bb14df10edf66
root@ubuntu:~/ik#
想问下大佬,解包在打包,没做任何修改,打包后的bin升级后系统进不去,是不是打包的dynamic 9be61ec6f06181c3e68de54899c704bb用的不对 ,困扰几天了  
爱生活,爱奶昔~
回复 支持 0 反对 1

使用道具 举报

BeatlessLv.1 发表于 2026-4-22 12:48:25 | 查看全部
我测试了一下用大量软件解包后目录不太一样,所以导致打包无法使用
/tmp/ikuai/
├── boot/
│   ├── grub/
│   ├── rootfs          ← 加密的rootfs
│   └── vmlinuz         ← 内核
├── header.bin          ← 固件头
├── partition.img       ← 分区镜像
├── rootfs/            ← 解压后的文件系统
├── rootfs.img         ← rootfs镜像(120MB)
└── rootfs.xz          ← 压缩后(33MB)
爱生活,爱奶昔~
回复 支持 0 反对 1

使用道具 举报

huangsitingLv.4 发表于 2026-4-20 01:42:17 | 查看全部
前排,感谢分享~
爱生活,爱奶昔~
shijie8089Lv.4 发表于 2026-4-20 06:46:34 来自手机 | 查看全部
辛苦了写的很详细
爱生活,爱奶昔~
beckLv.1 发表于 2026-4-20 17:00:49 | 查看全部
真的爱了,救命
爱生活,爱奶昔~
倒霉鬼Lv.4 发表于 2026-4-20 17:01:26 | 查看全部
终于打算从v4版本降级回来用啦!!!
爱生活,爱奶昔~
OMGLv.2 发表于 2026-4-20 17:35:44 来自手机 | 查看全部
很专业的教程,感谢分享
爱生活,爱奶昔~
Guoyuh78Lv.1 发表于 2026-4-20 17:54:29 | 查看全部
俺也不懂技术,俺只想说大佬牛逼666
爱生活,爱奶昔~
xiongmxLv.2 发表于 2026-4-20 21:17:18 | 查看全部
嘿嘿,终于开始搞事了~~~
爱生活,爱奶昔~
Guoyuh78Lv.1 发表于 2026-4-21 00:37:47 | 查看全部
大佬如何安装插件能出个教程吗?
爱生活,爱奶昔~
NyaPass7Lv.4 发表于 2026-4-21 01:39:20 | 查看全部
奶昔NB
爱生活,爱奶昔~
ifeelLv.1 发表于 2026-4-21 21:43:30 | 查看全部
以后总没有什么旁路由说法了
爱生活,爱奶昔~
yzm157Lv.1 发表于 2026-4-22 21:19:38 | 查看全部
下载链接不存在了?
爱生活,爱奶昔~
itximuLv.1 发表于 2026-4-23 11:01:12 | 查看全部
您好下载链接挂了,能麻烦补一个吗?
爱生活,爱奶昔~
OMGLv.2 发表于 2026-4-23 11:11:21 来自手机 | 查看全部
太有石粒了
爱生活,爱奶昔~
air2025Lv.3 发表于 2026-4-24 12:43:44 | 查看全部
您好下载链接挂了,能麻烦补一个吗?
爱生活,爱奶昔~
翠翠花Lv.1 发表于 7 天前 | 查看全部
Crueyl 发表于 2026-4-27 17:02
root@ubuntu:~/ik# /root/ik/nyarc-pro-linux-amd64 \
>   --ikuai-unpack \
>   /root/ik/iKuai8_x64_3.7. ...

我也是,重构后,上传就会无限重启。貌似引导坏了
爱生活,爱奶昔~

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

© 2026 Naixi Networks. 沪ICP备13020230号-1|沪公网安备 31010702007642号手机版小黑屋RSS
返回顶部 关灯 在本版发帖
快速回复 返回顶部 返回列表