首页 > 其他分享 >navicat 连接记住密码忘记密码找回密码的方法

navicat 连接记住密码忘记密码找回密码的方法

时间:2024-11-11 16:31:12浏览次数:1  
标签:temp int inData len navicat 密码 static byte 密码找回

今天oracle用户过期 system用户密码忘了,幸亏服务器的navicat记住密码了。在网上找了好久找回密码的方法,记录一下。

第一步

 

 这个会在桌面上生成一个文件 ,在文件中找到   Password=  

 第二步 在网上解密这个密码   

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Arrays;

public class NavicateMain {
    public static void main(String[] args) {
//        //navicat11解密
//        Navicat11Cipher de = new Navicat11Cipher();
//        System.out.println(de.decryptString("15057D7BA390"));
        //navicat12+解密
        Navicat12Cipher de12 = new Navicat12Cipher();
      //替换成自己密码的密文 System.out.println(de12.decryptString("ACA20E6D597070E27A74"));//替换成自己密码的密文 System.out.println(); } static class Navicat11Cipher { public static final String DefaultUserKey = "3DC5CA39"; private static byte[] _IV; private static SecretKeySpec _Key; private static Cipher _Encryptor; private static Cipher _Decryptor; private static void initKey(String UserKey) { try { MessageDigest sha1 = MessageDigest.getInstance("SHA1"); byte[] userkey_data = UserKey.getBytes(StandardCharsets.UTF_8); sha1.update(userkey_data, 0, userkey_data.length); _Key = new SecretKeySpec(sha1.digest(), "Blowfish"); } catch (Exception e) { e.printStackTrace(); } } private static void initChiperEncrypt() { try { // Must use NoPadding _Encryptor = Cipher.getInstance("Blowfish/ECB/NoPadding"); _Encryptor.init(Cipher.ENCRYPT_MODE, _Key); } catch (Exception e) { e.printStackTrace(); } } private static void initChiperDecrypt() { try { // Must use NoPadding _Decryptor = Cipher.getInstance("Blowfish/ECB/NoPadding"); _Decryptor.init(Cipher.DECRYPT_MODE, _Key); } catch (Exception e) { e.printStackTrace(); } } private static void initIV() { try { byte[] initVec = DatatypeConverter.parseHexBinary("FFFFFFFFFFFFFFFF"); _IV = _Encryptor.doFinal(initVec); } catch (Exception e) { e.printStackTrace(); } } private void xorBytes(byte[] a, byte[] b) { for (int i = 0; i < a.length; i++) { int aVal = a[i] & 0xff; // convert byte to integer int bVal = b[i] & 0xff; a[i] = (byte) (aVal ^ bVal); // xor aVal and bVal and typecast to byte } } private void xorBytes(byte[] a, byte[] b, int l) { for (int i = 0; i < l; i++) { int aVal = a[i] & 0xff; // convert byte to integer int bVal = b[i] & 0xff; a[i] = (byte) (aVal ^ bVal); // xor aVal and bVal and typecast to byte } } static { initKey(DefaultUserKey); initChiperEncrypt(); initChiperDecrypt(); initIV(); } private byte[] Encrypt(byte[] inData) { try { byte[] CV = Arrays.copyOf(_IV, _IV.length); byte[] ret = new byte[inData.length]; int blocks_len = inData.length / 8; int left_len = inData.length % 8; for (int i = 0; i < blocks_len; i++) { byte[] temp = Arrays.copyOfRange(inData, i * 8, (i * 8) + 8); xorBytes(temp, CV); temp = _Encryptor.doFinal(temp); xorBytes(CV, temp); System.arraycopy(temp, 0, ret, i * 8, 8); } if (left_len != 0) { CV = _Encryptor.doFinal(CV); byte[] temp = Arrays.copyOfRange(inData, blocks_len * 8, (blocks_len * 8) + left_len); xorBytes(temp, CV, left_len); System.arraycopy(temp, 0, ret, blocks_len * 8, temp.length); } return ret; } catch (Exception e) { e.printStackTrace(); return null; } } public String encryptString(String inputString) { try { byte[] inData = inputString.getBytes(StandardCharsets.UTF_8); byte[] outData = Encrypt(inData); return DatatypeConverter.printHexBinary(outData); } catch (Exception e) { e.printStackTrace(); return ""; } } private byte[] Decrypt(byte[] inData) { try { byte[] CV = Arrays.copyOf(_IV, _IV.length); byte[] ret = new byte[inData.length]; int blocks_len = inData.length / 8; int left_len = inData.length % 8; for (int i = 0; i < blocks_len; i++) { byte[] temp = Arrays.copyOfRange(inData, i * 8, (i * 8) + 8); temp = _Decryptor.doFinal(temp); xorBytes(temp, CV); System.arraycopy(temp, 0, ret, i * 8, 8); for (int j = 0; j < CV.length; j++) { CV[j] = (byte) (CV[j] ^ inData[i * 8 + j]); } } if (left_len != 0) { CV = _Encryptor.doFinal(CV); byte[] temp = Arrays.copyOfRange(inData, blocks_len * 8, (blocks_len * 8) + left_len); xorBytes(temp, CV, left_len); for (int j = 0; j < temp.length; j++) { ret[blocks_len * 8 + j] = temp[j]; } } return ret; } catch (Exception e) { e.printStackTrace(); return null; } } public String decryptString(String hexString) { try { byte[] inData = DatatypeConverter.parseHexBinary(hexString); byte[] outData = Decrypt(inData); return new String(outData, StandardCharsets.UTF_8); } catch (Exception e) { e.printStackTrace(); return ""; } } } static class Navicat12Cipher { private static SecretKeySpec _AesKey; private static IvParameterSpec _AesIV; static { _AesKey = new SecretKeySpec("libcckeylibcckey".getBytes(StandardCharsets.UTF_8), "AES"); _AesIV = new IvParameterSpec("libcciv libcciv ".getBytes(StandardCharsets.UTF_8)); } public String encryptString(String plaintext) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.ENCRYPT_MODE, _AesKey, _AesIV); byte[] ret = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8)); return DatatypeConverter.printHexBinary(ret); } catch (Exception e) { e.printStackTrace(); return ""; } } public String decryptString(String ciphertext) { try { Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); cipher.init(Cipher.DECRYPT_MODE, _AesKey, _AesIV); byte[] ret = cipher.doFinal(DatatypeConverter.parseHexBinary(ciphertext)); return new String(ret, StandardCharsets.UTF_8); } catch (Exception e) { e.printStackTrace(); return ""; } } } }

 

替换 

ACA20E6D597070E27A74替换成自己的密码密文这个为自己的密码密文 
 

 

 找回密码了

标签:temp,int,inData,len,navicat,密码,static,byte,密码找回
From: https://www.cnblogs.com/agnils/p/18539936

相关文章

  • win 创建共享文件夹(共享需要密码,共享后打不开)
    创建一个文件夹右键->属性->共享  注意,选Everyone 权限修改为读取/写入  共享时需要密码,点击 网络和共享中心 可选择去掉密码      添加网络位置,在此电脑空白位置右击,添加一个网络位置 点击下一步,到这里输入 上述网络路径,比如 ......
  • 广州大彩串口屏输入密码后加入加载中画面
    众所周知,我们在使用大型设备或者玩游戏的时候点击开始或者运行时总会有一个加载中的界面出现,这不仅提供了缓冲时间供给cpu进行加载,而且使得我们的设备显得更加的完整,变得更加的高级。但是网上对于输入密码后加入加载中界面的文章寥寥无几,许多学者想要设置相关的内容,但是却对此......
  • 解决远程桌面连接“为安全考虑,已锁定该用户帐户,原因是登录尝试或密码更改尝试过多”问
    阿里云服务器,操作系统WinowsServer2022,最近老是提示这个:后来发现是组策略问题,这时其实已经没办法远程到服务器了,只能通过ECS的VNC连接,解决办法如下:1、通过VNC连接2、连接到服务器3、打开组策略4、依次选择:计算机配置→Windows设置→安全设置→帐户策略→帐户锁定策略......
  • 查看Navicat16已保存的数据库连接密码
    1.导出数据库连接 connections.ncx文件2.使用Java程序进行解密Java在线运行环境:代码在线运行-在线工具,进入选择Java,将以下代码复制到在线运行环境中importjavax.crypto.Cipher;importjavax.crypto.spec.IvParameterSpec;importjavax.crypto.spec.SecretKeySpec;impo......
  • HarmonyOS Next中金融支付场景的安全防护设计:基于Device Certificate Kit的无密码支付
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今数字化金融时代,便捷性与安......
  • HarmonyOS Next中金融支付场景的安全防护设计:基于Device Certificate Kit的无密码支付
    本文旨在深入探讨华为鸿蒙HarmonyOSNext系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。在当今数字化金融时代,便捷性与安全性成......
  • 现代密码-公钥密码RSA
    实验介绍:一个密钥(公钥)是公开的,另一个密钥(私钥)必须保密,且由公钥求解私钥的计算是不可行的。RSA1选取质数p和q(pq不可公开)2计算n=pq,φ(n)=(p-1)(q-1)3随机选取整数e作为公钥,要求1<e<φ(n),e和φ(n)互质如果不互质,就没有逆元,算不出私钥。4计算私钥d,怎么计算呢,使用欧几里得算法先......
  • FTP爆破密码并登陆(期中考试)
    FTP爆破密码登陆获取flag实验要求成功爆破服务端密码并提交服务端flag.txt中的flag1、拓补图2、基础配置关闭防火墙查看服务端IPinterfaceGigabitEthernet0/0/0ipaddress192.168.66.22255.255.255.0​给AR1配置IP,并且尝试ping服务端,能通interfaceGigab......
  • MySQL数据库:本地部署数据库以及安装彩虹猫【Navicat】的安装
    文章目录一.安装前准备工作1.下载并解压文件2.修复电脑缺失的文件二.本地部署MySQL1.先解压`mysql-8.0.25-winx64.zip`,并把文件放到安装需要的位置,再把`my.ini`文件放到`mysql-8.0.25-winx64`的根目录2.修改注册表的根目录信息为自己的安装装路径3.进命令符执行`盘符+:`......
  • php网站admin密码修改?
    在PHP网站中修改管理员密码通常涉及以下几个步骤:数据库连接:确保你有访问数据库的权限。使用PHP连接到数据库,例如使用mysqli或PDO。验证用户身份:在修改密码之前,确保当前用户是管理员或具有修改密码的权限。可以通过会话(session)或令牌(token)来验证用户身份。获取新......