| 
| 
 | Вопрос # 3 223/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Помогите в следующем вопросе. Необходимо подделать CRC32 файла (можно даже с дописыванием 4-х байт в конец). Изучил много про CRC, но вот организовать подделку не получается. Почитал Криса Касперского, но споткнулся в примере на unsigned long tmp = crc32(0, i) и z = crc32f(z, x[k]), а где брать crc32() и crc32f() там не рассказано.
 Так что помогите, если можете, получить эти четыре байта, которые можно поставить в конец измененного файла так, чтоб CRC32 оказалось равным CRC32 исходного (не измененного) файла. Как вычислить само CRC32 я знаю.
 Заранее благодарю.
 
|  |   Вопрос задал: Светлов (статус: Посетитель)Вопрос отправлен: 23 сентября 2009, 16:14
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 23 сентября 2009, 16:36; участников в обсуждении: 1. 
|   | Вадим К (статус: Академик), 23 сентября 2009, 16:36 [#1]:Оставим этический аспект вопроса в стороне. В целом, в общем случае хеш (а crc есть тоже хешем!) проектируется так, что бы изменение одного бита в исходном сообщении приводило к значимым изменениям хеша (значимое - приблизительно половина бит хеша). Поэтому в идеале такая "подделка" может быть реализована только полным перебором.
 Но у crc32 есть один недостаток - он короткий ( то есть, реально перебрать все варианты) и если к тексту добавим новые байты, то хеш результата не зависит от того, какой был текст, а только от его crc.
 Именно на это и намекает Крис. В самом простом случае просто делается перебор всех возможных значений нового байта и результирующего crc. Правда это не так быстро, но...
 В лучшем случае ищеться коллизия. Коллизия - это когда два разных текста дают один и тот же хеш. И в результате надо перебирать не всё, а лишь часть. Почитайте ещё и ещё что он пишет. Конечно, прямо так для Вас он решение не напишет (этикет не позволит), но вот всё для этого там будет.
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |