Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/75: Рейтинг темы: голосов - 75, средняя оценка - 4.89
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158

Открыть архив с паролем

25.07.2016, 21:45. Показов 14042. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задача - Прочесть данные и разархивировать их, из заданного архива (архив с паролем).

Библиотека - DotNetZip (Ionic.Zip)
Архив - nFile
Путь - Path
Пароль - "qwerty"

C#
1
2
3
4
5
6
7
8
9
10
        private void Extract()
        {
            using(ZipFile zip = ZipFile.Read(Path + nFile, new ReadOptions {Encoding = Encoding.GetEncoding("cp866")}))
            {
                foreach (ZipEntry e in zip)
                {
                    e.ExtractWithPassword(Path, "qwerty");
                }
            }
        }
Ошибка - Необработанное исключение типа "Ionic.Zip.ZipException" в Ionic.Zip.dll Дополнительные сведения: Cannot read that as a ZipFile
Строка 3 - "using(ZipFile zip = ZipF..."

Вопрос 1. В чем я не прав?
Вопрос 2. Как "по людски" обработать событие введение неверного пароля?

Добавлено через 5 минут
Использование конкретно DotNetZip НЕ является обязательным параметром. Если вы можете посоветовать что то другое то я с радостью выслушаю.

В задачи стоит
- Открытие архива с паролем
- Извлечение данных

Архивация не интересует.

Добавлено через 5 часов 6 минут
Нарыл инфу по "ZipFile.Read"

Read Method (fileName, options)

Exception - Thrown if the zipfile cannot be read. The implementation of this method relies on System.IO.File.OpenRead, which can throw a variety of exceptions, including specific exceptions if a file is not found, an unauthorized access exception, exceptions for poorly formatted filenames, and so on.

Как я понял исключения аналогичны System.IO.File.OpenRead
File.OpenRead - метод (String)

По данным исключениям у меня вроде все в порядке...
Попробовал создать FileStream
C#
1
2
3
4
private void Extract()
{
     using (FileStream fs = File.OpenRead(Path + nFile)) { }
...
Все нормально без каких либо ошибок.

Прикладываю Path и nFile
nFile = @"TEST.rar"; (Полагаю тут @ не нужен, но я... вообщем как то так)
Path = @"D:\_\Visual Studio\GitHub\BFPL\TEST RAR";

Попробовал изменить кодировку

C#
1
2
3
4
5
6
7
using(ZipFile zip = ZipFile.Read(Path + nFile, new ReadOptions { Encoding = Encoding.GetEncoding(1251) }))
            {
                foreach (ZipEntry e in zip)
                {
                    e.ExtractWithPassword(Path, "qwerty");
                }
            }
Но все же "Cannot read that as a ZipFile"
(Без кодировки ошибка такая же)

Добавлено через 12 минут
ГЕНИАЛЬНО

Внимательно прочитав слово zip, я осознал что zip, не есть rar. Одна проблема миновала.

Вот только... для rar похоже мне нужна будет другая библиотека, да и еще файл - Файл 1.txt вылез из архива в виде - ”*©« 1.txt
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.07.2016, 21:45
Ответы с готовыми решениями:

Создать архив с паролем
Добрый вечер, я пишу архиватор, и хочу сделать так чтобы на него можно было устанавливать пароль, а именно : написать пароль в textBox, и...

Разархивировать архив с известным паролем
В интернете все примеры которые я находил были с архивами без паролей. Мне нужно работать с архивами (zip или rar) на которые установлены...

Разархивировать архив с паролем
Помогите. Задача стоит так: есть папка с архивами (.arj), которые закрыты паролями, пароли в текстовых файлах (строка 1) в той же папке,...

8
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
25.07.2016, 23:28
https://github.com/adamhathcock/sharpcompress
0
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
26.07.2016, 01:32  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
https://github.com/adamhathcock/sharpcompress
Уже натыкался не подскажете, как там открыть архив с паролем. (В отличии от DotNetZip документации не нашел)
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
26.07.2016, 01:35
https://github.com/adamhathcoc... sts.cs#L32
0
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
26.07.2016, 10:26  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
https://github.com/adamhathcock/shar...veTests.cs#L32
и все же не понятно...
Я так понял библиотека поддерживает и zip и rar. Но вот как реализовать распаковку данных?

Есть примеры работы Documentation - Composite API Examples

Однако я там не нашел open с паролем. Можно мне пример распаковки хотя бы на zip с помощью этой библиотеки?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
26.07.2016, 10:33
По ссылке выше распаковка рар с паролем...
1
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
26.07.2016, 20:06  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
По ссылке выше распаковка рар с паролем...
Вот Zip. Все вроде бы нормально.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void AttemptOpenZip(string Pass)
        {
            using (Stream stream = File.OpenRead(Path + nFile))
            using (var archive = ZipArchive.Open(stream, Options.KeepStreamsOpen, Pass))
            {
                foreach (var entry in archive.Entries)
                {
                    if (!entry.IsDirectory)
                    {
                        entry.WriteToDirectory(Path, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
                    }
                }
            }
        }
Та же попытка для rar.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void AttemptOpenRar(string Pass)
        {
            using (Stream stream = File.OpenRead(Path + nFile))
            using (var archive = RarArchive.Open(stream, Options.KeepStreamsOpen, Pass))
            {
                foreach (var entry in archive.Entries)
                {
                    if (!entry.IsDirectory)
                    {
                        entry.WriteToDirectory(Path, ExtractOptions.ExtractFullPath | ExtractOptions.Overwrite);
                    }
                }
            }
        }
Ошибка. Ни одна из перегрузок метода "Open" не принимает 3 аргументов.
Я посмотрел перегрузки, пароля вообще не нашел.

И другая проблема в рабочем (я думал) методе AttemptOpenZip, возникает ошибка -
Необработанное исключение типа "SharpCompress.Compressor.Deflate.ZlibEx ception" в SharpCompress.dll
Дополнительные сведения: Bad state (invalid block type)

Как быть с Bad state?
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,569
26.07.2016, 20:14
Ну как это не принимает 3 аргумента? А это что?
0
3 / 3 / 2
Регистрация: 24.05.2013
Сообщений: 158
26.07.2016, 20:22  [ТС]
Цитата Сообщение от Someone007 Посмотреть сообщение
Ну как это не принимает 3 аргумента?
Вот я и не пойму, от чего у меня то не принимает?

Но сейчас меня больше волнует не столько rar, сколько Bad state (invalid block type)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.07.2016, 20:22
Помогаю со студенческими работами здесь

Открыть zip архив и распаковать pdf файл с паролем
из zip архива распаковать pdf файл с паролем

Как открыть архив DB? Не база данных, а архив с документами
Подскажите, как можно открыть файл .DB? Файл запаролен и не открывается ни парадоксом, ни дельфи. ТОчно уверен, что это архив.

Архив с паролем
подскажите пожалуйста как вскрыть следующий ссылка на файлообменник]

Сжать папку в архив с паролем
Есть код. Как мне запаролить зип архив? Sub Zip_All_Files_in_Folder_Browse() Dim FileNameZip, FolderName, oFolder Dim strDate...

Как взломать архив с паролем?
Я имею такой скрипт но он не работает. @echo off cls :bakc title RarWhack v2.0 echo Please set a name RAR set /p na=RaR: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru