forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Прочие вопросы (http://forum.boolean.name/forumdisplay.php?f=50)
-   -   Как запаковать и извлеч картинки и прочюю информацию в DAT? (http://forum.boolean.name/showthread.php?t=8440)

VM 22.06.2009 22:19

Re: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Коллеги, уже есть некоторые решения этого вопроса вот здесь http://supremej2me.bambalam.se/guide...on-tools/bamfs.
По-моему, формат упакованного файла оптимальный.

Ещё вопрос по шифрации: насколько она надёжна?
Ведь декомпиляция class файла покажет алгоритм шифрации...

odd 23.06.2009 00:14

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Алгоритм шифрации может и покажет, но вот ключ можно и из Интернета скачивать и не хранить его в программе вообще.
Да и есть ли такая защита, которую бы нельзя было бы взломать? Взломать можно всё.

ViNT 26.06.2009 01:46

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Вложений: 1
Итак, вот тестовый вариант упаковщика/распаковщика, пока без шифрования(думаю, следует оставить оба варианта - с шифрованием и без, на выбор пользователя). На счет порядка байтов в заголовке - пишу прямо из памяти в поток, это правильно или надо наоборот?

Упаковка сделана в два этапа - сначала создаются файлы data.bin(данные) и hdr.bin(заголовок), потом все собирается в один файл. Сделал так, чтобы обрабатывать все файлы в один проход - открываю поток, определяю размер, пишу в файл заголовка, тут же копирую поток в файл данных, закрываю поток и так для каждого файла. Для этого в папке программы должна быть папка Temp.

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

2 odd код могу выложить при необходимости.

ViNT 26.06.2009 23:12

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Вложений: 1
Добавил шифрование(опционально). Длина ключа 1-255 байт, каждый следующий байт данных ксорится со следующим байтом ключа, байты ключа перебираются циклически, дл каждого ресурса сначала. Для распаковки зашифрованного файла нужно также как и при упаковке включить шифрование и ввести ключ.

В дальнейшем могу добавить сдвиг, также можно для пущей конспирации заголовок зашифровать.

Сейчас для промежуточных файлов используется TFileStream, однако, поскольку файлы небольшие, думаю будет лучше использовать TMemoryStream.

odd 29.06.2009 21:25

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Ок. Буду подгонять библиотеку-распаковщик.
Она уже почти готова, а вот тестировать не на чем т.к. запаковщика не было.
Есть идея зашифровать и заголовок с переменным ключом, но об этом чуть позже и в личку.

odd 30.06.2009 01:26

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Либа пашет нормально. Уже могу извлекать текст, картинки и звуки.
Хочу ещё добавить чтение текста построчно с перекодировкой.
Только несколько замечаний по кодировщику:
1. Небольшая ошибка в алгоритме шифрования. К примеру, я задаю ключ "123", а шифрование идет не тремя байтами, а четырьмя. Последний байт всегда 0 зачем-то добавляется.
2. Расширь окошко с названиями файлов, а то не видно имен файлов если путь длинный.

Очень желательно добавить скроллинг битов и шифрование заголовка.
Ещё можно перед заголовком вставлять N фейковых байтов для пущей маскировки файла с нашими ресурсами под другой файл. К примеру можно вставить заголовки от JPG, PNG, ZIP и проч. Прикол в том, что архив с картинками можно зашифровать и добавить заголовок типа это PNG, естественно файл открываться не будет. Юзер подумает, что применен какой-то экзотический метод сжатия PNG картинок или файл действительно поврежден. Или добавить перед заголовком байты 0xCAFEBABE и архив обозвать как class файл.

Если удастся добавить сдвиг заголовка + шифрацию заголовка + шифрацию данных = в итоге получим довольно криптостойкую защиту информации. Не зная алгоритма декодировщика можно будет ломать голову над хранилищем довольно долго.

Phantom 30.06.2009 04:13

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Цитата:

К примеру можно вставить заголовки от JPG, PNG, ZIP и проч. Прикол в том, что архив с картинками можно зашифровать и добавить заголовок типа это PNG, естественно файл открываться не будет. Юзер подумает, что применен какой-то экзотический метод сжатия PNG картинок или файл действительно поврежден.
Можно даже небольшую картинку в начало файла записать, чтобы она и открывалась как картинка, например двуцветная чернобелая PNG с каким-нибудь рисунком будет весить мало при относительно большом рисунке. Это для пущей конспирации. Чел щёлкнет на файле и он откроется как картинка, он может и не подумать, что после самой картинки в файле другие данные вбиты. Можно даже сами данные хранить в качестве мета данных самой картинки (если только PNG поддерживает хранение там любых данных), тогда начало и конец файла будут полностью соответствовать PNG сигнатуре. И чел просто подумает, что картинка так много весит из-за кривого сжатия PNG-24. :-D
Цитата:

Или добавить перед заголовком байты 0xCAFEBABE и архив обозвать как class файл.
Не проканает. Джава машина не даст открыть для чтения ресурс с расширением *.class =(

odd 30.06.2009 08:25

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Короче решено.
Желательно в запаковщик добавить функции прикрепления заданного файла перед заголовком или генерацию N случайных байт от фонаря.

ViNT 30.06.2009 23:08

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Понятно, с лишними байтами в шифровщике разберусь, шифрование заголовка и маскировку допишу, на счет интерфейса - доработаю, это пока был тестовый вариант для проверки работоспособности основного кода. На счет окна с именами файлов - может лучше вообще выводить только имена без пути, или сделать возможность включения/отключения отображения пути, также можно все это переделать на основе TListView и добавить сопоставленные расширению иконки.

odd 01.07.2009 17:20

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Да, путь этот и не нужен никому. Желательно отображать: номер в архиве/тип данных/имя (без пути).
Буду ждать новую версию кодировщика. Хотя тестировать пока можно и на этом. Я пока буду улучшать работу с текстовыми файлами. Чтение побайтно делать вообще? Или не надо? Пока извлекает (закодированные и незакодированные) рисунки, звуки, текстовые файлы (извлекаются сразу целиком).

ViNT 01.07.2009 21:48

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Цитата:

Сообщение от odd (Сообщение 109571)
Да, путь этот и не нужен никому. Желательно отображать: номер в архиве/тип данных/имя (без пути).
Буду ждать новую версию кодировщика. Хотя тестировать пока можно и на этом. Я пока буду улучшать работу с текстовыми файлами. Чтение побайтно делать вообще? Или не надо? Пока извлекает (закодированные и незакодированные) рисунки, звуки, текстовые файлы (извлекаются сразу целиком).

А файлы куда извлекаются? В RMS?

Ошибку в кодировщике пофиксил, добавил запись файла в начало архива. Попробую приделать создание промежуточных файлов прямо в памяти и список переделаю. А можно еще сделать кнопку "Детальная информация", по нажатию которой выводить полную информацию о выделенном ресурсе и предпросмотр.

odd 02.07.2009 02:54

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Цитата:

Сообщение от ViNT (Сообщение 109601)
А файлы куда извлекаются? В RMS?

Файлы извлекаются в переменные. Текстовый файл - в строку, графика - в переменную типа Image, только звуки загружаются сразу в плеер без использования переменных.

ViNT 13.07.2009 15:30

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Вложений: 1
Еще некоторые изменения.
Сделано добавление файла в начало (при распаковке программой нужно указать количнство байт, которые следует пропустить, естественно, должно соответствовать размеру файла в начале пакета).

Изменени список файлов, убран путь, добавлена иконка, номер в пакете и размер файла.

Также есть окно полной информации, но оно пока нефункционально, не удается сделать нормальное выравнивание, буду делать специальное окно.

Дальше планирую добавить просмотр изображений, текста, воспроизведение звуковых файлов и просмотр прочих файлов в HEX-формате.

odd 14.07.2009 03:27

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Ура! Наконец-то. Можно будет уже выпустить первую версию библиотеки в свет.

А можно сделать так, чтоб при прикреплении в начало фейкового файла, его длина автоматически отображалась в поле "пропустить N байт"? А то напряжно смотреть какая там длина у файла.

ViNT 16.07.2009 02:52

Ответ: Как запаковать и извлеч картинки и прочюю информацию в DAT?
 
Вложений: 1
Цитата:

Сообщение от odd (Сообщение 110895)
А можно сделать так, чтоб при прикреплении в начало фейкового файла, его длина автоматически отображалась в поле "пропустить N байт"? А то напряжно смотреть какая там длина у файла.

Сам как-то не додумался, добавил. Также, переделал окно информации.

Дальше сделаю создание информационного файла для корректной распаковки пакета RESPacker'ом и шифрование заголовка(в этом билде забыл сделать).


Часовой пояс GMT +4, время: 08:05.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot