finalShell 查看已保存的服务连接密码

第一步:打开服务连接

第二步:右击服务连接->点击导出->然后获得一个json文件
第三部:找到password字段,获取值,放到下方代码执行输出明文密码

package org.example;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
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;

public class FinalShell {

    /**
     * 破解FinalShell密码
     * @param args
     * @throws Exception
     */
    public static void main(String[] args)throws Exception {
        System.out.println(decodePass("导出json的 password字段值"));
    }



    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;
    }
}

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Finalshell 是一款远程管理工具,它的本地连接记录的账号密码配置文件通常存储在用户目录下,文件名为 "config.ini"。用户可以在该文件中配置连接信息,包括主机地址、端口号、用户名、密码等。 ### 回答2: FinalShell是一款功能强大的SSH和SFTP客户端工具,它可以帮助用户轻松地连接到远程服务器。在FinalShell中,可以使用本地连接记录的账号密码配置文件来实现方便的登录。 账号密码配置文件是一种用于存储登录信息的文件,常用的格式是XML或者INI。用户可以通过配置文件将常用的服务器信息、用户名和密码保存起来,以便下次登录时可以直接选择对应的配置文件进行登录,避免每次都输入账号密码。 在FinalShell中,用户可以在工具栏上方找到一个“本地连接记录”的选项。点击这个选项,会弹出一个对话框,其中列出了所有已经保存账号密码配置文件。用户可以通过双击或者选择相应的配置文件,并点击“连接”按钮即可实现连接到相应的服务器。 当用户首次使用FinalShell时,他们可以手动输入服务器地址、用户名和密码,并创建一个新的账号密码配置文件。在下次登录时,用户只需要选择这个配置文件就可以直接使用之前保存账号密码进行登录。 除了账号密码FinalShell的配置文件还可以保存其他信息,比如登录端口、使用的协议、认证方式等。用户可以根据自己的需求进行配置,并且可以方便地管理和编辑这些配置文件。 总之,FinalShell的本地连接记录的账号密码配置文件功能大大简化了用户与远程服务器的连接过程,提高了工作效率,让用户能够更轻松地管理和访问他们的服务器。 ### 回答3: FinalShell 是一款功能强大的远程连接工具,除了支持管理服务器的连接,它还提供了本地连接记录的功能。本地连接记录允许用户在连接到目标服务器时保存账号密码配置文件,使得下次连接时无需再手动输入账号密码。 要使用 FinalShell 的本地连接记录功能,首先需要打开 FinalShell 软件,在主界面的“主机列表”窗口中选择要连接服务器,在右键菜单中选择“添加连接”选项。在弹出的对话框中,输入该服务器的具体信息,包括服务器的地址、账号和密码等信息。 在输入账号密码时,可以勾选“保存密码”的选项,这样 FinalShell保存账号密码配置文件到本地。之后每次连接服务器时,就可以直接在“主机列表”窗口中选择相应的服务器,并点击“连接”按钮。 当保存了多个服务器的连接记录时,可以在“主机列表”窗口中快速搜索需要连接服务器。只需点击窗口右上角的搜索图标,并输入相关的关键词,FinalShell 将自动筛选显示符合条件的服务连接。 通过FinalShell的本地连接记录功能,我们可以方便地管理许多服务器的账号密码配置文件,避免了频繁手动输入账号密码的繁琐操作,提高了工作效率。同时,由于保存账号密码文件是经过加密处理的,所以我们也不必担心安全问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值