Сейчас на форуме: bartolomeo, asfa, _MBK_, Adler (+7 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› CRC32 |
Посл.ответ | Сообщение |
|
Создано: 11 декабря 2011 21:24 · Личное сообщение · #1 Есть простая задача - создать файл размером 4 байта с заданным CRC32. Для этого можно использовать PEiD - плагин CRC32 натравить на пустой файл и ввести необходимое значение CRC. Однако таких файлов будет ~20k ![]() В сети ничего готового не нашел (fakecrc не подходит). Есть желание переделать для своих целей этот алгоритм: Code:
Буду благодарен за любую помощь. ![]() |
|
Создано: 11 декабря 2011 21:46 · Поправил: Yuri4850 · Личное сообщение · #2 Насколько я понимаю, "Current CRC32", n и k в моем случае равны 0. Соответственно строки 9, 12 - 14 пропускаю. Беру файл в четыре байта ( 69 12 36 С6 ), созданный пейдом, с CRC32 83D3E67B. Беру 83D3E67B в качестве "Desired CRC32" и прогоняю через алгоритм. На выходе, естественно, получаю байты 7B E6 D3 83 ![]() Что я делаю не так? ![]() |
|
Создано: 11 декабря 2011 23:51 · Личное сообщение · #3 Обычно CRC считают по схеме CRC32 = NOT CalcCRC32(<DATA>,0xFFFFFFFF) Code:
P.S. извините за корявый код, это с мясом выдрано из одного проекта. ![]() |
|
Создано: 11 декабря 2011 23:55 · Поправил: mysterio · Личное сообщение · #4 |
|
Создано: 12 декабря 2011 01:03 · Личное сообщение · #5 |
|
Создано: 12 декабря 2011 01:27 · Личное сообщение · #6 |
|
Создано: 12 декабря 2011 01:34 · Личное сообщение · #7 |
|
Создано: 12 декабря 2011 07:01 · Поправил: PE_Kill · Личное сообщение · #8 Yuri4850 твой случай является частным для теории CRC. Поэтому найти Msg32 под Crc32 - фактически найти делимое по остатку, а тот факт, что при делении не применяются переносы бит, вообще всё сводит к сдвигу бит и их перексориванию. Вот побитовый алгоритм: Code:
Результат: Data for CRC32(C6361269): BD CF 25 8B Алгоритм можно преобразовать в табличный, для высокой скорости подсчета. ----- Yann Tiersen best and do not fuck ![]() |
|
Создано: 13 декабря 2011 01:17 · Личное сообщение · #9 Всем спасибо, получилось-таки. Если кому интересно, вот вариант на VB ![]() Code:
![]() |
![]() |
eXeL@B —› Вопросы новичков —› CRC32 |