Шифрующий архиватор с автораспаковщиком

Написал несложную программку - архиватор, позволяющий создавать запароленные зашифрованные архивы и прикреплять к ним автораспаковщик. Интерфейс архиватора выглядит так:

Как видно, архиватор позволяет добавить произвольное количество файлов в архив, при случайном добавлении лишних - удалить их или вообще очистить список файлов. Если добавить файлы в архив из разных директорий, архиватор автоматически вычислит самую общую для них и сохранит структуру расположения файлов. Пустые файлы и папки в архив не добавятся. Можно задать заголовок архива и текст, который отобразится в распаковщике перед полем ввода пароля. Также есть возможность задать уровень сжатия и сам пароль для шифрования файлов. Можно создавать архив с автораспаковщиком (формат exe), в этом случае не следует добавлять в него файлов больше, чем на 4 Гб. При создании архива без распаковщика (формат dxa) ограничений на размеры файлов или архива не накладываются, но такой архив можно будет распаковать, только имея разархиватор. Вот как он выглядит:

Распаковываться будут только выбранные в списке файлы. Если файл в папке разархивирования уже существует, распаковщик спросит, заменить ли его. Кроме того, распаковщик создаст все необходимые папки для разархивирования, если это необходимо.

Архивирование производится с помощью zlib, а шифрование - AES256.

Как все это можно использовать? Достаточно вспомнить о большом количестве файловых партнерок и понять, что теперь можно и самим делать платные архивы и распространять их, завися только от биллинга.
А еще это просто хороший архиватор :)

UPD: добавлена возможность создавать просто архивы без пароля.

Скачать: ZIP
Исходн говнокоды: source

Шифрующий архиватор с автораспаковщиком: 53 комментария

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

    http://filecash.su/ --- позволяет архивировать все что угодно, на подписках. Настраиваемый дизайн и проч. проч. Вне конкуренции. А то что выше, просто хороший архиватор или шифровалка своих личных файлов.

      1. Привет dx, пользуюсь программой <>, надавно заметил небольшой баг. Когда я пытаюсь запаковать 3 папки общим весом 50.8mb, файлов 1062, вложенных папок 115, архив создается без проблем, но при попутке открыть файл распаковщиком <>, идет загрузка пару секунд и все пропадает, архив не открывается. Пробовал оба способа и самораспаковывающийся архив и просто архив .dxa. Не мог бы ты исправить этот баг? Разумеется в долгу не останусь. Напиши пожалуйста email для связи, или иной другой способ для связи))

          1. Помнится, были там какие-то баги, а писал очень давно. Появится время - попробую найти, в чем может быть проблема.

        1. Пока не знаю. Давно бы уже сам нашел :)
          Код-то это я бы сейчас уже полностью переделал всё равно, да и не настолько это критично, есть же другие архиваторы с автоанпакерами.

  2. Всё красиво, всё удобно. Респект :)

    Но чисто спортивный интерес: а чем не устраивает WinRAR? Если туда поставить рандомный пароль, то брутить надо будет очень-очень долгj. Также защифрованный архив получается :)

      1. Если поставить пароль вида "R42s9LCcTK", то ты его год будешь брутить :)

        dx, понятно. Чисто спортивный интерес написать ;)

  3. DX, привык уже к сорцам твоим, да и врятли здесь рипперы сидят, если и сидят - Бог им судья.. Может все-таки выложишь исходники, интересно взглянуть, да и изменил кое-что для себя. С уважением.

  4. Как понял - по сорцам тишита, коль ответа от тебя не получил. Слушай, может просто выдернишь код AES, мне очень интересно реализацию посмотреть..

    1. Выложу сорцы, я функционал немного дописывал.
      Но сорцы страшные, почти что си без плюсов)
      AES там на базе WinAPI, ничего особенного, даже на MSDN подобный пример есть.

      1. Благодарю тебя! Дело в том, что посетители сайта знают, что ты - достойный кодер, ну а стиль написания у каждого свой. Мне, например довольно приятно твои сорцы смотреть, видимо привык уже. В любом случае - спасибо тебе. Если не хочешь на всеобщее обозрение кидать - можешь на почту.

        1. Выложил сорцы (zlib сами найдете, если надо будет) и обновленную версию, которая умеет создавать архивы без паролей.

  5. А вы можете все тоже самое сделать на asm , не могу перевести на masm32, буду примного благодарен.
    Понравился ваша затея архиватора.

  6. Есть еще такая тема как LZMA (http://www.7-zip.org/sdk.html), недавно писал программу для обновления, которая скачивает через HTTP архив и распаковывает его заменяя оригинальные файлы. В итоге вышло где-то 36Кбайт без CRT на Си, при этом реализовал фишку - скачанный архив распаковывает из памяти не скидываясь на диск. Пришлось правда изрядно поковырять исходники.
    Если надо могу поделиться кодом, либо опубликовать на блоге своем. Хотя в исходниках SDK не сложно разобраться.

        1. Ставишь Microsoft Visual Studio 2010 или может даже DevCpp, создаешь пустой виндовый проект, добавляешь файлы из архива с исходным кодом и нажимаешь кнопочку Build.

  7. не подскажите где взять #include "ZLib/zlib.h" видает ошибку. Взяла ваш код для примера на курсовой проект очень понравилась визуалка. Задание зделать архиватор а у меня ничего не виходит, кто может помогите плиииз

  8. Спасибо большое за ответ. Подскажите пожалуйста еще как их подключить уже новые ошибки. Может у кого то есть проект на VS 2010 визуальный архиватора. Очень нужно.

    1. Скачай предварительно собранные бинарники zlib, добавь путь к инклюдам и библиотекам zlib в настройках проекта, ну и zlib.lib или как там её добавь в настройках в доп. зависимости, либо через pragma comment(lib, ...

  9. Все зделано что вы написали. Возникла ошибка 1>archiver.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__StrRChrA@12 в функции "unsigned long __cdecl GetSaveName(struct HWND__ *,struct HINSTANCE__ *,char *,char const *,char const *,char const *,unsigned long *)" (?GetSaveName@@YAKPAUHWND__@@PAUHINSTANCE__@@PADPBD33PAK@Z)
    1>archiver.obj : error LNK2019: ссылка на неразрешенный внешний символ _compress2 в функции __catch$?archfunc@@YAXPAX@Z$0
    1>archiver.obj : error LNK2019: ссылка на неразрешенный внешний символ __imp__InitCommonControlsEx@4 в функции _WinMain@16
    Компилятор не сгенерировал правильный код; свяжитесь со службой технической поддержки Майкрософт.

  10. Надеюсь доросту и до понятия остальных раздач, но за этот подгон огромнейшее спасибо!

Добавить комментарий для dx Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *