好友
阅读权限20
听众
最后登录1970-1-1
|
dec.exe 使用 C# / .NET Framework 4.0 编写
[C#] 纯文本查看 复制代码 public static bool FileDecryptNew(string inputFile, string outputFile, string privateKey, int size)
{
bool result = true;
byte[] array = new byte[0x80];
FileStream fileStream = new FileStream(inputFile, FileMode.Open);
fileStream.Read(array, 0, 0x80);
byte[] src = new RSAUtil().DecryptByBytes(array, privateKey);
byte[] array2 = new byte[0x20];
byte[] array3 = new byte[0x10];
Buffer.BlockCopy(src, 0, array2, 0, array2.Length);
Buffer.BlockCopy(src, 0x20, array3, 0, array3.Length);
CryptoStream cryptoStream = new CryptoStream(fileStream, new RijndaelManaged
{
KeySize = 0x100,
BlockSize = 0x80,
Key = array2,
IV = array3,
Padding = PaddingMode.PKCS7,
Mode = CipherMode.CFB
}.CreateDecryptor(), CryptoStreamMode.Read);
FileStream fileStream2 = new FileStream(outputFile, FileMode.Create);
byte[] array4 = new byte[size];
try
{
int count;
while ((count = cryptoStream.Read(array4, 0, array4.Length)) > 0)
{
fileStream2.Write(array4, 0, count);
}
}
catch (CryptographicException ex)
{
result = false;
Console.WriteLine("CryptographicException error: " + ex.Message);
}
catch (Exception ex2)
{
result = false;
Console.WriteLine("Error: " + ex2.Message);
}
try
{
cryptoStream.Close();
}
catch (Exception ex3)
{
result = false;
Console.WriteLine("Error by closing CryptoStream: " + ex3.Message);
}
finally
{
fileStream2.Close();
fileStream.Close();
}
return result;
}
从上面看, 这程序利用他给你的pem私钥, 读取每个文件前0x80长度byte, 然后使用RSA解密 key和 iv, 然后利用 crypto stream (AES) 解密, 是最简单纯粹的 AES +RSA 标准, 非常安全, 所以没有pem你就无法提取每个文件的不同key/iv, 自然就无法解密了, 这个pem文件应该是 他发给你的吧? 他那再用RSA 把每个受害者 pem加密, 理论上这样 它不需要你的 pem, 他只要有私钥就行了, 是勒索病毒惯用方法, 注意防范才是根本方法. |
|