• 那是云首页
  • 快捷导航
  • 更多
    设为首页收藏本站
  • |

#楼主# 2026-1-12 01:58

跳转到指定楼层
前言

绿联云系统的UGOS发行有一段时间了。但系统设计有一个致命的缺点,所以我一直没有把破解版发给朋友们试验。因为UGOS必须连接绿联的服务器才能使用。做为一个NAS私有云,每次登录都离不开绿联的服务器,这是一个非常失败的设计。也是很多人用绿联硬件改刷其他NAS的原因之一。不懂NAS技术的小白们除外。

绿联云系统最近推出了新系统UGOS Pro。虽然它欠缺打磨,实在还不足以称其为一个好用的NAS系统。我和大多数用户体验下来的感受一样,这款产品硬件可以。担软件系统实在太差了。

第一节
回顾UGOS系统

绿联的UGOS系统,是一个非常粗糙的,基于OpenWrt系统开发出来的NAS系统。绿联产品的硬件中内置了emmc/ssd系统盘。因为绿联官方并不提供它的固件,所以如果要研究分析UGOS系统,只能从它的硬件中提取镜像。

提取镜像的方法非常简单,对于emmc机型,可以使用ddif=/dev/mmcblk0  | gzip >/tmp/mmcblk0.gz 我用这个命令备份同时压缩的保存到本地后,再分享。朋友们提供给我了一个DX4600UGOS系统的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.tarrootfs.md5sum两个文件。新的UGOSPRO系统又填了两个format.logrootfs.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)技巧。普通的VMwareVirtualBoxKVMPVE等等图形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.cfgvmlinuz这两个文件。

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-nicTap的接口名。这个名字是自己定义的。不同的平台定义的方法也不同。使用是请修改为适合的名字。

-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访问的截图:
截图202601120205204901.png

以上是在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-Bridge1TAP-Bridge2。请看截图:
image.png

Windows系统上用PuTTY连接UGOS的截图如下:
截图202601120209166256.png

好了关于UGOS的回顾就讲到这里。这是2022年时我做的破解了。当时没有把文章发布到网上,只在极小的朋友圈分享了一下。因为这个绿联的UGOS系统实在太非常粗糙了,根本无法与其它的NAS系统竞争一席之地。虽然破解现在早已经过时了。但使用的工具,技术手段,破解的方法和技巧并不过时。甚至可以为破解新的UGOSPRO系统提供宝贵技术参考。

为什么要回顾一下UGOS呢?其实是有原因的。因为新的UGOS Pro系统与旧的UGOS在整体结构上并无大的改变。只是将基础的linuxOpenWrt系统,变成了DebianGNU/Linux 12 (bookworm)所以,我也会使用相同的破解的方法,工具。先回顾一下便于大家理解后续的内容。

第二节
如何获取官方的UGOSPor系统

绿联云系统最近推出了新系统UGOS Pro,据说不用通过绿联的服务器也可以离线登录了。并提供刷机用的官方ISO镜像。因此,我决定破解一下试试。刷机用的ISO镜像,根据官方的说法,它适用以下绿联NAS产品刷机:

●         DH2600
●         DX4600*:DX4600、DX4600+、DX4600Pro;
●         DXP系列:DXP2800、DXP4800、DXP4800Plus、DXP6800Plus、DXP6800Pro、DXP8800、DXP8800Plus、DXP8800Pro、DXP480TPlus。

那么如何获取官方ISO镜像呢?官方的说法如下:

1.        联系绿联NAS官方技术支持,并提供设备序列号(SN)。
2.        根据技术支持提供的链接下载ISO镜像(链接一次有效)。

我只能提供破解的详细技术和原理,至于大家如何才能拿到绿联的设备序列号(SN),那就要靠大家“八仙过海,各显其能”了。你也可以到网上搜一搜,找朋友要个factory.tar文件等等。有很多人把绿联的硬件刷机成其他的NAS了,这个设备序列号就废了。其实,这个sn设备序列号就仅仅对安装UGOS和刷机UGOSPro系统有用。

为什么刷机前要向官方技术支持提供SN码?官方的说法如下:

答:用户联系技术支持并提供设备SN,技术支持在管理后台将该SN添加至刷机白名单并生成ISO镜像链接。该ISO镜像只对这台设备可用,其他设备无法使用这个镜像进行刷机。刷机成功后,如果再次刷机需要重新提供SN码申请。
也就是说,每一个ISO镜像只能使用一次,刷机完成后白名单就消除了。再次刷机需要重新提供SN码申请。

对于这个官方说法,根据我的破解,我要指出并强调:从官方获取的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虚拟机,我做了一个截图:
001.jpg

截图显示网络没有连接,其实事实并不是这样。只是因为该ISO镜像是不能再刷机的。
事实是这个ISO镜像的后台处理白名单已经报废了。因为绿联的刷机程序做的非常粗糙,并不能区分显示不同的情况,统统用网络没有连接显示在主控制台上。

实际在使用绿联硬件设备时,一般用户是不会连接主控制台的。所有,也不会看到这些信息。

尽管主控制台显示网络没有连接,刷机用户仍然可以进入刷机的Web界面,也是没有问题的。请看如下截图:
002.jpg

通过跟踪ttyS0的控制台查询/tmp/upgrader目录下的formats.log记录文件可以知道,原因是该iso镜像已经不再能通过刷机认证了。

具体信息如下:

2025-06-0602:48:00.366 [INFO] {131f3599fe394618467a0d140d6eeac8} https://center.ugnas.com/data/cluster/device/route{
                "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.368 [INFO] {131f3599fe394618467a0d140d6eeac8} fetchActivateKey https://api-us.ugnas.com/api/device/v2/sa/fetch/secret
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.699 [INFO] {131f3599fe394618467a0d140d6eeac8} fetchActivateKey https://api-us.ugnas.com/api/device/v2/sa/fetch/secret
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-0602:48:06.056 [INFO] {131f3599fe394618467a0d140d6eeac8} fetchActivateKey https://api-us.ugnas.com/api/device/v2/sa/fetch/secret
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: 签名与认证不匹配,请检查
2025-06-0602:48:09.020 [INFO] {131f3599fe394618467a0d140d6eeac8} [reporter] request: https://api-us.ugnas.com/api/device/v1/device/health, response: {
                "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的启动盘结构刨析】,精彩继续!

评分

参与人数 1贡献 +1 收起 理由
lenye + 1 很给力!

查看全部评分

最自然的一种表达方式,即是不写赞赏语,红色赞赏按钮就在那,大家懂的。

1人打赏

那是云论坛 - 国内知名的NAS交流平台
http://www.nasyun.com
分享淘帖
回复 印象

使用道具

0

精华

120

回帖

988

积分

入门用户

Rank: 1

云币
0
贡献
25
活跃
802
精华
0
johnhowe5503 发表于 2026-1-30 11:37 来自 中国重庆
大佬牛B,但是既然这个系统这么差,也没必要再研究下去了。
回复 支持 反对 印象

使用道具 举报

0

精华

51

回帖

1388

积分

发烧玩家

Rank: 2

云币
0
贡献
34
活跃
1190
精华
0
lwlbeng 发表于 2026-1-30 10:32 来自 中国广东广州
建议绿联出一个没有系统的机子,把系统费用减去,减去个 500,我是不想用绿联的系统的,硬件可以买一下
回复 支持 反对 印象

使用道具 举报

0

精华

188

回帖

3069

积分

搞机大神

Rank: 3Rank: 3

云币
0
贡献
14
活跃
2901
精华
0
chirle 发表于 2026-1-27 16:30 来自 中国台湾
来晚了~~ 已经被屏蔽了!

有人有存檔吗!?
回复 支持 反对 印象

使用道具 举报

0

精华

1

回帖

30

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
29
精华
0
3298837796 发表于 2026-1-20 17:39 来自 中国湖北武汉
来了老弟,这是个好东西
回复 支持 反对 印象

使用道具 举报

0

精华

94

回帖

1077

积分

发烧玩家

Rank: 2

云币
0
贡献
48
活跃
786
精华
0
zml1985 发表于 2026-1-18 15:05 来自 中国海南海口
不得不说,永远不会碰绿联的东西,技术交流还发文要求撤稿
回复 支持 反对 印象

使用道具 举报

0

精华

13

回帖

116

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
109
精华
0
nas8087 发表于 2026-1-17 10:32 来自 中国广东深圳
f541883216 发表于 2026-1-12 01:59
**** 该帖被屏蔽 ****

提示: 该帖被管理员或版主屏蔽
回复 支持 反对 印象

使用道具 举报

0

精华

70

回帖

2218

积分

搞机大神

Rank: 3Rank: 3

云币
0
贡献
2
活跃
2172
精华
0
menstry 发表于 2026-1-16 19:20 来自 中国河北廊坊
学习学习。。。。。。
回复 印象

使用道具 举报

0

精华

4

回帖

58

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
56
精华
0
qishuo88 发表于 2026-1-16 15:24 来自 中国河北
感谢大佬的无私奉献,十分感谢大佬
回复 支持 反对 印象

使用道具 举报

1

精华

88

回帖

2035

积分

搞机大神

Rank: 3Rank: 3

云币
132
贡献
257
活跃
597
精华
1

活跃会员NAS发烧友技术达人编辑能手

QQ
scjtqs 发表于 2026-1-16 15:22 来自 中国上海
啥也不说了,支持一下先~!
回复 支持 反对 印象

使用道具 举报

0

精华

6

回帖

125

积分

入门用户

Rank: 1

云币
0
贡献
0
活跃
122
精华
0
QQ
周飞宇2001 发表于 2026-1-16 15:19 来自 中国
辛苦了,感谢大佬!!!
回复 支持 反对 印象

使用道具 举报

123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 搜索 官方QQ群
懒人地图| 手机版|小黑屋| 智能生活 , 上那是云 |闽ICP备2020018196号-1 |网站地图