分享

解决群晖File Station文件列表中文拼音排序问题

 昵称46988079 2023-10-22 发布于湖南
2023-04-18 18:51:57

方法来自:https://blog./2020/01/01/破解群晖file-station中文未按拼音排序问题/

本文只分享处理的过程,其中用到的工具请自行查找下载。操作过程中有不对的地方,请指正。

以下截图均为本人操作过程截取,涉及的操作语句来源于网络。

--------------更新几点--2023-4-20------

1、修改前记得好做好备份、备份、备份,文件名不要修改。可以添加到压缩包,保存好。

2、修补后文件排序是按符号、数字、中文拼音、英文字母这样子排的。

3、听说升级是会失效的。如果升级涉及到这个文件,肯定会被覆盖掉的,但具体什么版本会被覆盖要后续观察才知道,反正掌握了方法,随时可以改 。

------------------------------------------

前言

用群晖好几年了,一直是用来存放电影跟资料,也没怎么去折腾。但是用File Station或者手机上用DS File查看文件时,文件名的中文排序问题一直让我很迷惑,搞不懂是按什么标准排序的。据网友咨询客服答复说:

非常抱歉,目前我们中文是按照ASCII进行排序的。

一开始文件不多,影响还不是很大,随着文件的增多,查询文件变得很麻烦。最近偶然看到有大佬通过反编译群晖的某个文件,实现了中文文件名按拼音排序的问题,但其中只写了关键部分,对此我这种汇编小白根本就看不懂,折腾了一天,总算研究明白了其中的大概原理,就想着写出来跟大家分享一下,包括其中用到的工具,如何操作、计算等等,每一步都写清楚,让有兴趣的朋友们都可以尝试一下。写的有点啰嗦,请轻喷。

过程中用到的软件有:PuTTY、WinSCP、IDA Pro、WinHex(这个非必要)

解决群晖File Station文件列表中文拼音排序问题

我的群晖系统版本是DSM 7.1.1-42962 Update 3,涉及修改文件为

/usr/lib/libsynocore.so.7

如果是DSM 6.XX的系统(方法相同,但具体修改的代码有一点差异),涉及修改文件为

/usr/lib/libsynocore.so.6

正片,不对,正文开始。

1、群晖开启SSH功能

开启 SSH 会大大增加 NAS 的安全风险,最好开启自动封锁并添加白名单 IP 确保安全。文件修改完成后,最好关闭SSH功能。

进入控制面板,点击终端机和SNMP图标。勾选启用 SSH功能,端口号按默认22即可,应用。

解决群晖File Station文件列表中文拼音排序问题

2、SSH 远程连接

在 Windows 系统中,可以通过第三方工具比如 PuTTY来进行连接。

Windows 10 提供 ssh 命令,可以进行 ssh 连接。

我用的是PuTTY工具。

解决群晖File Station文件列表中文拼音排序问题

运行 putty.exe,在程序界面内输入服务器 IP 地址和端口(22 是 SSH 默认端口),选中 SSH 连接类型,可设置连接会话名称及点击保存,然后点击 Open 按钮开始连接登录。

首次连接会提示安全警告,如果出现安全警告,点“是”或者“否”都行;如果没有出现安全警告,则继续下一步。

之后输入用户名和密码即可登录服务器(输入密码时不会显示输入状态,这是一个安全设计。鼠标单击右键可以粘贴输入。可以先在别的地方复制,再到这里单击右键实现粘贴功能)。

解决群晖File Station文件列表中文拼音排序问题

这里的用户名需要输入管理员的用户名,默认输入群晖的管理员admin。建议用户修改完成后新建一个管理员用户后禁用admin账户,以免群晖暴漏在网络中被人破解,此处仅供演示。

3、设置root用户密码

输入正确的用户名跟密码之后,就跟群晖连接上了。现在就可以通过语句查询或者导出要修改的文件了,但是没有root权限的话,只能导出,修改后没法导入,所以要先设置root密码。而且PuTTY的界面跟DOS一样,没有图形界面,操作不方便,所以我们设置完root密码之后,再用另一个软件WinSCP来导出导入文件。具体步骤如下:

3.1、输入 sudo –i 按回车(sudo后面有一个空格),切换到临时root,输入admin的密码;

解决群晖File Station文件列表中文拼音排序问题

3.2、输入(这段语句没法保存,请看图), 按回车(vim后面有一个空格),打开配置文件。

解决群晖File Station文件列表中文拼音排序问题

因为我异常退出过,存在swap交换文件,直接按字母E,(E)ditanyway;

解决群晖File Station文件列表中文拼音排序问题

3.3、按一下电脑键盘上的i键或者Insert键,屏幕左下角出现“——Insert——”字样,进入可编辑状态;

解决群晖File Station文件列表中文拼音排序问题

3.4、按键盘的上下键翻动,找到#PermitRootLogin prohibit password这一行,改为PermitRootLogin yes(前面的#号记得要去掉);

解决群晖File Station文件列表中文拼音排序问题

3.5、按一次键盘的ESC键,然后输入 :wq 按回车(冒号加上字母WQ,直接输入即可,会自动跳到最末尾),退出编辑状态;

解决群晖File Station文件列表中文拼音排序问题

3.6、然后输入 reboot 按回车,重启群晖;

3.7、等待群晖重启完成后,用PuTTY重新登录进来,输入用户名admin和密码;

3.8、输入 sudo -i 按回车(sudo后面有一个空格),切换到临时root,输入admin的密码;

3.9、输入 synouser --setpw root 123456 命令修改root的密码(synouser后面有一个空格,再加两个减号,setpw跟root后面都有空格,本文以密码123456为例,切勿模仿,请使用强密码),输入完成按回车键以后就可以关掉PuTTY,换WinSCP。

解决群晖File Station文件列表中文拼音排序问题

4、导出文件

4.1在电脑上打开WinSCP软件,输入群晖的IP地址,端口号,用户名(填写root)和密码

用上一步synouser --setpw root设置的密码,点登录。如果出现警告,点“是”即可;如果不出现则继续下一步;

解决群晖File Station文件列表中文拼音排序问题

4.2、登陆后,软件界面分为左右两侧列表。左侧为本机电脑的文件,右侧为群晖的文件。

右侧列表找到/usr/lib/libsynocore.so.7文件(也可以点击查找文件),按住并拖动到左侧本机电脑中。

解决群晖File Station文件列表中文拼音排序问题

5、修改文件(使用WinHex软件),此处是试错的过程,修改后没有生效。

不感兴趣的朋友可以直接跳过,看第6点。

5.1、一开始不知道用什么软件修改,系统推荐了WinHex,也能打开文件,但一些关键词查不到,只能大概修改一下,按照大佬的案例试一下。点击导航-转到偏移量,输入164D6,跳转后在附近能查到类似的十六进制值48 8D 3D E2 E9 00 00,但右侧的代码都是乱码。看不懂,直接改。按评论区对应的版本,把E2 E9 00 00 修改 CC BE 00 00

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

5.2、点击搜索-查找文本(快捷键Ctrl+F),查找字符串 string_join.c

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

5.3、把string_join.c中的.c改为zh,发现十六进制值2E 63被修改为7A 68,记住这个值,下面有用。

解决群晖File Station文件列表中文拼音排序问题

5.4、修改完之后保存,导入到群晖,替换原文件。重启群晖系统后发现,排序还是没变。应该是哪里出了问题。因为大佬只截取了软件界面的一小部分,我完全看不出是什么软件。于是又一番百度

搜索后,猜测应该是反汇编软件IDA。

6、修改文件(使用IDA Pro软件)

下载软件后安装,我找的是绿色版,解压后即可用。请注意不要安装或解压到中文目录下面

6.1、打开ida64.exe。

解决群晖File Station文件列表中文拼音排序问题

6.2、打开或拖入文件进行反编译。直接按OK就行。

解决群晖File Station文件列表中文拼音排序问题

6.3、打开文件后,出现很多个窗口,主要是前2个,IDA View-AHex View-1。在IDA View-A界面,单击右键,选择切换到文本视图,终于看到大佬的视图了。

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

6.4、点击搜索-文本(快捷键Alt+T),搜索字符串aPStartAddress。点击搜索-下一个文本(快捷键Ctrl+T),直到找到这一段lea rdi, aPStartAddress+12h;""。记下”call _ucol_open”对应地址“193DD”。

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

6.5、单击字符串aPStartAddress,再切换到HexView-1窗口,可以看到十六进制值48 8D 3D BE B9 00 00,跟WinHex软件查到的不一样,估计这就是WinHex软件修改后无效的原因。

解决群晖File Station文件列表中文拼音排序问题

6.6、点击搜索-文本(快捷键Alt+T),搜索字符串string_join.c。点击搜索-下一个文本(快捷键Ctrl+T),直到找到这一段aStringJoinC db 'string_join.c',0。记下”string_join.c”对应地址“2529E”。

解决群晖File Station文件列表中文拼音排序问题

6.7、把字符串 string_join.c,替换成string_joinzh。

这里我找不到替换的方法,只能切换到Hex View-1窗口,单击右键,编辑(快捷键F2),用WinHex中得到的值,把十六进制值2E 63被修改为7A 68,可以看到右侧的代码中,.c变为zh了。再单击右键,应用更改(快捷键F2),此处就算修改成功了。

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

6.8、修改后,“string_joinzh”对应地址“2529E”,因为要把偏移量定位到zh,zh在字符串中排第12,转换为十六进制值是B,也就是把2529E+B=252A9。再把这个值,减去6.4得到的“call _ucol_open”对应地址“193DD″,252A9-193DD=BECC。BECC 对应四个字节就是 00 00 BE CC。但在程序里字节顺序是反过来的,所以是 CC BE 00 00

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

6.9、再次查找字符串aPStartAddress,切换到HexView-1窗口,把十六进制值48 8D 3D BE B9 00 00修改为48 8D 3D CC BE 00 00。(参考6.7)

解决群晖File Station文件列表中文拼音排序问题

6.10、点击编辑-修补程序-修补程序应用到输入文件。再关闭文件,选择Don't pack database,点击OK确定。

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

解决群晖File Station文件列表中文拼音排序问题

7、导入文件

打开WinSCP软件,把修改后的文件,拖动到右侧列表/usr/lib/文件夹中,覆盖原文件,然后重启群晖即可。

覆盖前记得做好文件备份。切记。

解决群晖File Station文件列表中文拼音排序问题

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多