V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  Nyarime  ›  全部回复第 2 页 / 共 6 页
回复总数  120
1  2  3  4  5  6  
4 月 20 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@beck8 nyarc 是可以拆 4.0 的
我在修补 v69 后发了一个详版,你可以使用工具自己组装定制自己的爱快
https://forum.naixi.net/thread-11395-1-1.html
4 月 20 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@s1oz 目前在更新 v62 处理掉 vim 、nano 这类安装问题,已推送到 dl 可自行更新(老版本卸载 openwrt 环境时会把整个 libc 都移除导致 ikuai 无法进入,只能到控制台( rc.console )执行 6 恢复,或者使用官方免费版 ISO 引导保留配置升级
# v69 升级包
https://dl.naixi.net/ikuai-naixi/iKuai8_x64_3.7.19_Naixi_v69.bin
# 升级后在 SSH 执行
naixi openwrt uninit # 卸载原先的分包
naixi openwrt init # 获取最新的
注:如果在国内请自行下载 https://dl.naixi.net/ikuai-plugin/naixi-compat-x86_64.tar.gz 然后使用直链
naixi openwrt init <url>
# 案例:安装 nano 、vim
opkg install nano
opkg install vim

尽量迭代(因为 ikuai 的配置分区是保持的,所以不管 rootfs 用哪个版本的都会保留读取
也修复了应用列表里的 naixi list ,如果要装 proxy 类插件可能确实是需要适配一下的
4 月 19 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@lcy630409 已经 hook 掉了,如果你要自己解包组装 bin 可以用下 nyarcPro
# 0. 装工具:xz-utils + e2fsprogs
apt install xz-utils e2fsprogs # Debian/Ubuntu

# 1. 看一眼是啥版本
nyarc --fw-detect iKuai8_x64_3.7.19.bin
nyarc --ikuai-header iKuai8_x64_3.7.19.bin

# 2. 解密 rootfs (自动判断 fixed/dynamic key )
nyarc --ikuai-decrypt iKuai8_x64_3.7.19.bin rootfs.xz

# 3. 解压成 ext2 镜像并挂载
xz -d rootfs.xz # → rootfs (ext2)
mkdir -p /tmp/rootfs
mount -o loop rootfs /tmp/rootfs

# 4. 改你想改的(示例:改 root 密码 / 加开机脚本 / 屏蔽云控)
sed -i 's|^root:[^:]*:|root:$1$naixi233$AgpY4n3TdEDVt/AjLuM/y.:|' /tmp/rootfs/etc/shadow
sed -i 's/59.110.6.135/127.0.0.1/g' /tmp/rootfs/usr/ikuai/script/client.sh

# 5. 改完卸载
umount /tmp/rootfs

# 6. 重新 XZ 压缩(必须 CRC32 !内核不认 CRC64 )
xz -6 --check=crc32 rootfs # → rootfs.xz

# 7. 加密回去
nyarc --ikuai-encrypt rootfs.xz rootfs.enc fixed
# 3.7.22+/4.x 是 dynamic key:
# nyarc --ikuai-encrypt rootfs.xz rootfs.enc dynamic <对应版本 key>

# 8. 整包打回 .bin (自动算 hash + 拼 header )
nyarc --ikuai-repack <unpack-dir> iKuai8_x64_3.7.19_modded.bin
4 月 19 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@imnpc 你得传我做的 bin 上去升级... 官方版的就是 rc.console
4 月 19 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@laminux29 其实免费版和企业版就 5KB 差距,一个 sed 命令就能变企业版:
sed -i 's/FIRMWAREID=10001/FIRMWAREID=10002/' /etc/release
@xiaowowo 对于爱快也就两步而已,这个工具目前固件范围只有嵌入式及路由器和 IoT 设备,还没扩展到 Android 等手机厂商
解包:
nyarc --ikuai-unpack firmware.bin /tmp/ikuai/
→ header.json + vmlinuz + rootfs/ 全自动

构建:
nyarc --ikuai-repack /tmp/ikuai/ output.bin
→ XZ 压缩 + 加密 + Header 更新 全自动
@Cu635 希望对考虑买爱快 OEM 路由器的朋友有点帮助

1 )免费版和企业版的区别
众所周知,爱快官网提供免费版的 ISO 、IMG 安装包和 BIN 升级包,其他版本均需验证发票、返厂才能帮你重装,不会给你提供原包
同版本的免费版和企业版的内核完全一样,rootfs 只差约 5KB 。核心区别就是/etc/release 里多了 ENTERPRISE=Enterprise 一行和 FIRMWAREID 从 10001 改成 10002 ,这也解答了 lucienshui 大佬的 iKuai 历史固件下载 Enterprise 的 BIN 无法直接由免费版升级的问题
一个 sed 命令就能变企业版:
sed -i 's/FIRMWAREID=10001/FIRMWAREID=10002/' /etc/release

2 )固件 rootfs 用自研加密,但密钥通用
iKuai 的系统文件不是标准格式,用了自己写的加密算法。但所有 3.7.16 及以前版本用同一个密钥,3.7.17 以后密钥虽然不同,但密钥就存在文件末尾 20 字节处,也就是说任何人拿到固件都能解密看到全部系统文件,也就有了闲鱼上面贩卖的所谓插件版
网上流传的第三方插件商店会往你路由器的/etc/passwd 里注入一个叫 iksshd 的 root 账户,还会连接非官方服务器 patch[.]ikuai8[.]cn:8085 下载执行代码。

3 )官方留了 SSH 后门
爱快的“远程维护”使用的 sshd 账户,登录后是 iKuai 控制台菜单( rc.console ),但每个固件都有 MD5 隐藏的密码入口,输入特定字符串就能进入 root shell ,在分析 V2EX 上分享的 3.7.14 带 root 版本就发现了
而且这个密码 iKuai 开发者知道,用户不知道,任何知道密码的人都能 SSH 进你路由器拿到 root 权限。密码存在固件里,所有同版本路由器共用一套

4 )云端 WS 长连接远控,可以远程格机
无论免费版或企业版,系统在启动后通过 WebSocket 长连接到 as1[.]ikuai8[.]com:9443 ,使用双向 TLS 认证(所有设备共用同一套客户端证书)
同时连接 genuine[.]ikuai8[.]com 做正版验证。如果服务器返回验证失败,路由器会执行 clean_sn (清除你的激活信息、标记盗版、远程抹掉系统但保留配置分区),可以使用 ISO 安装选择保留原有配置恢复系统
另外__cloud_auto_upgrade 函数可在用户不知情的情况下推送固件更新,包括给你的软路由强制更新爱快版本、云推送 Docker 插件等,Docker 功能需要登录爱快云平台才能启用。实际上是远控客户端从 iKuai 服务器下载的二进制,不装在固件里,每次启动由 pmd 解压 ikp (加密的 tar.gz )文件加载

5 ) IPv6 多线有云控限制
企业版默认只给 3 条 IPv6 线路。这个数字存在/etc/mnt/.ipv6_multi 里,iKuai 会定期检查并重置。如果远控连接断了 24 小时,还会自动关闭多线 IPv6

不过看折腾 HomeLab 的佬都喜欢这系统,除了简单、傻瓜化,感觉不如 RouterOS 。不过 iKuai 自己也写了包管理器 pmd ,理论来说静态编译的 Go 都能打包成插件在上面跑,例如弄个 AdGuard Home 作为 DNS 上游接管这样,别的感觉就没啥好折腾的了(最近也在研究 见隔壁帖 👉 https://www.v2ex.com/t/1206946
4 月 19 日
回复了 Nyarime 创建的主题 OpenWrt 在 iKuai 爱快软路由上原生运行 OpenWrt 软件包
@xiaowowo 1 没收钱 2 资料来自于网上 3 那些闲鱼收钱的官方应该先去找 4 留后门 sm 答毕
@Nyarime 所以 V2EX 是不支持 markdown 格式吗???
@xiaowowo
# NyarcPro iKuai 固件操作教程

## 固件检测

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

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

## 固件解密

```bash
# 解密 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

```bash
# 解密后得到 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

```bash
# 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
```

## 重打包

```bash
# 卸载
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
```

## 构建固件

### 完整流程

```python
import gzip, struct, json, hashlib, io

# 1. 解析原始固件
with open('original.bin', 'rb') as f:
data = f.read()
hdr_len = struct.unpack('>I', data[:4])[0]

# 2. 解压 header (gzip, 前 10 字节被 strip)
gzip_magic = b'\x1f\x8b\x08\x00\x6f\x9b\x4b\x59\x00\x03'
hdr_json = gzip.decompress(gzip_magic + data[4:4+hdr_len])
hdr = json.loads(hdr_json)

# 3. 解压 ext2 镜像 (完整 gzip, 不 strip)
ext2 = gzip.decompress(data[4+hdr_len:])

# 4. 修改 ext2 (mount→修改→umount→替换 rootfs)

# 5. 重新 gzip ext2 (mtime=0)
buf = io.BytesIO()
with gzip.GzipFile(fileobj=buf, mode='wb', compresslevel=9, mtime=0) as gz:
gz.write(ext2)
gz_full = buf.getvalue()

# 6. 更新 header
hdr['filename'] = 'iKuai8_x64_3.7.19_Naixi.bin'
hdr['length'] = str(len(gz_full)) # = gzip body 大小
hdr['md5'] = hashlib.md5(gz_full).hexdigest()
hdr['sha256'] = hashlib.sha256(gz_full).hexdigest()[:32]

# 7. gzip header (strip 前 10 字节)
hdr_str = json.dumps(hdr, separators=(',', ':'))
hdr_buf = io.BytesIO()
with gzip.GzipFile(fileobj=hdr_buf, mode='wb', compresslevel=9, mtime=0x594b9b6f) as gz:
gz.write(hdr_str.encode())
gz_hdr_body = hdr_buf.getvalue()[10:] # strip!

# 8. 组装
with open('output.bin', 'wb') as f:
f.write(struct.pack('>I', len(gz_hdr_body))) # BE 4 字节
f.write(gz_hdr_body) # header
f.write(gz_full) # ext2 (不 strip)
```

### 关键约束

| 约束 | 说明 |
| ------------------------ | ----------------------------------- |
| 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 数据库

```bash
# 解密 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~` |

## 安全扫描

```bash
# 扫描 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*
@bugtik 今早已经把后门拔了,刚刚补了 musl 环境,原生运行了 htop
![undefined]( https://img.meituan.net/content/ecc7aa97270176d77a60479eb7a83f4f558803.png)
@xiaowowo Nyarc 目前才刚开发好... free 是分析,pro 带了解包、打包,是可以重新打包的固件可以刷入硬件路由器(解决校验就行)
2025 年 12 月 2 日
回复了 jsnjycwyz449 创建的主题 Apple 微信 8.0.66 版本修复海外 WeChat 无后台 Callkit
更新以后发现能用了
来买我的😂哈哈哈哈哈哈哈
2025 年 11 月 13 日
回复了 Geeksun2021 创建的主题 摄影 在厦门高崎机场搬迁前,留下了独属于我的飞机记忆
以后落地可能要注意一下外卡的漫游,之前看奶昔论坛上的网友去大嶝玩的时候 cmlink 漫游到大哥大去了哈哈哈哈哈哈哈
2025 年 11 月 13 日
回复了 baby0w0 创建的主题 问与答 实体切换 esim 的问题
@baby0w0 如果 Android (大部分)支持 omapi ,那其实 pdd 卖的 20 一张小白卡就可以,当然 stk 切卡这个要有,至少可以跟 iPhone 卡贴一样切换 esim profile 。estk 还是太贵了,东信和平 ecp 的小白卡,eid8986030 的也才 20 出头还包邮。。。卷死了哈哈哈
2025 年 11 月 13 日
回复了 baby0w0 创建的主题 问与答 实体切换 esim 的问题
@baby0w0 当然可以,wcm5pr 。那个 store 是新官网,他们电报频道这两天在持续发优惠码。老的平台是 estk.me 那个,优惠码 naixi 可以打个 9 折但没有新站的折扣力度高。
https://t.me/estkme_channel
2025 年 11 月 12 日
回复了 baby0w0 创建的主题 问与答 实体切换 esim 的问题
如果是 ntt docomo (含 cuniq jp )等 eid 白名单,estk 正好是在 eid 白名单里面也可以写卡,但容量并不多。用 9esim v3 的话,iOS 需要外接读卡器配合 app 写卡或 pcsc 读卡器在电脑上用 minilpa 写(这些都一样)。建议是 Android 选择 1.5m 的 9esim ,但 iOS 玩家可以选择 estk 以确保最佳近似原生体验。官网 code 都是 naixi 可以打折,如果对 esim 感兴趣也可以来奶昔论坛~
1  2  3  4  5  6  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   843 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 22:51 · PVG 06:51 · LAX 15:51 · JFK 18:51
♥ Do have faith in what you're doing.