информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Где водятся OGRыСтрашный баг в WindowsSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Крупный взлом GoDaddy 
 Просроченный сертификат ломает... 
 Phrack #70/0x46 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / theory
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
reversing crc32 29.05.06 12:41  
Автор: lse Статус: Незарегистрированный пользователь
<"чистая" ссылка>
может кто-то уже делал.
Есть значение crc32, надо подобрать строчку с таким же crc32.
Где-то писали что с помощью 6 символом можно такое сделать для любого crc32.
Если разрешены все 256 возможных значений байтов, то... 30.05.06 01:01  
Автор: RElf <M> Статус: Member
Отредактировано 30.05.06 01:02  Количество правок: 2
<"чистая" ссылка>
> Есть значение crc32, надо подобрать строчку с таким же
> crc32.
> Где-то писали что с помощью 6 символом можно такое сделать
> для любого crc32.

Если разрешены все 256 возможных значений байтов, то достаточно изменить значения 4-х байтов для подгонки crc32 под требуемую. Вот соответствующий код:

#include<stdio.h>
#include<stdint.h>
uint32_t c,c2,p2,pol=0xEDB88320;
size_t n,k;
main() {
printf("CRC32 Adjuster 1.1 (c) 2001,06 by RElf\n");
printf("Length of data: "); scanf("%ld",&n);
printf("Offset to patch: "); scanf("%ld",&k);
n = (n-k)*8;
printf("Current CRC32: 0x"); scanf("%x",&c);
printf("Desired CRC32: 0x"); scanf("%x",&c2);
c ^= c2;
p2 = (pol << 1) | 1;
while(n--) if(c&0x80000000) c = (c<<1)^p2; else c<<=1;
printf("XOR masks: %02X %02X %02X %02X\n", c&0xff, (c>>8)&0xff, (c>>16)&0xff, c>>24);
}
нет, это поиск печатаемых символов. 30.05.06 12:22  
Автор: lse Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Если разрешены все 256 возможных значений байтов, то
> достаточно изменить значения 4-х байтов для подгонки crc32
> под требуемую.
нет, это поиск печатаемых символов.
Но спасибо за ответ, я уже сам реверснул crc32,
теперь достаточно первые два символа перебирать а остальные вычисляются
на основе последнего значения crc32.
Только вот не могу найти доку по тому что достаточно
6 символов для генерации любого реального crc32...
Печатные символ определяется значением примерно шести битов... 30.05.06 21:01  
Автор: RElf <M> Статус: Member
<"чистая" ссылка>
> Только вот не могу найти доку по тому что достаточно
> 6 символов для генерации любого реального crc32...

Печатные символ определяется значением примерно шести битов. Поэтому 6 печатных символов - это примерно 36 битов, что больше размера crc32. Из вероятностных соображаний следует, что изменение 36 битов будет достаточно для подгонки значения crc32 под требуемое.
1






Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2021 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach