Мой WPF .NET 4 приложение имеет несколько вещей происходит против него, от вредоносных программ идентификации перспективы:Антивирусное программное обеспечение код маркировки шифрования, как вредоносные программы
- Он должен работать непосредственно с флэш-накопителя
- Это должно позволить пользователь установить параметры безопасности устройства, привязанную к хост-компьютеру
- После защиты устройства установлена, он никогда не должен иметь расшифрованный файл на устройстве
- он должен дешифровать файлы во временной директории главного компьютера
Как оказалось, теперь есть «ransomware», который шифрует файлы пользователя, а затем требует оплаты ключа дешифрования.
Kapersky, в частности, флагами шифрует файл как вредоносное ПО и очень эффективно убивает приложение. При шифровании Kaspersky идентифицирует вредоносное ПО, идентифицированное как PDM:Win32.Generic
, и продолжает обнаруживать, завершать и удалять. Сканирование уже зашифрованного устройства возвращается на 100% чистым - никаких проблем.
Вот код шифрования/дешифрования файла. Он адаптирован из статьи шифрования файлов CodeProject. Может ли быть что-то в этом коде, что вызывает подозрение в программном обеспечении AV? Я буду использовать только чистый .NET, нет третьих сторонних библиотек:
/// <summary>
/// Encrypt a file with a user-supplied password.
/// WARNING: File will be lost if password is forgotton.
/// </summary>
/// <param name="inputFile">
/// The name of the unencrypted file to encrypt.
/// </param>
/// <param name="encryptedFile">
/// The name of the newly encrypted file to created.
/// </param>
/// <param name="clearTextPassword"></param>
/// <param name="salt">
/// You can bypass this and use the predefined salt in this class
/// BUT IT IS NOT RECOMMENDED. Your code should provide an 8-byte
/// array for the salt.
/// </param>
public static void EncryptFile(string inputFile, string encryptedFile,
string clearTextPassword, byte[] salt = null)
{
salt = salt ?? FileSalt;
byte[] key = new Rfc2898DeriveBytes(clearTextPassword, salt).GetBytes(16);
FileStream fsCrypt = new FileStream(encryptedFile, FileMode.Create);
RijndaelManaged rmCrypto = new RijndaelManaged();
rmCrypto.Padding = PaddingMode.PKCS7;
CryptoStream cs = new CryptoStream(fsCrypt,
rmCrypto.CreateEncryptor(key, key),
CryptoStreamMode.Write);
FileStream fsIn = new FileStream(inputFile, FileMode.Open);
int data;
while((data = fsIn.ReadByte()) != -1)
cs.WriteByte((byte)data);
fsIn.Close();
cs.Close();
fsCrypt.Close();
}
/// <summary>
/// Decrypt a file with a user-supplied password.
/// </summary>
/// <param name="inputFile">
/// The name of the encrypted file to decrypt.
/// </param>
/// <param name="unencryptedFile">
/// The name of the unencrypted file to create.
/// </param>
/// <param name="clearTextPassword"></param>
/// <param name="salt">
/// You can bypass this and use the predefined salt in this class
/// BUT IT IS NOT RECOMMENDED. Your code should provide an 8-byte
/// array for the salt.
/// </param>
public static void DecryptFile(string inputFile, string unencryptedFile,
string clearTextPassword, byte[] salt = null)
{
salt = salt ?? FileSalt;
byte[] key = new Rfc2898DeriveBytes(clearTextPassword, salt).GetBytes(16);
FileStream fsCrypt = new FileStream(inputFile, FileMode.Open);
RijndaelManaged rmCrypto = new RijndaelManaged();
rmCrypto.Padding = PaddingMode.PKCS7;
CryptoStream cs = new CryptoStream(fsCrypt,
rmCrypto.CreateDecryptor(key, key),
CryptoStreamMode.Read);
FileStream fsOut = new FileStream(unencryptedFile, FileMode.Create);
int data;
while((data = cs.ReadByte()) != -1)
fsOut.WriteByte((byte)data);
fsOut.Close();
cs.Close();
fsCrypt.Close();
}
Заметьте, что я не очень заинтересован в комментариях по поводу моего использования строки против SecureString для ясного текста пароля и т.д., если эта информация помогает решить проблему AV.
Oo ... Проблема в этом случае - Kapersky, а не RijndaelManaged ... – rducom
Вы должны направить этот вопрос (и фактический исполняемый файл) на поддержку Kaspersky. –
И как безопасно * «дешифровать файлы в папку временного компьютера хоста» *? Исходное восстановление или чтение необработанного диска откроет их – Xen2050