FinalShell 4.3.10激活

共计1402字,阅读大约5分钟。

FinalShell 30是什么不用我多介绍了吧,目前网上貌似只有低版本(<3.9.6)的激活方法 6,甚至有一些根据机器码在线生成激活码的工具网站 12
闲来无事,今天就来分析一下新版本的授权算法

  1. 首先从官网下载finalshell(话说好像有一个新域名 25,不知道是不是作者整的,安装包是msi格式的,也不知道和原版有啥区别)
  2. 安装后找出finalshell.jar,使用下面的命令启动,后面调试要用
    java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005 -jar finalshell.jar
    启动后点左下角,登录时账号密码随便输入,提示密码错误不用管,只需要打开离线激活就可以看到当前生成了机器码123@acb33a2719acb54e

    接着随便输入一个激活码aaa,这时点击确定下面就会显示免费版,接下来开始调试分析
  3. 使用idea随便创一个java项目,将finalshell.jar加到库中

    可以看到,大多数类都经过了混淆,暂时不用管,因为旧版在构造机器码前后缀的时候使用到了DES算法,于是尝试在SecretKeyFactory的getInstance方法下个断点,接着附加到本地的5005调试端口上进行远程调试
    输入激活码后点击一下确定,这时会触发断点,查看调用堆栈就会发现,这个DES加密就是为了生成一下后缀,摘要算法变为了keccak

    和旧版的算法思路差不多,这里得到的是高级版后缀:“hSf(78cvVlS5E”,实际上断点会命中两次,第二次得到的就是专业版后缀:“FF3Go(*Xvbb5s2”
  4. 所以新版的激活算法就是:keccak384(机器码+高级版/专业版后缀)[12:28],最后给个python脚本(python需要安装pycryptodome库):
from Crypto.Hash import keccak
from Crypto.Hash import MD5
def md5(msg):
    hash_obj = MD5.new(msg)
    return hash_obj.hexdigest()
def keccak384(msg):
    hash_obj = keccak.new(data=msg, digest_bits=384)
    return hash_obj.hexdigest()
if __name__ == '__main__':
    code = input('输入机器码: ')
    print('版本号 < 3.9.6 (旧版)')
    print('高级版:', md5(f'61305{code}8552'.encode())[8:24])
    print('专业版:', md5(f'2356{code}13593'.encode())[8:24])
    print('版本号 >= 3.9.6 (新版)')
    print('高级版:', keccak384(f'{code}hSf(78cvVlS5E'.encode())[12:28])
    print('专业版:', keccak384(f'{code}FF3Go(*Xvbb5s2'.encode())[12:28])

最后贴个成功激活的图:

温馨提示:
本文最后更新于2024-03-13 10:28:19,本文具有时效性,若有错误或已失效,请在下方留言或联系站长
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容