本人作为
seafile
长期使用用户,一直对这款私人网盘情有独钟。个人在阿里云上搭建网站,同时网盘本身功能也很完善(各终端的客户端、分享链接、文件加密等等)。个人一直使用的seafile-pro版本,免费使用限制用户数为3。前一段实在是想增加几个用户,所以动起了破解的念头。本文只为学习技术,还请各位读者不要将技术用于违法的地方。
目录
破解开始
首先选用的版本为目前(2019.01.17)最新版本seafile-pro-6.3.9
。通过查看代码,可以发现项目是利用python-django
作为网站框架的,而真正底层的操作,例如数据库操作等是c封装成库,利用rpc调用的。本文使用IDA
对c封装库做修改。
python部分
首先根据关键词license
搜索.py文件:
find . -name "*license*.py"
找到嫌疑文件./seahub/seahub/utils/licenseparse.py
。
查看文件后果然发现了用户限制相关的代码:
将其中的3
改成尽可能大的数即可。
c部分
经过IDA逐个检查,最终确定用户相关的代码就在/seafile/bin/ccnet-server
中。由于这是个二进制的文件,因此只能只能通过反汇编的方法将二进制文件转换成汇编代码。公司通过只发布二进制文件而不开源这部分代码的方法来尽可能保证不被破解。
使用IDA64
打开ccnet-server
,通过多次搜索license
关键字,最终定位到目标位置。
当然,汇编代码不好读懂,也可以使用IDA
先将其转换成c代码,例如:
转换成c语言之后,代码逻辑清晰了很多。代码中,当找不到license文件时,设置几个参数都为3。因此我们需要在汇编代码中修改这几个3的值。
这里我将其改为5B25H,也就是23333(这里最好是直接改二进制格式,不容易出错):
验证
保存至ccnet-server
后,替换服务器原来位置的文件,添加可执行权限(chmod +x
),重启服务器./seafile.sh restart
和./seahub.sh restart
。可以看到人数限制变大了(下面的16735013是0xFF5B25,是我之前的一次修改值):
从网页端进入管理页面,添加用户,也突破了3人的上限,经过验证破解可以正常使用:
重点:
普通用户如果不需要和LDAP对接,到此基本可以满足绝大多数用户使用。但是如果要和LDAP对接,会有每隔1小时宕机现象。
seafile-control.c(617):seafile license file is invalid. Stop Seafile server.
进过排查为seafile-controller守护程序和任务程序引起
修改后一切正常
后记
文件仅供学习使用(请自助重命名)。还请不要在网络散布完整破解安装包。
更新:
1、#20191017修复官包组织架构资料库删除恢复后无法访问BUG
替换/安装目录/seafile-pro-server-6.3.9/seahub/seahub/api2/endpoints/admin 下的 trash_libraries.py文件即可(给与执行权限)
支持LDAP和CAS单点认证对接的seafile 6.3.9不限用户企业版linux/ubuntu版本下载
(安装过程中有疑问,可以技术交流,微信 ? )
[…] 破解经历:seafile-pro-6.3.9 破解企业版试用人数上限,开启LADP-解决BUG。 […]