Вопрос Алгоритм ELF

Статус
В этой теме нельзя размещать новые ответы.
  • 112
  • 92
Контакты для связи отсутствуют.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Короче, делаю крякми с алгоритмом, как я недавно узнал, ELF или PJW hash function(нашел в интернете)
Вот как выглядит:
C++:
static unsigned long elf_hash(const unsigned char* name)
{
    unsigned long h = 0, g = 0;
    while (*name) {
        h = (h << 4) + *name++;
        if ((g = h & 0xf0000000))
            h ^= g >> 24;
        h &= ~g;
    }
    return h;
}
Я как понял, ее нельзя сделать в обратную сторону. У меня есть хэш,который должен получиться - 0xA50B8B0, и количество символов - 16. Я пробовал через rand() на питоне, все нашлось, но когда делаю через rand() на с++, тогда ничего не находит, т.к у меня просто начинается по второму кругу.
Как правильно брутфорсить 16 символов?(Т.к я понял что его невозможно "развернуть". Перебирать каждый символ это оооооочень долго, но с функцией в питоне rand() ,все оказалось намного быстрее)
 
Последнее редактирование:
  • 1
  • 0
Контакты для связи отсутствуют.
Вот как выглядит:
Это действительно PJW и используется в ELF формате для хранения таблицы символов в таблице DT_HASH (В DT_GNU_HASH юзается DJB).
Если хэш юзается для поиска функции апи, то можно просто перебрать все имена функций которые есть в нужной библиотеке.
rand() это на шару, возможно есть смысл чтобы подобрать строку которая просто подойдет из-за коллизии (но тогда не обязательно и длиной 16), но узнать оригинал вряд ли поможет, тем не менее результат rand() ограничен константой RAND_MAX, а так же сид одинаковый при перезапусках, его нужно задавать явно через srand() например от штампа времени, или лучше использовать что-то порандомнее.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу