本帖最后由 hehanjm 于 2019-7-17 14:45 编辑
事情背景
最近在使用 Vert.x 工具集的全家桶做微服务的相关开发,Vert.x默认使用集群管理器是 hazelcast 。在经过相关使用后,惊喜的发现hazelcast提供了可视化的集群管理工具 Management Center可以进行可视化管理。
喔, so cool. 功能详情撸起袖子开始干,跟着官方文档把可视化管理工具搭建起来了,突然发现处于开发模式(仅限2个节点)。噗。。。吐血。跟着引导来到 30-Day License Key 页面,跟着提示一步一步填写了信息,然后就是等。
三天后~
咦~ 为啥我还没有收到申请的试用license呢?翻遍了邮箱的各个角落,最后确认确实是没有收到。额~ 这TM就尴尬了。顿时不爽的感觉就上来了,这他妈让我白等了三天啊。
今天这事就是**,也TM要把它给办咯。
去同性交友网(Github)瞅瞅看有没有大神破解过,吃个现成的。然而可能经过2个小时的搜索,发现大神们都很尊重知识付费( 或者是hazelcast不热门,不屑于去破解吧。哈哈哈,我就当是大神们尊重知识付费吧 )。那没办法咯,自己琢磨琢磨吧。先搂一眼这个可视化管理工具包的内容。哎哟哟~ war包啊。那要祭出神器啊 JD-GUI 第一眼就看到了 com.hazelcast.license 包,先记着。再瞅瞅看还有没有通过类名就能找到的重点。 com.hazelcast.webmonitor.service.LicenseManager 嗯哼,这个类貌似就是重点了。com.hazelcast.license.util.LicenseHelper.java 代码节选
[Java] 纯文本查看 复制代码 public static License checkLicenseKeyPerFeature(String licenseKey, String versionString, Feature feature) {
License license = getLicense(licenseKey, versionString);
if (!license.getFeatures().contains(feature)) {
throw new InvalidLicenseException("The Feature " + feature.getText() + " is not enabled for your license key." + "Please contact [email]sales@hazelcast.com[/email]");
}
return license;
}
public static License getLicense(String licenseKey, String versionString) {
if (licenseKey == null) {
throw new InvalidLicenseException("License Key not configured!");
}
License license = null;
try {
license = LicenseExtractorV2.extractLicense(licenseKey);
} catch (InvalidLicenseException e1) {
try {
license = LicenseExtractorV3.extractLicense(licenseKey);
} catch (InvalidLicenseException e2) {
license = LicenseExtractorV4.extractLicense(licenseKey);
}
}
int version = extractHazelcastMajorMinorVersionAsInt(versionString);
if ((license.getHazelcastVersion() != 99) && (license.getHazelcastVersion() != version)) {
throw new InvalidLicenseException("This license cannot work with your hazelcast version!");
}
if ((license.isTrial()) && (isExpired(license))) {
throw new InvalidLicenseException("Trial license has expired! Please contact [email]sales@hazelcast.com[/email]");
}
if (isExpired(license)) {
throw new InvalidLicenseException("Enterprise License has expired! Please contact [email]sales@hazelcast.com[/email]");
}
return license;
}
最后跟着代码一步一步找到了 com.hazelcast.license.extractor.LicenseExtractorV4.extractLicense() 方法,代码就不贴了,就是提取license的算法。那这不是来活儿吗?
分析算法规则最后发现个问题,那就是 Expired 的日期最大就到2099年。不过想想2099年啊,那时候还需要人写代码么?哈哈哈~
测试验证哈哈哈,妥儿了~
练练手(好久没写Swing了。)
声明: - 如需生产环境应用,请购买正版
- 相关代码纯属研究与爱好,请在学习使用后删除
|