Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| | |
Печатные символ определяется значением примерно шести битов... 30.05.06 21:01 Число просмотров: 3393
Автор: RElf <M> Статус: Member
|
> Только вот не могу найти доку по тому что достаточно > 6 символов для генерации любого реального crc32...
Печатные символ определяется значением примерно шести битов. Поэтому 6 печатных символов - это примерно 36 битов, что больше размера crc32. Из вероятностных соображаний следует, что изменение 36 битов будет достаточно для подгонки значения crc32 под требуемое.
|
<theory>
|
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 под требуемое.
|
|
|