当前位置: 首页 > news >正文

FinalShell 密码在线解析方法(含完整源码与运行平台)

✨ 背景说明

FinalShell 是一款流行的远程连接工具,但其保存的登录密码是加密的。如果我们想找回忘记的密码,可以使用逆向算法对其进行解密。

本文提供:

  • 完整 Java 解密源码
  • 在线运行平台(菜鸟工具 Java 编译器)
  • 使用说明

💡 解密原理

FinalShell 使用 Base64 + DES 加密算法对密码进行加密。我们可以根据其逆向逻辑,通过提取头部字节生成密钥,并解密密码内容。


🧪 在线运行平台介绍

我们使用的是菜鸟工具 Java 在线运行平台

优点:

  • 无需安装本地 JDK
  • 支持导入标准库
  • 可直接复制运行解密逻辑

🧾 使用步骤

  1. 打开:菜鸟工具 Java 编译器
  2. 将下方 Java 源码完整粘贴到编辑器中
  3. 替换 decodePass("...") 中的密文为你自己的 FinalShell 密码
  4. 点击“执行代码”,即可看到解密结果

🧾 从 FinalShell 导出配置

从导出的xxx_connect_config.json文件中找到password就是需要的密文
获取密文


🧰 Java 源码(复制粘贴到平台)

import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Base64;
import java.util.Random;import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;public class FinalShellDecodePass {public static void main(String[] args)throws Exception {System.out.println(decodePass("PDcUCTxxxxxxxxxxxxxxxxxxxxxKHgV"));}public static byte[] desDecode(byte[] data, byte[] head) throws Exception {SecureRandom sr = new SecureRandom();DESKeySpec dks = new DESKeySpec(head);SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");SecretKey securekey = keyFactory.generateSecret(dks);Cipher cipher = Cipher.getInstance("DES");cipher.init(2, securekey, sr);return cipher.doFinal(data);}public static String decodePass(String data) throws Exception {if (data == null) {return null;} else {String rs = "";byte[] buf = Base64.getDecoder().decode(data);byte[] head = new byte[8];System.arraycopy(buf, 0, head, 0, head.length);byte[] d = new byte[buf.length - head.length];System.arraycopy(buf, head.length, d, 0, d.length);byte[] bt = desDecode(d, ranDomKey(head));rs = new String(bt);return rs;}}static byte[] ranDomKey(byte[] head) {long ks = 3680984568597093857L / (long)(new Random((long)head[5])).nextInt(127);Random random = new Random(ks);int t = head[0];for(int i = 0; i < t; ++i) {random.nextLong();}long n = random.nextLong();Random r2 = new Random(n);long[] ld = new long[]{(long)head[4], r2.nextLong(), (long)head[7], (long)head[3], r2.nextLong(), (long)head[1], random.nextLong(), (long)head[2]};ByteArrayOutputStream bos = new ByteArrayOutputStream();DataOutputStream dos = new DataOutputStream(bos);long[] var15 = ld;int var14 = ld.length;for(int var13 = 0; var13 < var14; ++var13) {long l = var15[var13];try {dos.writeLong(l);} catch (IOException var18) {var18.printStackTrace();}}try {dos.close();} catch (IOException var17) {var17.printStackTrace();}byte[] keyData = bos.toByteArray();keyData = md5(keyData);return keyData;}public static byte[] md5(byte[] data) {String ret = null;byte[] res=null;try {MessageDigest m;m = MessageDigest.getInstance("MD5");m.update(data, 0, data.length);res=m.digest();ret = new BigInteger(1, res).toString(16);} catch (NoSuchAlgorithmException e) {e.printStackTrace();}return res;}
}

🧾 示例效果

在控制台中你会看到解密后的真实密码,例如:

123456abc!

🛡️ 声明与警告

本工具仅供个人学习与恢复忘记密码使用,严禁用于非法用途。否则后果自负。

相关文章:

  • SQLServer与MySQL数据迁移案例解析
  • mysql日志文件binlog分析记录
  • 软考 系统架构设计师系列知识点之杂项集萃(69)
  • [Usaco2007 Dec]队列变换 题解
  • Python之web错误处理与异常捕获
  • LeRobot的机器人控制系统(下)
  • 有监督学习——决策树
  • 从3.7V/5V到7.4V,FP6291在应急供电智能门锁中的应用
  • 为什么mosquitto 禁用了 topic “#“后,无法使用主题中包含%c client_id了?
  • 【动手学深度学习】2.1. 数据操作
  • 技术篇-2.4.Python应用场景及开发工具安装
  • 如果验证集缺失或测试集缺失应该怎么办?
  • Cursor远程连接+工具使用
  • redis-7.4.2 通过 systemd管理,rpmbuild spec文件参考
  • 关于初学者对大模型的一些概念的理解
  • 纳斯达克与标普500的技术博弈:解析美股交易系统的低延迟与高安全解决方案
  • java后端-海外登录(谷歌/FaceBook/苹果)
  • 高等数学-空间中的曲线与曲面
  • React 第四十六节 Router中useInRouterContext的使用详细介绍及注意事项
  • 价格行为(PriceAction)复盘 - Google - 250521
  • 淘宝运营培训班多少钱/seo排名工具哪个好
  • 宁波高端网站设计价格/3d建模培训学校哪家好
  • 杭州模板建站定制网站/模板网站建设开发
  • 做一个网站的建设过程/长沙做网站推广
  • 台州网站建设网站推广/外贸接单十大网站
  • 自适应网站一般做多大尺寸/国内重大新闻十条