Запустите исполняемый файл 7Zip в новом процессе и безопасно передайте пароль шифрования.C#

Место общения программистов C#
Ответить
Anonymous
 Запустите исполняемый файл 7Zip в новом процессе и безопасно передайте пароль шифрования.

Сообщение Anonymous »

Как упоминается в заголовке, я хочу запустить 7z.exe и передать ему все параметры, включая пароль, поскольку я хочу создать зашифрованный архив.
Если это имеет значение, я делаю это на Windows Server.
Я пробовал всякое, но параметр -p отказывается принимать что-либо, кроме текстовый пароль. Причина, по которой я не могу этого сделать, заключается в том, что командная строка процесса может быть видна другим учетным записям на том же сервере, и наличие там пароля в виде простого текста - это последнее, что я хочу, чтобы они видели.
Что я уже пробовал:

Код: Выделить всё

var psi = new ProcessStartInfo("7z.exe", "a ... -p%MYSECRET%")
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
EnvironmentVariables =
{
{ "MYSECRET", password }
}
};

var process = Process.Start(psi);
process.WaitForExit();
В этом случае в качестве пароля вместо значения переменной пароля используется литерал «%MYSECRET%».
Следующая попытка заключалась в том, чтобы разрешить 7z.exe запросит у меня пароль и заполнит его, используя перенаправление стандартного ввода:

Код: Выделить всё

var psi = new ProcessStartInfo("7z.exe", "a ... -p")
{
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
RedirectStandardInput = true
};

var process = Process.Start(psi);

process.StandardInput.Write(password);
process.StandardInput.Close();
process.WaitForExit();
Этот зашифровал архив неизвестным паролем. Я пытался расшифровать его как с реальным, так и с пустым, но ничего не получилось. Я предполагаю, что 7z.exe не поддерживает ничего, кроме интерактивного ввода с клавиатуры.
Мой вопрос: закрылся ли я каким-либо из методов или я полностью пропустил ?
Моя следующая идея — попытаться создать простой BATCH-файл и выполнить его через cmd.exe, чтобы посмотреть, разрешится ли таким образом переменная среды. Но я уже почти уверен, что это помешает моей первоначальной цели — избежать использования обычного текстового пароля в командной строке порожденного процесса 7z.exe, поскольку cmd.exe заменит переменную на его значение перед запуском окончательного процесса.
Что еще можно попробовать?

Подробнее здесь: https://stackoverflow.com/questions/792 ... n-a-secure
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»