文章首发在我的个人网站
http://841973620.net/index.php/archives/dls-cracked.html
前排提醒,闲鱼有不法商家修改许可然后出售的,挂这儿给大家避个雷
众嗦粥汁,新版的licserver不再通过验证MAC地址进行授权,而改为上传本地凭证后从NVIDIA许可门户生成唯一的授权文件,堵上了旧版licserver可以多次使用同一个授权文件的漏洞。那么新版的licserver有办法破解吗?
当然是有的。新版的授权分为CLS(云端)和DLS(本地),其中本地部署的DLS是无需联网的,也就是说只要能骗过本地的授权校验就能注册授权服务器。至于逆向授权那么复杂的过程我是不会了,所以我选了更方便(实际上更麻烦)的方法:直接改数据库
以下皆以Hyper-V下的NLS镜像做演示
首先是要解决DLS服务器的密码问题。由于GRUB也加了密码,所以只能通过另一个系统来操作,修改DLS系统下 /etc/shadow 文件,删除下图中高亮部分字段,以允许root空密码登录
vim /etc/shadow
由于DLS系统会每隔15分钟随机重置root密码,所以接着修改 /etc/dls/scripts/rotate_pwd.sh 文件,将下图中高亮部分字段改为你要设置的密码,以确保修改后的密码是你知道的
vim /etc/dls/scripts/rotate_pwd.sh
接着启动DLS服务器虚拟机,以空密码登录root账户,你会发现DLS服务器实际上分为应用服务和数据库两部分,分别运行在容器中。其中 appliance 容器是一次性的,每次启动都会重置,而 pgsql 容器不会重置,以防止Web遭到篡改
进入 pgsql 容器后连接数据库,会发现信息存放在名为 nlsdb 的Database下,用户 dls_writer 具有所有权限,我们在这里新建一个名为 nvidia 的用户用来连接数据库而不是修改 dls_writer 用户的密码,再向用户 nvidia 赋予权限
CREATE USER nvidia SUPERUSER;
为了更直观的操作,我使用 PostgreSQL Maestro 来操作数据库,要修改的内容位于 request_routing 和以 si_ 开头的 Schemas 中 (每个DLS服务器数据库中的 si_ 都不一样,以确保唯一性)
其中,request_routing 要修改的 Table 为 license_allotment_reference, license_allotment_service_instance,service_instance
si_ 要修改的 Table 为 entitlement,entitlement_feature,forced_feature_release,fulfillment_condition,fulfillment_condition_binding,license_allotment,license_allotment_feature,license_allotment_key,license_org,license_pool,license_pool_feature,license_pool_feature_running_counts,public_private_key_pair,selection_rule,service_instance_artifact,virtual_group
(不敢放具体内容,1.怕惹麻烦 2.写不下,懒)
总之,经过修改后的DLS服务器管理页面信息如下图,可自定义需要的授权类型、数量和可用时间, 除了 Configure High Availability 外的功能均可正常使用 (要是修改了两台DLS的话部署高可用性选项也可用)
DLS
另外据我试验的结果,获取许可时当授权服务器上没有对应的许可或份额已经分配完,则会使用具有此许可内容的其它许可。比如获取 vCS 许可时授权服务器份额分配完了,则会使用 vDWS 许可的份额;若 vDWS 的份额也分配完了,则会使用 NVAIE 许可的份额。客户端获取的许可类型不会改变,只改变授权服务器上的许可占用
END 作者:841973620 https://www.bilibili.com/read/cv22857708/ 出处:bilibili