|
14.07.2009, 21:45
|
#1
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Lib_vault - Ресурсы под замком
Представляю вам первую версию библиотеки для работы с зашифрованными пакетами ресурсов. Для чего это нужно? Для ограждения ресурсов вашего мидлета от любопытных глаз и кривых рук взломщиков. Конечно, защита пока не идеальна, нужно будет ещё добавить шифрование заголовка и скроллинг битов, но пока можно пользоваться и такой версией, защита уже вполне есть и лучше пока пользоваться такой чем вообще никакой.
Подробно опишу последовательность действий при создании зашифрованного пакета с ресурсами, чтобы потом не возникало вопросов что делать и как. В последующих версиях запаковщика нужно будет делать аналогичные действия, сами разберетесь.
Итак, для начала нужно создать пакет с нашими ресурсами. Для этого запускаем запаковщик (он прилагается к данной статье, на момент написания самая свежая версия запаковщика это 3).
Нажимаем кнопку "Добавить" и выбираем файлы, которые нужно поместить в архив. У меня получилось примерно такой архивчик:
Потом поставьте галочку напротив строчки "Использовать шифрование" и наберите в текстовой строчке пароль для доступа к вашему архиву.
Ещё в качестве дополнительной меры можно добавлять фейковый (ложный, поддельный) файл в начало архива. Как видно из скриншота, я туда поместил файл с картинкой под названием "lock.png". Всё, теперь нажимаем кнопку "Запаковать", программа спросит имя файла и путь сохранения. Я указал название "logo.png". Архив готов. При создании архива появилось окошко с числом "2894". Запишем это число на бумажечке, оно нам ещё пригодится. Можете попробовать открыть полученный файл на компьютере, картинка откроется совершенно нормально, без ругани, что файл как-то странно перегружен. Ну и что, что такая маленькая картинка занимает 16 Кб. Может я ламер и запаковал картинку в плохом формате сжатия
Теперь приступаем к созданию нашего приложения.
Перед тем как начать, кратко опишу функции, которые поддерживает библиотека Lib_vault:
OpenVault(fname: String; of: Integer) - Открыть файл с ресурсами fname - имя файла с ресурсами (символ "/" в начале писать не нужно) of - отступ в байтах от начала файла (в случае добавления фейковых файлов перед заголовком, иначе 0) Security(pass: String; scroll: Integer) - Установить параметры безопасности для архива ресурсов pass - пароль scroll - циклический сдвиг каждого байта на N битов влево (пока не поддерживается запаковщиком, но уже забронировано, пока ставьте значение 0) Image LoadImage(res: Integer) - Загрузить картинку из архива res - номер ресурса в архиве String LoadText(res: Integer; enc: Integer) - Загрузить текстовый файл целиком res - номер ресурса в архиве enc - кодировка символов 0 - не делать перекодировку 1 - перекодировка Windows (cp1251) -- > UTF-8 2 - перекодировка ANSI -- > UTF-8 LoadSound(res: Integer; format: String; loop: Integer) - Загрузить мелодию из архива res - номер ресурса в архиве format - формат аудио (пример, "audio/midi") подробнее смотри стандартный хелп по функции OpenPlayer loop - количество раз, которое будет воспроизводиться мелодия PlaySound - Начать воспроизведение мелодии загруженной ранее функцией LoadSound
StopSound - Закончить воспроизведение мелодии
Ну а теперь собственно сама программа, я подробно всё откомментировал.
Думаю у вас не возникнет дополнительных вопросов.
Program VaultTest; Uses vault; Var im: image; s: string; Begin im:=LoadImage('/logo.png'); // Открываем наш архив как обычную картинку DrawImage(im, 5, 5); // Рисуем на экране симпатичный замочек (закрытый) Repaint; Delay(5000); // Ждем 5 секунд SetColor(255, 255, 255); FillRect(0, 0, GetWidth, GetHeight); // Очистка экрана OpenVault('logo.png', 2894); // Открываем наше хранилище (сдвиг от начала файла 2894 байт) Security('1234567890', 0); // Пароль 1234567890, циклический сдвиг битов не применялся (пока 0) im:=vault.LoadImage(0); // Извлекаем ресурс #0 - картинку DrawImage(im, 5, 5); // Рисуем на экране симпатичный замочек (уже открытый!) s:=vault.LoadText(1, 1); // Загружаем текстовый файл целиком (кодировка Win-1251) SetColor(0, 0, 0); DrawText(s, 2, 70); // Рисуем текст на экране vault.LoadSound(2, 'audio/midi', 1); // Загружаем ресурс #2 - MIDI мелодию, играть будем 1 раз vault.PlaySound; // Начать воспроизведение Repaint; Delay(50000); // Ждем 50 секунд End.
В общем, это и всё, что я хотел сегодня рассказать. Я показал как успешно хранить ваши ресурсы в зашифрованном виде, как маскировать их под обычные файлы. Ждите выходов новых версий запаковщика и распаковщика соответственно тоже.
|
(Offline)
|
|
Эти 16 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
|
Bananbl4 (28.03.2010), GRAY_WOLF (15.10.2009), im_zorg (11.01.2010), Ksanatos (31.08.2010), Mr.Twister (15.07.2009), NetBuilding (21.07.2010), Phantom (16.07.2009), PVD (27.02.2010), Pyth_ON (15.07.2009), Richik (21.07.2009), Romanzes (28.02.2010), scimitar (01.10.2011), Serg153 (15.07.2009), Trazzy (18.11.2009), ViNT (16.07.2009), VM (15.07.2009)
|
15.07.2009, 12:08
|
#2
|
Нуждающийся
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений (для 15 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Либа работает нормально... распаковывает...
а вот Ресурпакер - при распаковке кажется глючит....
1- если неуказать смещение(при наличии "ложного" файла) - то прога Зависает и за несколько секунд пишет сотни и тысячи файлов с лабудой в каталог распаковки...
2 - если Указать смещение - то распаковка происходит,
но - все русурсы распаковывает с одним расширением PNG
хотя, как в примере там были три типа (png, txt, mid)
и размер Распакованных ресурсов неявляется истинным - он равен размеру упакованного файла (в примере 3 файла по 16Кб...)
---
может подправите Пакер?
а так, усё работает...
|
(Offline)
|
|
15.07.2009, 16:45
|
#3
|
Троллота
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений (для 1,772 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Lib_vault: Prepare for the future
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо Tadeus за это полезное сообщение:
|
|
16.07.2009, 02:46
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Пакер пока в разработке, еще не сделаны некоторые проверки корректности входных данных.
Вообще распаковщик делался скорее для проверки упаковщика, чем для использования. А выход из указанной ситуации один - в следующей сборке сделаю создание информационного файла для пакета, в котором будут указаны все необходимые для распаковки данные, вплоть до пароля(естественно, этот файл не должен быть доступен "злоумышленнику").
|
(Offline)
|
|
16.07.2009, 12:34
|
#5
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Какой алгоритм шифрования используется?
Если вы считаете, что мой вопрос раскрывает секретность, то Вам сюда - http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%9A% D0%B5%D1%80%D0%BA%D0%B3%D0%BE%D1%84%D1%84%D1%81%D0 %B0
Система не должна быть секретной, и если она попадёт в руки противника, это не должно причинить неудобства.
|
«принцип Керкгоффса».
И, если я не ошибаюсь, создание крипто-прог возможно только по лицензии ФАПСИ ?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
16.07.2009, 18:43
|
#6
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Тут принцип несколько другой. Сам алгоритм не защищен и может быть легко получен любым декомпилятором. Для усложнения жизни хакерам сам ключ можно не хранить в программе, а получать его, скажем, из сети Интернет. Сам алгоритм шифрования самый простой из возможных, напоминает скорее шифрацию в полиморфик вирусах, чем реально стойкие современные криптоалгоритмы.
ФАПСИ осталось не у дел. Я уверен, что опытные криптографы даже не зная алгоритма шифрования и его ключа всё равно смогут взломать данную защиту причем в рекордно короткие сроки (менее чем за 1 день).
|
(Offline)
|
|
16.07.2009, 20:44
|
#7
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
1 - перекодировка Windows (cp1251) -- > UTF-8
2 - перекодировка ANSI -- > UTF-8
|
Разве это не одно и то же? Может вместо ANSI ты имел в виду ASCII?
|
(Offline)
|
|
18.07.2009, 15:40
|
#8
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
ACSII это вообще то первые 128 символов, а с ними как раз никаких проблем не возникает. А вот вторые 128 символов кодируют как кто захочет, кто в cp1251, кто в КОИ, кто в ISO8859-5. Хз. Возможно это в реальной жизни кодировка ISO, во всяком случае алгоритмы у cp1251 и ANSI(ISO?) совершенно разные.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
18.07.2009, 18:36
|
#9
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Мой текстовый редактор при сохранении в ANSI сохраняет в WINDOWS-1251
|
(Offline)
|
|
03.08.2009, 22:12
|
#10
|
AnyKey`щик
Регистрация: 30.07.2009
Сообщений: 4
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Odd, а может напишешь шифровальшик на php? Или можешь мне в асю написать и разьяснить алоритм шифровки, попробую сам)
|
(Offline)
|
|
15.10.2009, 21:10
|
#11
|
AnyKey`щик
Регистрация: 15.10.2009
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Почему-то либа распаковывает тестовый файл (тот что в архиве), а если сам собираешь - не распаковывает.
|
(Offline)
|
|
15.10.2009, 21:21
|
#12
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
А встроенный распаковщик программы распаковывает?
|
(Offline)
|
|
15.10.2009, 21:30
|
#13
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Где-то при сборке допустил глюк. Читай по внимательней 1 пост.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
15.10.2009, 21:33
|
#14
|
AnyKey`щик
Регистрация: 15.10.2009
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Да. Пытался сделать архив 1 в 1 как в тесте - ни каких ошибок не выскакивает, просто картинки/текст - не показывает.
|
(Offline)
|
|
15.10.2009, 21:42
|
#15
|
Разработчик
Регистрация: 16.08.2008
Адрес: Нижегородская провинция
Сообщений: 389
Написано 48 полезных сообщений (для 93 пользователей)
|
Ответ: Lib_vault - Ресурсы под замком
Сообщение от DmitryNPK
Да. Пытался сделать архив 1 в 1 как в тесте - ни каких ошибок не выскакивает, просто картинки/текст - не показывает.
|
Без исходника, что либо сказать трудно. Выложи посмотрим.
__________________
- Это мы накодили WINDOWS,
- Это мы надкусили APPLE,
- Нам играют живые The Beatles
- И нестареющий Вова Высоцкий...
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 18:48.
|