Universal Steam Extractor
Баннер трудно не заметить... Но ещё нужно понять, что он кликабелен :D
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Итак, работа пошла колесом ;)
На данный момент готово:
PS: После полного переписывания всех алгоритмов чтения/записи/обхода значительно возросло быстродействие (снял много - около 30-40% - нагрузки с процессора за счет оптимизации кода).
Добавлено спустя 4 часа 15 минут 10 секунд:
Добавил оригинальный поиск элементов в кэше - по их хэш сумам. Поиск стал еще быстрее :)
На данный момент готово:
- Извлечение файла;
- Извлечение элемента (файла/каталога; пофиксил пару багов);
- Извлечение файлов для игр;
- Получение инфы о файле;
- Проверка элемента;
- Получение списка файлов в элементе;
- Открытие файла в кэше;
- Функция чтения открытого файла;
- Закрытие открытого ранее файла;
- Поиск файлов/папок;
- Создание ARCHIVE-файлов (100% как и у CFToolBox'а);
- Создание патчей (100% как и у CFToolBox'а).
- Функция записи открытого файла;
- Дописать фугкцию закрытия файла (будет необходимо пересчитывать КС для измененных областей);
- Создание патчей (пока немного косячит);
- Функция применения обновления.
PS: После полного переписывания всех алгоритмов чтения/записи/обхода значительно возросло быстродействие (снял много - около 30-40% - нагрузки с процессора за счет оптимизации кода).
Добавлено спустя 4 часа 15 минут 10 секунд:
Добавил оригинальный поиск элементов в кэше - по их хэш сумам. Поиск стал еще быстрее :)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Урааа! На прошлой неделе доделал-таки функции для работы с файлами в кэше! Правда есть одно но: контрольные суммы пока не пересчитываются в связи с большой сложностью реализации подсчета сигнатуры всех таблиц с контрольными суммами.
В дополнение к этому наткнулся большой подводный камень - сложность реализации процесса обновления файла - за четыре дня не придумал даже как заголовки правильно перебивать :(
PS: Думаю, дальше дело пойдет веселее - сессия фактически уже закончилась :)
В дополнение к этому наткнулся большой подводный камень - сложность реализации процесса обновления файла - за четыре дня не придумал даже как заголовки правильно перебивать :(
PS: Думаю, дальше дело пойдет веселее - сессия фактически уже закончилась :)
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Отпишусь о прогрессе работ.
На данный момент уже наполовину готова функция, создающая GCF-кэш с 0, осталось только правильно составить хэш-таблицу и контрольные суммы. Однако, будет одна сложность - сигнатуру пока составить без питоновского (или Сишного) костыля не получится - так и не нашел верной реализации алгоритма RSA на Delphi :(
На данный момент уже наполовину готова функция, создающая GCF-кэш с 0, осталось только правильно составить хэш-таблицу и контрольные суммы. Однако, будет одна сложность - сигнатуру пока составить без питоновского (или Сишного) костыля не получится - так и не нашел верной реализации алгоритма RSA на Delphi :(
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
andreil
http://yandex.ru/yandsearch?text=RSA+delphi&lr=213 первые 3 ссылки
Добавлено спустя 5 минут 43 секунды:
Я слежу за развитием use)
http://yandex.ru/yandsearch?text=RSA+delphi&lr=213 первые 3 ссылки
Добавлено спустя 5 минут 43 секунды:
Я слежу за развитием use)
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Я вообще-то таже находил несколько реализаций, но все они были "левыми" - результаты были у каждого свои и отличались от стандарта. Вывод - неверный/нестандартный алгоритм, хотя он всего один:
Главное здесь - реализовать сам алгоритм данного возведения в степень, чего я пока (для Delphi) не нашел :(
Код: Выделить всё
encr=data^e mod n
data=encr^d mod n
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Наконец свершилось маленькое, но чудо! Я смог перевести алгоритм RSA на Delphi, за что спасибо товарищу MOZGIII - натолкнул на повтор поисков, кои оказались плодотворнами - уже вчера я дописывал класс для работы с данным алгоритмом.
PS: До сих пор мучаюсь с правильным созданием файлов кэша с 0 - осталось только проверить правильность создаваемого дерева и заполнить блок контрольных сумм. Затем - добавить функции для добавления файлов к существующему файлу (пока кэш создается только с 0 путем рекурсивного обхода каталогов с файлами).
PS: До сих пор мучаюсь с правильным созданием файлов кэша с 0 - осталось только проверить правильность создаваемого дерева и заполнить блок контрольных сумм. Затем - добавить функции для добавления файлов к существующему файлу (пока кэш создается только с 0 путем рекурсивного обхода каталогов с файлами).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Есть большие сподвижки - почти полностью готов код, отвечающий за создание кэша с 0, а так же перерасчет контролных сумм файлов при их изменении (пока реализованно неоптимально, буду дорабатывать). Недостатком существующего на данный момент пересчета я вляется то, что при закрытии файла программа считывает его измененные части и считает КС для них, что значительно понижает быстродействие (получается, что каждй файл должен быть прочитан/записан три раза при создании кэша - считывается сам файл с диск, затем он пишется в кэш и, наконец, считывается для расчета контрольных сумм). Так что есть куда оптимизировать алгоритм ;)
PS: Кто хочет потестировать создание GCF, милости прошу отписаться в АСЮ - она будет включена максимально долго, всем отписавшимся вышлю версию программы для тестирования.
PS: Кто хочет потестировать создание GCF, милости прошу отписаться в АСЮ - она будет включена максимально долго, всем отписавшимся вышлю версию программы для тестирования.
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Пока не могу - из всех исходников пока готов только гласс для работы с GCF-кэшем (да и он еще постоянно меняется). Когда сделаю более законченную версию либы, так и выложу (с заголовками для работы с С++ ;) ).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Итак, начата работа над версией 4.0. Изменения:
- максимальная оптимизация кода;
- 100% поддержка функции "поток в потоке";
- в перспективе - полная кроссплатформенность (уже работаю над этим);
- добавлена функция обновления файлов кэша (отрабатывает намного быстрее, чем CFToolBox).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
MOZGIII
Можно будет читать файлы с путем наподобие "cache1.gcf/pak1.pak/file.ext" и т.п., т.е. все файлы рассматриваются как файловые потоки, метода чтения/записи/др. которых описанны в классе каждого формата.
PS: Немного напортачил с процедурой чтения - иногда читает 100% левак (опять напутал где-то со смещениями).
PSS: На данный момент кроме модуля Windows.pas не задействованно ничего (класс файлового потока писался с упором на KOL.pas, где он реализован максимально гибко, хотя я сделал его еще более гибким - методы для работы с потоком можно задавть при его создании). И еще - данная библиотека на 100% поддерживает Юникод (реализованно на основе встроенного типа string, что может создать бооольшие проблемы при юзании с С++).
Можно будет читать файлы с путем наподобие "cache1.gcf/pak1.pak/file.ext" и т.п., т.е. все файлы рассматриваются как файловые потоки, метода чтения/записи/др. которых описанны в классе каждого формата.
PS: Немного напортачил с процедурой чтения - иногда читает 100% левак (опять напутал где-то со смещениями).
PSS: На данный момент кроме модуля Windows.pas не задействованно ничего (класс файлового потока писался с упором на KOL.pas, где он реализован максимально гибко, хотя я сделал его еще более гибким - методы для работы с потоком можно задавть при его создании). И еще - данная библиотека на 100% поддерживает Юникод (реализованно на основе встроенного типа string, что может создать бооольшие проблемы при юзании с С++).
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
-
- Разработчик
- Сообщения: 910
- Зарегистрирован: 09.01.2009
- Откуда: Переезжаю в /dev/null
- Благодарил (а): 7 раз
- Поблагодарили: 65 раз
- Контактная информация:
andreil
Когда всё будет готово - напишеш ещё биндинги в виде класса для Delphi? Будет очень удобно! И ещё - будет ли там возможность получить хеш файла, не считая его вручную - из хедеров (любой, но лучше бы md5 или sha1 или стимовый adler32)? И вообще - получение инфы о gcf из его заголовков?
Когда всё будет готово - напишеш ещё биндинги в виде класса для Delphi? Будет очень удобно! И ещё - будет ли там возможность получить хеш файла, не считая его вручную - из хедеров (любой, но лучше бы md5 или sha1 или стимовый adler32)? И вообще - получение инфы о gcf из его заголовков?
- andreil
- Разработчик
- Сообщения: 781
- Зарегистрирован: 14.08.2006
- Откуда: Светлогорск, Беларусь
- Поблагодарили: 2 раза
- Контактная информация:
Тебе хватит этого?:
Насчет хэша - можно, но есть одно но - он считается для кусочков файлов по 32768 байт (и менее, если кусок меньше - конец файла) + хэш там не просто adler32, а следующий код:
А насчет классов - все и так будет реальзованно в простейшем классе ("TGCFFile = class (TObject).....").
Код: Выделить всё
// информация о файле кэша
property IsNCF: boolean read fIsNCF;
property GetCacheID: ulong read fFileHeader.ApplicationID;
property GetCacheVersion: ulong read fFileHeader.ApplicationVersion;
// свойства получения информации о элементах
property ItemsCount: ulong read fManifestHeader.NodeCount;
property ItemSize[Item: integer]: TItemSize read GetItemSize;
// свойства для работы с именами элементов
property ItemByPath[Item: string]: integer read GetItemByPath;
property ItemName[Item: integer]: string read GetItemName;
property ItemPath[Item: integer]: string read GetItemPath;
Код: Выделить всё
function Checksum(lpBuffer: pByte; uiBufferSize: uint): ulong;
begin
result:=Adler32(0, lpBuffer, uiBufferSize) xor CRC32(lpBuffer, uiBufferSize);
end;
[url=svn://forum.csmania.ru/andreil]Репозиторий с моими проектами[/url]
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).
Занимаюсь переносом всех своих библиотек на С++, а так же созданием их кроссплатформенных версий.
В команду переводчиков манги "Ah! My Goddess!" требуются переводчики с английского и тайперы (последних можем обучить, главное - желание).