绿联云系统最近推出了新系统UGOS Pro
。虽然它欠缺打磨,实在还不足以称其为一个好用的NAS
系统。我和大多数用户体验下来的感受一样,这款产品硬件可以。担软件系统实在太差了。
第一节
回顾UGOS系统
绿联的UGOS系统,是一个非常粗糙的,基于OpenWrt系统开发出来的NAS系统。绿联产品的硬件中内置了emmc/ssd系统盘。因为绿联官方并不提供它的固件,所以如果要研究分析UGOS系统,只能从它的硬件中提取镜像。
提取镜像的方法非常简单,对于emmc机型,可以使用ddif=/dev/mmcblk0 | gzip >/tmp/mmcblk0.gz 我用这个命令备份同时压缩的保存到本地后,再分享。朋友们提供给我了一个DX4600的UGOS系统的NAS映像,我对它做了一般性的破解。但我发现,它实在是太差了,根本不值得分享给其它朋友们去体验。
为了解UGOS系统的结构,我认为有必要先回顾一下,以便比较UGOS Pro都有些什么改变。
拿到mmcblk0.gz压缩的映像后,我准备了一个QEMU虚拟机。在它上面做仿真分析这个系统。
首先要创建一个映像磁盘。我用命令:
qemu-img create -fqcow2 UGOS_SD.qcow2 32G [创建磁盘]
再用命令把映像解压恢复的磁盘上。
gzip c mmcblk0.gz> mmcblk0 [解压映像]
dd if=./mmcblk0 of=./UGOS_SD.qcow2 [复制映像]
让我们先来看看映像磁盘的分区结构:我暂时把磁盘挂载在/dev/sdb了,其实磁盘可以挂载在任何的sdX盘位,并不影响分析系统。
sdb 8:16 0 32G 0 disk
|-sdb1 8:17 0 64M 0 part (9%)
|-sdb2 8:18 0 1G 0 part (100%)
|-sdb3 8:19 0 10M 0 part (3%)
|-sdb4 8:20 0 1G 0 part
|-sdb5 8:21 0 1G 0 part
|-sdb6 8:22 0 26G 0 part (3%)
`-sdb128 259:0 0 239K 0 part
磁盘有七个分区,其中六个是格式化的分区,一个是非格式化的分区。
/dev/sdb1:SEC_TYPE="msdos" LABEL="kernel" UUID="1234-ABCD"TYPE="vfat" PARTUUID="bd74b9fa-7100-e8ee-f60f-57b565f1d001"
/dev/sdb2:TYPE="squashfs" PARTUUID="bd74b9fa-7100-e8ee-f60f-57b565f1d002"
/dev/sdb3: LABEL="factory"UUID="b89bd8c6-e263-4672-a471-5db2adf30fed" TYPE="ext4" PARTUUID="d4b34e73-bb2e-c748-8122-4df99f9a58f0"
/dev/sdb4: LABEL="rootfs2" UUID="8841f290-8db5-40c7-b8be-b712c0108f68"TYPE="ext4" PARTUUID="f40885a9-7106-b848-b60f-b77cc08c668b"
/dev/sdb5: LABEL="reserved"UUID="184b0c77-172f-4a7e-a6b8-192d7305c630" TYPE="ext4" PARTUUID="4589f2ed-5787-164b-bf3b-b0693a136240"
/dev/sdb6: LABEL="UserData" UUID="17e27785-20ff-43fd-aaa0-8cc74f8d7078"TYPE="ext4" PARTUUID="8a077d37-51e6-e84f-b4ab-92e76c5f48ab"
/dev/sdb128: PARTUUID="bd74b9fa-7100-e8ee-f60f-57b565f1d080"
该映像这是一个UEFI格式的启动盘:
第一分区是"vfat"格式化的文件系统,新的UGOS PRO系统也是同样功能。
含有boot和 efi两个目录,boot目录下有grub子目录,它里面有grub.cfg文件。该文件的内容如下:
serial --unit=0--speed=115200 --word=8 --parity=no --stop=1 --rtscts=off
terminal_inputconsole serial; terminal_output console serial
setdefault="0"
settimeout="2"
search --no-floppy--fs-uuid --set=root bd74b9fa-7100-e8ee-f60f-57b565f1d001
menuentry"UGREEN-NAS" {
linux /boot/vmlinuzroot=PARTUUID=bd74b9fa-7100-e8ee-f60f-57b565f1d002 rootwait console=tty0console=ttyS0,115200n8 overlay=/dev/mmcblk0p6 overlayfs=ext4 noinitrd
}
它非常简单,我稍微改了一下,添加了console=ttyS0,115200n8 以便我通过控制台跟踪信息。
第二分区是"squashfs"格式的根文件系统,注意:这是只读的不能改动。新的UGOS PRO系统也是同样功能。
因此系统运行时要通过overlay=/dev/mmcblk0p6中的upper目录做overlay处理一些系统运行时必须改动的文件。其实必要时"squashfs"格式也是可以做修改的,只是修改后要重新生成新的文件系统而已。
我们可以使用命令unsquashfs查看一下它的详细信息:
unsquashfs -s /dev/sdb2
Found a validSQUASHFS 4:0 superblock on /dev/sdb2
Creation or lastappend time Tue Oct 25 04:35:40 2022
Filesystem size 380619.98Kbytes (371.70 Mbytes)
Compression xz
Block size 262144
Filesystem isexportable via NFS
Inodes arecompressed
Data is compressed
Fragments arecompressed
Always-use-fragmentsoption is not specified
Xattrs are notstored
Duplicates areremoved
Number of fragments423
Number of inodes9640
Number of ids 1
第三分区是"ext4"格式的文件系统,新的UGOS PRO系统也是同样功能。
这里存放厂家的定制文件。是系统激活的必要文件。文件非常少,只有factory.tar和rootfs.md5sum两个文件。新的UGOSPRO系统又填了两个format.log和rootfs.count。
第四分区是"ext4"格式的文件系统,这是一个空的分区。新的UGOS PRO系统也是同样功能。
第五分区是"ext4"格式的文件系统,这是一个空的分区。新的UGOS PRO系统也是同样功能。
第六分区是"ext4"格式的文件系统,是旧系统的overlay分区。但新的UGOS PRO系统该变了这个分区的功能,用于存放"UGREEN-SERVICE"绿联的系统服务。旧UGOS系统的服务部分是放在根文件系统之中的。
新的UGOS PRO系统增加了第七分区做为overlay的分区。这一点与UGOS有点不同。但大致的结构并无根本性改变。
旧的UGOS破解很容易,我改了几个地方就可以轻松破解了。
1. /etc/shadow文件,用户root的密码:ugreen。修改的方法是,在overlay分区中upper目录中etc子目录中的shadow文件,把用户root的密码:改为ugreen($1$abc$BxiGbxY.yOmCDbNurq3SH0=== > ugreen)。通过overlay在启动时覆盖根文件系统的内容。
2. /etc/rc.button/reset文件防止UGOS出错重启。也是在overlay分区中的upper目录中来实现。删除该文件中的如下两行:
echo "FACTORY RESET" >/dev/kmsg
/sbin/ugreen_factoryreset &
即可。
3. 还需要移除模块 ioports-hotplug-dx4600.ko这是绿联硬件对应的内核模块。使用QEMU虚拟机仿真时这个模块没有用。我使用简单粗暴的办法,直接修改squashfs的根文件系统。
用unsquashfs命令拆包
cd /mnt/custom [切换目录]
unsquashfs /dev/sdb2 [拆包squashfs]
拆包后会在当前目录下产生一个squashfs-root的目录。直接修改里面的文件即可。我直接删除了/lib/modules/5.10.120/ioports-hotplug-dx4600.ko的模块ko文件。
然后重新打包。使用命令:mksquashfssquashfs-root filesystem.squashfs -compxz 即可。
再将打包后的文件拷贝到第二分区。
cp /mnt/custom/filesystem.squashfs /dev/sda2 [拷贝squashfs]
这样简单的破解完成后,就可以试试了。因为绿联的启动盘在emmc/ssd盘上,用虚拟机仿真时需要使用一点点(trick)技巧。普通的VMware,VirtualBox,KVM,PVE等等图形UI的虚拟机,一般都不能虚拟仿真emmc/ssd盘。尽管有些虚拟机的底层也是用的QEMU代码。因此,我这次会直接使用QEMU虚拟机的命令脚本方式,来仿真绿联的UGOS系统。
QEMU虚拟机可以安装到各种操作系统平台上。Windows, Linux,Ubuntu, MacOS, 等等都可以安装。
虽然QEMU虚拟可以模拟emmc/ssd盘,但是这个模拟盘不能用作启动盘。那怎么办呢?我的办法是做一个辅助启动盘。为此我要为QEMU虚拟机创建如下的三个盘:
qemu-img create -fqcow2 UGOS_BIOS_BOOT.qcow2 1G [创建磁盘]
qemu-img create -fqcow2 UGOS_SD.qcow2 32G [创建磁盘]
qemu-img create -fqcow2 UGOS_DATA.qcow2 32G [创建磁盘]
UGOS _BIOS_BOOT.qcow2盘是辅助的启动盘,我做成BISO的启动盘。并且把绿联UGOS系统的第一分区中与启动有关的启动文件拷贝到辅助启动盘中。例如:grub.cfg和vmlinuz这两个文件。
UGOS_SD.qcow2盘是绿联UGOS的系统盘,是由镜像直接生成的。当然包含破解的改造。
UGOS_DATA.qcow2盘用作数据盘,目前是空的,也没有分区和格式化。
QEMU虚拟的启动命令脚本写法如下:(我是在Ubuntu系统上试验的,在其他操作系统平台上,可能稍有不同。例如文件的路径,网卡的Tap通道,等等。)
sudo qemu-system-x86_64 \
-enable-kvm \
-machinepc-i440fx-bionic,accel=kvm,usb=off,vmport=off,dump-guest-core=off \
-name guest=UGOS,debug-threads=on \
-cpu Nehalem-IBRS \
-m 1024 \
-realtime mlock=off \
-smp 2,sockets=2,cores=1,threads=1 \
-uuid 82cd2982-9a76-43ff-9c70-c4bb12984139 \
-smbiostype=0,vendor=American\ Megatrends\ International\ LLC.,version=5.27 \
-smbiostype=1,manufacturer=Ugreen,product=dx4600,version=JS0A40029,serial=*,family=Ugreen\NAS \
-no-reboot \
-devicesdhci-pci \
-device ahci,id=sata0,bus=pci.0,addr=0x6 \
-devicevirtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 \
-drivefile=./UGOS_SD.qcow2,format=qcow2,if=none,id=mydrive \
-device sd-card,drive=mydrive \
-drivefile=./UGOS_BIOS_BOOT.qcow2,format=qcow2,if=none,id=drive-sata0-0-0 \
-device ide-hd,bus=sata0.0,drive=drive-sata0-0-0,id=sata0-0-0,bootindex=1\
-drive file=./UGOS_DATA.qcow2,format=qcow2,if=none,id=drive-sata0-0-1 \
-deviceide-hd,bus=sata0.1,drive=drive-sata0-0-1,id=sata0-0-1 \
-netdevtap,id=hostnet0,ifname=virbr1-nic,script=no \
-device e1000,netdev=hostnet0,mac=52:54:00:7e:2e:7f,bus=pci.0,addr=0x4\
-chardevsocket,id=charserial0,host=127.0.0.1,port=4555,server,nowait \
-device isa-serial,chardev=charserial0,id=serial0 \
-msg timestamp=on
这段命令中的几个关键点,让我再来解释一下。以便大家更了解仿真的过程。
-m 1024是虚拟机的内存。我用的机器是蜗牛星际矿渣机,安装的是Ubuntu18.40的系统,内存只有4G。所以没有办法给QEMU虚拟机分配更多的内存,建议在有条件的情况下,给虚拟机分配更大的内存。例如:-m 8192仿真运行起来会更快。
-smbiostype=0,vendor=American\ Megatrends\ International\ LLC.,version=5.27这是用于模拟绿联硬件的BIOS信息。因为shell在解释命令时不能有空格,所以对于每一个空格都要使用\转译符。
-smbios type=1,manufacturer=Ugreen,product=dx4600,version=JS0A40029,serial=*,family=Ugreen\NAS这也是用于模拟绿联硬件的System信息。只有一个空格要使用\转译符,也就是(family=Ugreen\ NAS)。serial=* 是因为不能泄露朋友的sn信息,我用了一个*星号代替。实际的信息应该是把绿联的sn设备序列号填写在这里。这是一个由16个字母和数字组成的。例如:serial=ABCD234XYZ56789这个设备序列号是瞎编的,不能实际使用。
注意:serial= 必须填写正确的设备序列号。这个号码可以用 dmidecode –t 0,1 命令从绿联的硬件设备中获取。当然,也可以从第三分区的factory.tar文件中得到。你也可以到网上搜一搜,有很多人把绿联的硬件刷机成其他的NAS了,这个设备序列号就废了。其实,这个sn设备序列号就仅仅对安装UGOS系统有用。
-devicesdhci-pci模拟sd卡的驱动。
-drive file=./UGOS_SD.qcow2,format=qcow2,if=none,id=mydrive模拟sd卡的盘文件。
-drivefile=./UGOS_BIOS_BOOT.qcow2,format=qcow2,if=none,id=drive-sata0-0-0 这是BIOS启动盘文件。
-drive file=./UGOS_DATA.qcow2,format=qcow2,if=none,id=drive-sata0-0-1这是数据盘文件。
-netdevtap,id=hostnet0,ifname=virbr1-nic,script=no 网卡驱动。使用ifname=virbr1-nic是其中virbr1-nic是Tap的接口名。这个名字是自己定义的。不同的平台定义的方法也不同。使用是请修改为适合的名字。
-chardevsocket,id=charserial0,host=127.0.0.1,port=4555,server,nowait是用于跟踪ttyS0信息的。启动后可以使用:telnetlocalhost 4555监视ttyS0的输出信息。了解启动进度,等等情况。
好了,让我们启动一下破解的UGOS系统试试吧。
由于我不想联网到绿联的服务器。所以我设定了限制,只能在本地局域网内测试。不容许破解的UGOS
系统连接到绿联的服务器,获取我破解系统的信息。我的破解系统打开了sshd
的服务。该服务默认设定到了922
端口。也可以通过http://IP:9999通过浏览器访问和设置系统。由于限制连接到绿联的服务器,浏览器界面有些东西不能执行。我没有用绿联的app
做连接试验,因为我不想让接绿收集我的信息。所以只能给个ssh
的本地访问截图做为证明。
给出一个通过ssh访问的截图:
以上是在Ubuntu系统上测试的结果。我知道很多朋友喜欢使用Windows系统。Windows系统上QEMU虚拟机启动脚本的写法与Ubuntu系统上稍有不同。为了方便大家做试验,我也给大家写了一个MyUGOS_DX4600.bat的例子:
@echo off
set "BOOT_DEVICE=UGOS_BIOS_BOOT.qcow2"
set "SD_DEVICE=UGOS_SD.qcow2"
set "DATA_DEVICE=UGOS_DATA.qcow2"
set "QEMU_BIN=qemu-system-x86_64.exe"
set "GUEST_NAME=UGOS"
echo "Emulate UGOS %GUEST_NAME% NAS"
rem ==================================
rem Run the virtual machine
rem ==================================
start %QEMU_BIN% ^
-name guest=%GUEST_NAME%,debug-threads=on ^
-machine pc-i440fx-6.0,usb=off,vmport=off ^
-cpu Nehalem-IBRS ^
-m 4096 ^
-smp 2,sockets=2,cores=1,threads=1 ^
-uuid d2dc4ea5-f3ec-474d-ab5c-cc3e68708579 ^
-smbios type=0,vendor="American MegatrendsInternational LLC.",version=5.27 ^
-smbiostype=1,manufacturer=UGREEN,product=dx4600,version=JS0A40029,serial=*,family="UGREENNAS" ^
-no-reboot ^
-device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 ^
-device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4^
-device sdhci-pci ^
-device ahci,id=sata0,bus=pci.0,addr=0x6 ^
-devicevirtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x7 ^
-drivefile=%SD_DEVICE%,format=qcow2,if=none,id=mydrive ^
-device sd-card,drive=mydrive ^
-drivefile=%BOOT_DEVICE%,format=qcow2,if=none,id=drive-usb-disk0 ^
-deviceusb-storage,bus=usb.0,port=3,drive=drive-usb-disk0,id=usb-disk0,bootindex=1,removable=off^
-drivefile=%DATA_DEVICE%,format=qcow2,if=none,id=drive-sata0-0-1 ^
-deviceide-hd,bus=sata0.1,drive=drive-sata0-0-1,id=sata0-0-1 ^
-netdevtap,id=hostnet0,ifname=TAP-Bridge1,script=no,downscript=no ^
-device e1000, netdev=hostnet0, mac=98:6E:E8:21:36: D9 ^
-serial telnet:localhost:4555,server=on,wait=off ^
-msg timestamp=on
大家可以与Ubuntu系统上的脚本对比着学习QEMU虚拟机的启动命令脚本的写法。
例如:我的Windows笔记本有8G内存。所以我给QEMU虚拟机分配了4G的内存,建议在有条件的情况下,给虚拟机分配更大的内存。例如:-m 8192仿真运行起来会更快。
注意:Ubuntu系统的脚本用\做空格转译符。也用\做shell的续行符。Windows系统不用\做空格转译符,只需要把含有空格的字符串用“”双引号括起来。续行符是^字符。
还有一点区别是这次我把启动盘放在了USB上,因此添加了几行USB设备的启动。大家可以根据自己的要求,定制适合自己的启动脚本,我这里的例子,只是抛砖引玉。
-netdevtap,id=hostnet0,ifname=TAP-Bridge1,script=no,downscript=no网卡驱动的ifname=TAP-Bridge1不同。
我在Windows系统定义了两个TAP-Bridge,名字可以任意选。我命名为:TAP-Bridge1,TAP-Bridge2。请看截图:
在Windows系统上用PuTTY连接UGOS的截图如下:
好了关于UGOS的回顾就讲到这里。这是2022年时我做的破解了。当时没有把文章发布到网上,只在极小的朋友圈分享了一下。因为这个绿联的UGOS系统实在太非常粗糙了,根本无法与其它的NAS系统竞争一席之地。虽然破解现在早已经过时了。但使用的工具,技术手段,破解的方法和技巧并不过时。甚至可以为破解新的UGOSPRO系统提供宝贵技术参考。
为什么要回顾一下UGOS呢?其实是有原因的。因为新的UGOS Pro系统与旧的UGOS在整体结构上并无大的改变。只是将基础的linux从OpenWrt系统,变成了DebianGNU/Linux 12 (bookworm)所以,我也会使用相同的破解的方法,工具。先回顾一下便于大家理解后续的内容。
● DXP系列:DXP2800、DXP4800、DXP4800Plus、DXP6800Plus、DXP6800Pro、DXP8800、DXP8800Plus、DXP8800Pro、DXP480TPlus。
对于这个官方说法,根据我的破解,我要指出并强调:从官方获取的ISO
镜像文件中不含有任何的用户敏感信息,其实每次用SN
码申请的ISO
镜像都是一样的,不同的SN
码申请的ISO
镜像也是一样的。所以,再次刷机时只要申请一下就可以了,不用重新下载ISO
镜像。每次用SN
码申请后,只是后台的数据库更新了临时的刷机白名单而已。刷机后,临时白名单消除。所以再次刷机时还要申请临时白名单而已。大家可以放心交换ISO
镜像文件。不存在任何的私密信息泄露。
第三节
破解/破译ISO镜像
为了做分析研究,我从朋友那里获得了一个ISO镜像。它的文件名是: UGOSPRO-USB-1.0.0.8-1895-release.iso。这是一个已经刷机过的报废ISO镜像。通过破解,我发现这个刷机ISO镜像其实是通用的镜像。而且ISO镜像中不存在任何的私密信息。以后我在第四节中会详细解释我的发现。
让我们开始分析这个ISO文件吧。很简单,使用linix系统的file命令试试看:
root@J1900-Ubuntu18:~/UGREEN$file UGOSPRO-USB-1.0.0.8-1895-release.iso
UGOSPRO-USB-1.0.0.8-1895-release.iso: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS(0x3ff,255,63), startsector 1, 2998271 sectors, extended partition table (last)
这个结果非常令我吃惊,这根本不是一个iso格式的文件,而是一个DOS/MBR的磁盘镜像文件。把它的附加名命名为iso是别有用心的反破解技巧?还是技术人员水平太low呢?这完全违反了文件附加名的命名规则啊。一个简单的linix系统的file命令就可以轻松识破的。
既然已经知道这个ISO文件是磁盘镜像的拷贝,那就再用linix系统的fdisk命令查一查盘的分区结构吧。
root@J1900-Ubuntu18:~/UGREEN$fdisk -l UGOSPRO-USB-1.0.0.8-1895-release.iso
DiskUGOSPRO-USB-1.0.0.8-1895-release.iso: 1.4 GiB, 1535115264 bytes, 2998272sectors
Units: sectors of 1* 512 = 512 bytes
Sector size(logical/physical): 512 bytes / 512 bytes
I/O size(minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier:8453A2B8-16FB-4921-909C-6D1569A062D0
Device Start End Sectors Size Type
UGOSPRO-USB-1.0.0.8-1895-release.iso1 2048 409599 407552 199M EFI System
UGOSPRO-USB-1.0.0.8-1895-release.iso2409600 2996223 2586624 1.2G Linuxfilesystem
它是gpt格式的,有两个分区。因为它其实是一个磁盘映像文件。我们又准备使用QEMU虚拟机为工具来破解分析。那么就可以直接用qemu-img convert -f raw -O qcow2 做转换格式。把它变成一个UGOSPRO-INSTALL.qcow2启动盘吧。
root@J1900-Ubuntu18:~/UGREEN$qemu-img convert -f raw -O qcow2 UGOSPRO-USB-1.0.0.8-1895-release.isoUGOSPRO-INSTALL.qcow2
启动一个系统救援的Linux系统。把两个分区分别挂载到/mnt/floppy/目录,和/mnt/custom/目录。查看启动盘的内容:
root@J1900-Ubuntu18:~/UGREEN$ ls-l /mnt/floppy/
total 156948
drwxr-xr-x 3 root root 4096 Dec 1 2024 boot
drwxr-xr-x 3 root root 4096 Dec 1 2024 EFI
-rwxr-xr-x 1 root root 153633571Dec 1 2024 initrd.img
-rwxr-xr-x 1 root root 7066112 Dec 1 2024 vmlinuz
root@J1900-Ubuntu18:~/UGREEN$ ls-l /mnt/custom/
total 1192920
drwx------ 2 root root 16384 Dec 1 2024 lost+found
-rw-r--r-- 1 root root 1221522363Dec 1 2024 UGOSPRO_INSTALL_1.0.0.1895.img
-rw-r--r-- 1 root root 33 Dec 1 2024UGOSPRO_INSTALL_1.0.0.1895.img.md5
它的第一分区是一个UEFI的启动分区,第二分区有一个UGOSPRO_INSTALL_1.0.0.1895.img文件,以及该文件的校验md5文件。
第一分区启动后,使用initrd.img文件系统提供的安装程序,打开一个Web界面实现刷机。根据第一节回顾UGOS系统中的介绍。我试着用这个安装盘创建一个QEMU虚拟机。因为这不是本文的重点,具体细节就不一一赘述了。反正这个ISO镜像也是不能再刷机的。只是通过这个虚拟机,帮助了解一下刷机过程。如果你想直接刷机到QEMU虚拟机,可以参考第一节回顾中讲解的细节自行试验。
启动QEMU虚拟机,我做了一个截图:
截图显示网络没有连接,其实事实并不是这样。只是因为该ISO镜像是不能再刷机的。
事实是这个ISO镜像的后台处理白名单已经报废了。因为绿联的刷机程序做的非常粗糙,并不能区分显示不同的情况,统统用网络没有连接显示在主控制台上。
实际在使用绿联硬件设备时,一般用户是不会连接主控制台的。所有,也不会看到这些信息。
尽管主控制台显示网络没有连接,刷机用户仍然可以进入刷机的Web界面,也是没有问题的。请看如下截图:
通过跟踪ttyS0的控制台查询/tmp/upgrader目录下的formats.log记录文件可以知道,原因是该iso镜像已经不再能通过刷机认证了。
具体信息如下:
"code":200,
"data":{
"city":"Vancouver",
"cloudUrl":"https://api-us.ugnas.com",
"clusterName":"美国集群",
"continent":"NorthAmerica",
"continentCode":"NA",
"country":"Canada",
"countryCode":"CA",
"deviceRegionList":[
],
},
"msg":"SUCCESS"
}
2025-06-0602:48:00.685 [INFO] {131f3599fe394618467a0d140d6eeac8} response from cloud: {
"code":9092,
"msg":"设备不在秘钥拉取名单内"
}
2025-06-0602:48:00.686 [WARN] {131f3599fe394618467a0d140d6eeac8} failed to fetch prosecret: Unable to retrieve device information, please contact TechnicalSupport. sleepTime: 2
2025-06-06 02:48:02.686[INFO] {131f3599fe394618467a0d140d6eeac8} start fetch activate key
2025-06-0602:48:02.985 [INFO] {131f3599fe394618467a0d140d6eeac8} response from cloud: {
"code":9092,
"msg":"设备不在秘钥拉取名单内"
}
2025-06-0602:48:02.985 [WARN] {131f3599fe394618467a0d140d6eeac8} failed to fetch prosecret: Unable to retrieve device information, please contact TechnicalSupport. sleepTime: 3
2025-06-0602:48:06.001 [INFO] {131f3599fe394618467a0d140d6eeac8} start fetch activate key
2025-06-06 02:48:06.363[INFO] {131f3599fe394618467a0d140d6eeac8} response from cloud: {
"code":9092,
"msg":"设备不在秘钥拉取名单内"
}
2025-06-0602:48:06.363 [WARN] {131f3599fe394618467a0d140d6eeac8} failed to fetch prosecret: Unable to retrieve device information, please contact TechnicalSupport. sleepTime: 4
2025-06-0602:48:08.710 [INFO] {131f3599fe394618467a0d140d6eeac8} [reporter] report healthurl: https://api-us.ugnas.com/api/device/v1/device/health info:{"ak":"XXXXXXXXXXXXXXXX","mac":"6C:1F:F7:10:9A:70","ts":"1749149288","sign":"0611f3d5d9a4954bbb8de70d7b9b5315c49c646525ea02df66183ce2606002b5","alg":"SHA256","mac2":"6C:1F:F7:10:9A:71","ip":"192.168.122.111","port":9999,"name":"DX4600","firmwareVer":"JS0A40029","nasVer":"dx4600","hardwareVer":"5.27","remark":"ugosupgrade to pro"} 2025-06-0602:48:09.019 [WARN] {131f3599fe394618467a0d140d6eeac8} [reported] failed toreport health, cloud code: 9007, msg: 签名与认证不匹配,请检查
"code":9007,
"msg":"签名与认证不匹配,请检查"
}
信息显示,显然与官方的说法一致:每一个ISO镜像只能使用一次,刷机完成后白名单就消除了。再次刷机需要重新提供SN码申请。所以,不能通过刷机认证了。
我使用的是第一节中我破解的机型是DX4600这个型号的绿联硬件的(sn) 设备序列号,显然是一个不在刷机白名单中的设备序列号。因为私密的原因,上述信息中我用XXXXXXXXXXXXXXXX隐藏了该设备的序列号。
如果你想使用ISO镜像刷机到QEMU虚拟机,从我目前的分析来看,只要用SN码申请的ISO镜像没有用过,创建QEMU虚拟机时的 -smbios参数正确无误。应当是可以的。但我只是猜测而已。我并不需要这样做。我自信可以破解或者说破译绿联的ISO镜像。
既然不能直接使用ISO镜像刷机,那我就需要继续破解ISO镜像,手工生成UGOSPro系统的启动盘吧。唯一可以下手的地方,就只有安装盘第二分区的UGOSPRO_INSTALL_1.0.0.1895.img文件。
在继续破解讲解破解/破译UGOSPRO_INSTALL_1.0.0.1895.img文件之前,做为预备知识,我要先介绍一下UGOSPro系统的启动盘结构。便于大家理解后续的对于破解的讲解。
由于NASYUN的篇幅限制,请看楼下,第四节 【绿联UGOS Pro系统NAS的启动盘结构刨析】,精彩继续!