Проверка пароля архива без извлечения файлов полезна, когда нужно убедиться, что введённый секрет совпадает с тем, который использовался при создании архива, либо подобрать его автоматическим способом. В командной строке это делается с помощью утилит, поддерживающих режим тестирования (test) и позволяющих передать пароль как параметр. Ниже описаны основные инструменты, их синтаксис, ограничения и рекомендации по безопасному использованию.
- Подготовка и меры предосторожности
- Основные утилиты и их синтаксис
- ZIP‑архивы
- RAR‑архивы
- Собственный формат 7z
- Другие форматы
- Как проверить пароль без извлечения
- Как извлечь с проверкой пароля
- Обработка специальных символов и пробелов в пароле
- Типичные ошибки и как их диагностировать
- Сравнение утилит
- Практический порядок действий
- Часто задаваемые вопросы (FAQ)
Подготовка и меры предосторожности
Пароль, передаваемый в командной строке, может попасть в историю оболочки, в список процессов (через ps) или в логи терминала. Чтобы снизить риск раскрытия:
- Вводите пароль через read -s (без эха) и сохраняйте его в переменной, а затем используйте переменную в команде.
- Если нужен одноразовый файл с паролем, создайте его с правами 600 (chmod 600) и удалите сразу после использования.
- Проверяйте версию утилиты (unzip -v, 7z, unrar) – некоторые старые сборки не поддерживают современные методы шифрования (например, AES‑256 в ZIP).
- Работайте в отдельной директории или в временном каталоге (mktemp -d) чтобы избежать случайного перезаписывания файлов.
Основные утилиты и их синтаксис
ZIP‑архивы
Для формата ZIP наиболее часто используются unzip и 7z.
- unzip – проверка: unzip -t -P <пароль><архив.zip>. Извлечение: unzip -P <пароль><архив.zip> -d <каталог>.
- 7z – проверка: 7z t -p<пароль><архив.zip>. Извлечение: 7z x -p<пароль><архив.zip> -o<каталог>.
Примечание: традиционное шифрование ZIP (ZipCrypto) поддерживается везде; AES‑шифрование доступно только в тех сборках, где включена поддержка libzip или 7z с соответствующим плагином.
RAR‑архивы
Для RAR удобно использовать unrar (версии 5.x и выше) либо 7z.
- unrar – проверка: unrar t -p<пароль><архив.rar>. Извлечение: unrar x -p<пароль><архив.rar><каталог>.
- 7z – проверка: 7z t -p<пароль><архив.rar>. Извлечение: 7z x -p<пароль><архив.rar> -o<каталог>.
Примечание: unrar свободно распространяется только для распаковки; создание RAR‑архивов требует лицензионной версии rar.
Собственный формат 7z
Утилита 7z является нативной для формата 7z и поддерживает AES‑256.
- Проверка: 7z t -p<пароль><архив.7z>.
- Извлечение: 7z x -p<пароль><архив.7z> -o<каталог>.
Другие форматы
Для архивов tar с гzip/bzip2/xz сжатием пароль не применяется напрямую – шифрование реализуется внешними инструментами (gpg, openssl enc). Поэтому проверка пароля в таких случаях выполняется через расшифровку потока перед передачей в tar.
Как проверить пароль без извлечения
Режим тестирования (-t у unzip, t у 7z и unrar) проверяет целостность архива и correctness пароля, не распаковывая файлов. Команда возвращает код завершения:
- 0 – архив цел и пароль верный (или архив не зашифрован).
- не‑0 – ошибка: неверный пароль, повреждённый архив или неподдерживаемый метод шифрования.
- read -rs password (вводите пароль без эха).
- unzip -t -P «$password» archive.zip.
- if [ $? -eq 0 ]; then echo «Пароль верный»; else echo «Неверный пароль или ошибка архива»; fi.
- read -rs password.
- unrar x -p»$password» archive.rar ./extracted.
- Проверьте код возврата $? – 0 означает успешную распаковку.
- Заключайте пароль в одинарные кавычки, если он не содержит одинарных кавычек: -P ‘пароль с пробелом и $’.
- Если пароль содержит одинарную кавычку, используйте конструкцию ‘»‘»‘ для её экранирования: -P ‘par'»‘»‘ole’ (получается par’ole).
- Более универсальный способ – передавать пароль через переменную, как показано выше; переменная подставляется оболочкой после разбора кавычек, поэтому специальные символы сохраняются.
- Избегайте использования echo $password в видимых командах – это попадает в историю и может быть увидено другими пользователями через ps.
- Неверный пароль – утилита выводит сообщение вроде bad password (unzip), Wrong password (7z) или Failed to open archive (unrar) и возвращает ненулевой код.
- Повреждённый архив – сообщения о CRC failed, unexpected end of archive или invalid or incomplete multibyte sequence. В этом случае проверка пароля невозможна; потребуется попытка восстановления (zip -FF, 7z t без пароля, rar repair).
- Неподдерживаемый метод шифрования – например, старый unzip не распознаёт AES‑шифрованный ZIP и пишет unsupported compression method. Решение – обновить утилиту или использовать 7z, который поддерживает оба типа.
- Пароль содержит символы, которые оболочка интерпретирует – если вы видите ошибку command not found или unexpected EOF while looking for matching, проверьте кавычки и экранирование.
- Определите формат архива по расширению или с помощью file archive.
- Выберите утилиту, которая точно поддерживает этот формат и нужный метод шифрования (см. таблицу выше).
- Если пароль содержит специальные символы, подготовьте его в переменной через read -rs.
- Сначала выполните тест целостности: unzip -t -P «$password» archive.zip (или аналог для 7z/unrar).
- Проверьте код возврата ($?). Если 0 – пароль верный, переходите к извлечению; иначе анализируйте вывод сообщения об ошибке.
- При необходимости извлеките файлы: unzip -P «$password» archive.zip -d ./out.
- После работы удалите переменную пароля (unset password) и любой временный файл, содержавший её.
- Можно ли проверить пароль без риска оставить его в истории оболочки?
- Да. Используйте read -rs для ввода без эха и сохраните значение в переменной. После завершения работы unset переменную.
- Что делать, если unzip сообщает «unsupported compression method»?
- Это означает, что собранная версия unzip не поддерживает используемый метод шифрования (чаще всего AES‑256). Попробуйте 7z, который обычно включает поддержку AES из коробки, либо обновите пакет unzip до версии с поддержкой libzip.
- Как проверить пароль архива, если он создан с помощью WinZip с AES‑шифрованием?
- 7z и современные версии unzip (с поддержкой AES) справляются с такими архивами. Для проверки используйте 7z: 7z t -p<пароль> archive.zip.
- Есть ли способ проверить пароль без передачи его непосредственно в командную строку?
- Можно передать пароль через файл с ограниченными правами (chmod 600) и указать путь к файлу вместо самого пароля: некоторые утилиты accept -Pfile:/path/to/pwdfile (проверьте документацию конкретной версии). Однако не все версии поддерживают такой синтаксис, поэтому самый надёжный способ – переменная окружения или read.
- Что делать, если архив повреждён, но я уверен, что пароль правильный?
- Сначала попытайтесь восстановить архив: для ZIP – zip -FF archive.zip —out repaired.zip; для RAR – rar repair archive.rar; для 7z – обычно достаточно просто попытаться распаковать, 7z попытается пропустить повреждённые блоки. Если восстановление невозможно, данные могут быть безвозвратно утеряны.
Пример проверки ZIP‑архива с переменной пароля:
Как извлечь с проверкой пароля
Если тест прошёл успешно, можно сразу приступить к распаковке. Используйте те же параметры пароля, что и при тесте.
Пример для RAR:
Обработка специальных символов и пробелов в пароле
Пароли могут содержать пробелы, кавычки, знаки доллара, обратный слеш и другие символы, которые оболочка интерпретирует особо. Чтобы избежать неправильной передачи:
Типичные ошибки и как их диагностировать
При работе с защищёнными архивами часто встречаются следующие ситуации:
Сравнение утилит
Ниже таблица, которая поможет быстро выбрать подходящий инструмент в зависимости от формата архива и требуемых функций.
| Утилита | Поддерживаемые форматы (чтение/проверка) | Тест пароля | Извлечение | Примечания |
|---|---|---|---|---|
| unzip | ZIP (традиционное, AES‑256 при наличии поддержки) | Да (-t -P) | Да (-P) | Широко доступен в дистрибутивах Linux; для AES может потребоваться пакет unzip с поддержкой libzip. |
| 7z | ZIP, 7z, RAR, ARJ, CAB, CHM, CPIO, DEB, DMG, HFS, ISO, LZH, LZMA, MSI, NSIS, RPM, SPLIT, TAR, WIM, XAR, Z и др. | Да (-p в режиме t) | Да (-p в режиме x) | Универсальный инструмент; поддерживает AES‑256 для ZIP, 7z и RAR; не требует отдельных пакетов для большинства форматов. |
| unrar | RAR (все версии до RAR5, включая RAR5) | Да (-p) | Да (-p) | Бесплатен только для распаковки; создание RAR требует лицензии rar. Не поддерживает ZIP. |
| tar + gpg/openssl | tar.gz, tar.bz2, tar.xz (с внешним шифрованием) | Нет (проверка через расшифровку потока) | Да (после расшифровки) | Пароль применяется к файлу перед передачей в tar; проверка делается попыткой расшифровать заголовок. |
Практический порядок действий
Следующий чек‑лист поможет избежать типичных pułapок при проверке пароля архива в терминале.
Часто задаваемые вопросы (FAQ)
После выполнения описанных шагов вы сможете надёжно проверить правильность пароля архива, избежать типичных ошибок и сохранить конфиденциальность секретных данных при работе в терминале.
