事情背景
最近在使用 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 代码节选
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| 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 sales@hazelcast.com"); } 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 sales@hazelcast.com"); } if (isExpired(license)) { throw new InvalidLicenseException("Enterprise License has expired! Please contact sales@hazelcast.com"); } return license; }
|
最后跟着代码一步一步找到了 com.hazelcast.license.extractor.LicenseExtractorV4.extractLicense()
方法,代码就不贴了,就是提取license的算法。那这不是来活儿吗?
分析算法规则
最后发现个问题,那就是 Expired
的日期最大就到2099年。不过想想2099年啊,那时候还需要人写代码么?哈哈哈~
测试验证
哈哈哈,妥儿了~
练练手(好久没写Swing了。)
声明:
- 如需生产环境应用,请购买正版
- 相关代码纯属研究与爱好,请在学习使用后删除