最近一年只关注于管理,没有进行任何技术学习,心里很愧疚,昨天仔细研究了一下ServiceDesk Plus(超级好的一个IT服务管理软件,贯穿ITIL思想,是做IT服务管理的好工具),略有所得,不敢专美,特提供给大家分享。
ServiceDesk Plus的测试版就是一个具有完整功能的工具包,最新版本是7.0.0,只不过对很多功能做了限制,比如技术专家限制在5个人以下,IT资产限制在了200条以下,使用时间限制在了一个月以内。而对于这些功能的限制是通过许可文件(License file)来实现的,许可文件的格式是xml,完整文件名为AdventNetLicense.xml,下面是测试版的许可文件的内容的后半部分:
<LicenseeDetails ID="ID">
<Product Name="AdventNet ManageEngine ServiceDesk Plus" Version="4.0.0" Type="Enterprise" Category="OEM"/>
<Component Name="ServiceDesk">
<Properties Name="NoOfUsers" Value="5"/>
<Properties Name="NoOfDevices" Value="200"/>
<Properties Name="LocalizedSDP" Value="true"/>
<Properties Name="SDP_Robo" Value="true"/>
</Component>
</LicenseeDetails>
<LicenseKey>vKR4jQjr7pdovKR4pdoGv98LXYjl00WsvY83vdFOjn5sRvswFOjnysvdvY83RvoMgOvs8RHRv4
Ng0I0ITsKLpsysvdvY83RvosvN8iNgviXNXMs4vn4Nv3GAdjdj</LicenseKey>
经过仔细的分析,LicenseKey的长度为124位,与所有双引号中的字符数量(122位,因为dj重复了一次)相当,因此推断加密使用了自己的密码本,根据字符的规律,该加密机制使用的是错位密码表和逆向加密的机制,例如:
“ID”=djdj(重复两遍,实际上就是dj=ID)
“true”=vKR4
“SDP_Robo”=jQjr7pdo
“LocalizedSDP”=pdoGv98LXYjl
“5”=5
“200”=00W
上面所有的字符都是相等的,当所有的字符都写出一一对应的关系表后(注意是逆向的),一张完整的密码表就出现了,根据新的密码表可以对应写出新的许可文件AdventNetLicense.xml,部分内容如下:
LicenseeDetails ID="ID">
<Product Name="AdventNet ManageEngine ServiceDesk Plus" Version="4.0.0" Type="Enterprise" Category="OEM" />
<Component Name="ServiceDesk">
<Properties Name="NoOfUsers" Value="unlimited" />
<Properties Name="NoOfDevices" Value="unlimited" />
<Properties Name="LocalizedSDP" Value="true" />
<Properties Name="SDP_Robo" Value="true" />
</Component>
</LicenseeDetails>
<LicenseKey>vKR4jQjr7pdovKR4pdoGv98LXYjlGv48m8LNKsvY83vdFOjnGv48m8LNKsRvswFOjnysvdvY83Rvo
MgOvs8RHRv4Ng0I0ITsKLpsysvdvY83RvosvN8iNgviXNXMs4vn4Nv3GAdjdj</LicenseKey>
将此文件提交ServiceDesk Plus验证后,成功升级。
由于研发ServiceDesk Plus的是美国著名的AdventNet公司,有很多非常不错的产品,部分工具使用了与此相同的加密机制,大家有机会可以以学习的目的研究一下,切不可用于商业行为,毕竟店太大了,会欺客的。