sf197 / GetPwd

用CSharp写的一款信息搜集工具,目前支持Navicat、TeamView、Xshell、SecureCRT产品的密码解密
Apache License 2.0
244 stars 33 forks source link

SecureCRT Password V2解密修复 #1

Open ck00004 opened 3 years ago

ck00004 commented 3 years ago

你的解密填充有问题应该是 _aes.Padding = PaddingMode.None; key默认为空值的sha256 并且Padding不能不设置,根据msdn文档,不设置默认为PKCS7

参考文档 https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.symmetricalgorithm.padding?view=netframework-4.8#System_Security_Cryptography_SymmetricAlgorithm_Padding https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.paddingmode?view=netframework-4.8#System_Security_Cryptography_PaddingMode_PKCS7

ck00004 commented 3 years ago

Password 乱码问题是因为for循环写错了 continue 换成break
https://github.com/sf197/GetPwd/blob/master/GetPwd/SecureCRTCipher.cs#L35 我是这么写的

 private static string Findnull(byte[] dec)
        {
            UnicodeEncoding unicode = new UnicodeEncoding();
            List<byte> ret = new List<byte>();
            string str = "";
            for (int i = 0; i < dec.Length; i++)
            {
                if (dec[i] == 0x00)
                {
                    if (dec[i + 1] == 0x00)
                    {
                        i++;
                        break;
                    }
                }
                str += (char)dec[i];
                ret.Add(dec[i]);
            }
            byte[] test = ret.Where(x => x != 0).ToArray();
            return System.Text.Encoding.UTF8.GetString(test);
            //return System.Text.Encoding.Default.GetString(test);
        }