Сейчас на форуме: zds (+5 невидимых) |
![]() |
eXeL@B —› Программирование —› Структура библиотек модулей в egb версии 3.0 |
Посл.ответ | Сообщение |
|
Создано: 25 июня 2013 04:26 · Поправил: lizergin · Личное сообщение · #1 Может быть кому-нибудь пригодится ... Название экспортируемых функций и процедур: extern "C" __declspec(dllexport) void G( module_info* ModuleInfo ); - заполнение структуры информацией о модуле( аналог GetInfo в PasswordsPro) extern "C" __declspec(dllexport) void B( kernel_config* KernelConfig ); - запуск ядра на выполнение( аналог GetHash в PasswordsPro) extern "C" __declspec(dllexport) int I( void* mem_pointer ); - копирование памяти между хостом и устройством extern "C" __declspec(dllexport) int M( void* mem_pointer ); - копирование памяти между хостом и устройством, существует если используется соль или имя пользователя extern "C" __declspec(dllexport) int C( salt_hash* SaltHash ); - присутствует когда соль является частью хеша, для их разделения( аналог GetData в PasswordsPro) typedef struct // На примере DES(Unix).dll { // Размер структуры 36 байт unsigned char return_hash[8]; // Извлеченный хеш unsigned char padding[8]; // Заполнение ( не используется ) char salt_with_hash[16]; // Исходный хеш с солью unsigned char return_salt[4]; // Извлеченная соль } salt_hash; typedef struct { // Размер структуры 32 байта char* AlgoritmName; // Указатель на строку с названием алгоритма хеширования unsigned int MaxPasswordLength; // Максимальная длина пароля unsigned int HashLength; // Длина хеша unsigned int BufferSize; // Размер общего буфера unsigned int HashWithSaltOffset; // Не ноль только когда соль является частью хеша unsigned int MaxSaltLength; // Максимальная длина соли или имени пользователя unsigned int SaltOffset; // Имеет не нулевое значение только когда модуль использует при хешировании соль или имя пользователя unsigned int Flags; // Основные флаги , которые определяют возможности данного модуля } module_info; Некоторые из флагов для поля Flags структуры module_info: #define PPF_BINARY_HASH 0x00000001 #define PPF_COMPLEX_HASH 0x00000004 #define PPF_USE_SALT_NAME 0x00000100 #define PPF_MD5_SALT 0x00000200 #define PPF_LOWER_NAME 0x00000400 #define PPF_UNICODE_NAME 0x00000800 #define PPF_LM1 0x01000000 #define PPF_LM2 0x02000000 typedef struct { // Размер структуры 40 байт unsigned int BlocksNumber; // Число блоков для устройства unsigned int ThreasNumber; // Число потоков для устройства unsigned int nCount; // Число хешей в списке для подбора unsigned int nPasswords; // Число паролей на поток void* pHashes; // Указатель на масив со списком хешей void* pPasswords; // Указатель на массив с паролями void* pMask; // Указатель на массив масок unsigned int nMask; // Число маскок в соответствующем массиве void* pResult; // Указатель на массив с результатом работы ядра void* pPasswordsMask; // Указатель на массив ( используется только для гибридной атаки , иначе он равен нулю, то есть пустой == null ) } kernel_config; Пример использования для получения информации о библиотеках : ![]() ![]() |
|
Создано: 07 февраля 2014 17:54 · Поправил: lizergin · Личное сообщение · #2 Всем привет . Если API для написания библиотек для своих алгоритмов в программе Hash Manager от инсайд закрыты , то это еще ничего не означает ... И вот как доказательство пример более качественного алгоритма для MD4 , который на каждом ядре дает выигрыш около двух миллионов паролей в секунду . Так что желаю удачи в ваших исследованиях ;) ![]() ![]() |
![]() |
eXeL@B —› Программирование —› Структура библиотек модулей в egb версии 3.0 |