Как проверить, защищен ли файл паролем через 7zip? - PullRequest
0 голосов
/ 10 января 2012

Я использую 7zip (командная строка) для просмотра файлов zip / rar / 7z.По сути, я проверяю, сколько файлов и какое расширение имеет.Чем ... я попал в защищенные паролем файлы.Когда весь файл защищен паролем (так что вы не можете смотреть на имена файлов или что-то внутри), я знаю.Однако, если я могу видеть файл, я НЕ могу сказать, защищены ли они паролем.Я заархивировал два файла один с другим без пароля.7z l filename.zip показывает файлы в обоих zip одинаковых

Как определить, защищен ли файл в архиве паролем с использованием 7zip?

Ответы [ 3 ]

1 голос
/ 18 мая 2017

Для архива .7z - при тестировании с паролем мусора устанавливается ненулевой уровень ошибки, если пароль существует.

7z t -pxoxoxoxoxoxoxo archive.7z >nul 2>nul
if errorlevel 1 echo Password exists
0 голосов
/ 23 апреля 2019
static bool IsPasswordProtected(string filename)
{
    string _7z = @"C:\Program Files\7-Zip\7z.exe";

    bool result = false;
    using (Process p = new Process())
    {
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardOutput = true;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.FileName = _7z;
        p.StartInfo.Arguments = $"l -slt \"{filename}\"";
        p.Start();
        string stdout = p.StandardOutput.ReadToEnd();
        string stderr = p.StandardError.ReadToEnd();
        p.WaitForExit();

        if (stdout.Contains("Encrypted = +"))
        {
            result = true;
        }                
    }

    return result;
}
0 голосов
/ 11 января 2012

Используйте sevenzipsharp .Это не совсем задокументировано, но это не сложно понять.

SevenZipExtractor.SetLibraryPath(@"path\7-Zip\7z.dll");
using (var extractor = new SevenZipExtractor(fn1))
{
        if(extractor.Check()) { //is not password protected
...