Поиск алгоритма вычисления контрольной суммы...

Тема в разделе "WASM.RESEARCH", создана пользователем GluckMaker, 9 авг 2007.

  1. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Есть некий 64-байтный блок, в состав которого входит 32-разрядная контрольная сумма. Блок данных и контрольная сумма формируются чёрным ящиком. Существуют ли какие-то методы/подходы, позволяющие предположить, как она считается? Получить контрольную сумму от произвольного блока нельзя, но можно набрать много (сотни) готовых вариантов. Кроме того, можно получить последовательность блоков, различающихся несколькими или даже одним байтом, что-то типа этого:
    Код (Text):
    1. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    2. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    3. 16 40 1e 40 0a 00 00 00-00 01 c0 b0 00 00 00 00
    4. 16 40 1e 40 0a 00 00 00-00 01 c0 b0 00 00 00 00
    5. ---
    6. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    7. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    8. 16 41 1e 00 09 00 00 00-84 c5 08 70 00 00 00 00
    9. 16 41 1e 00 09 00 00 00-84 c5 08 70 00 00 00 00
    10. ---
    11. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    12. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    13. 16 41 1e 00 08 00 00 00-ef 4e b8 4b 00 00 00 00
    14. 16 41 1e 00 08 00 00 00-ef 4e b8 4b 00 00 00 00
    И так далее, пока байт по смещению 0x24 не обнулится (после первого раза больше никакие байты кроме этого не меняются). Байты 0x20-0x2f и 0x30-0x3f дублируются, 4 байта по смещению 0x28 - и есть эта сумма. Пока только понял, судя по реакции на изменение 1 бита, что это не может быть LRC. Пробовал считать CRC32 на 4 стандартных полиномах от нескольких очевидных кусков блока - не срастается. Понятно, что в общем случае задача не решается (злой гений безграничен), но можно ли хотя-бы что-то выяснить? Например, понять, CRC32 это или нет (кроме перебора всех возможных полиномов и кусков, включая не непрерывные).
     
  2. mathio

    mathio New Member

    Публикаций:
    0
    Регистрация:
    16 июн 2007
    Сообщения:
    110
    Из предоставленного смею предположить, что DWORD по смещению 24h - есть количество байт по которым считается хеш.
    Тоесть в первом случае обсчитываем 10 байт:
    04 bf 98 ab c9 6d 02 80-26 48
    Далее 9:
    04 bf 98 ab c9 6d 02 80-26
    И 8:
    04 bf 98 ab c9 6d 02 80-


    ps
    Дайте чтоли значения от предполагаемой "длины" в 1, 2 и 3.
     
  3. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Нет, это не может быть количество байт, по которым считается хеш. Семантика этого байта (24h) известна - скажем так, это некий счётчик использования (с каждым разом декрементируется на 1). Для 1, 2 и 3 значений пока нет, есть такие:
    Код (Text):
    1. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    2. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    3. 16 41 1e 00 07 00 00 00-a9 6b 0b 83 00 00 00 00
    4. 16 41 1e 00 07 00 00 00-a9 6b 0b 83 00 00 00 00
    5. ---
    6. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    7. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    8. 16 41 1e 00 06 00 00 00-9c a9 f4 b3 00 00 00 00
    9. 16 41 1e 00 06 00 00 00-9c a9 f4 b3 00 00 00 00
    10. ---
    11. 04 bf 98 ab c9 6d 02 80-26 48 00 00 00 00 00 00
    12. 41 87 50 18 88 c0 64 16-3f 1b c0 00 16 40 00 00
    13. 16 41 1e 00 05 00 00 00-74 64 61 61 00 00 00 00
    14. 16 41 1e 00 05 00 00 00-74 64 61 61 00 00 00 00
     
  4. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    GluckMaker
    Задача из разряда "дохлых".
    А доступа к коду "черного ящика" ес-но нет.
     
  5. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Естественно - иначе какой же он нафиг чёрный? =)
    Попробую ещё поизменять разные байты и попроверять, где КС срастается, а где нет - хоть будет понятно, что в неё входит... Ещё одна бабка на базаре сказала, что у Кнута где-то описаны математические свойства CRC - тож попробую найти - видимо, не в тех томах и/или не в том издании, которое у меня есть... Хоть бы для начала доказать, CRC это, или нет.
     
  6. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    GluckMaker
    Да здесь что угодно может быть, если честно. Задача из области гадания на кофейной гуще.
     
  7. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Я думал, может, какие методы для подобного гадания есть (как есть они в криптографии для всяких "несерьёзных" шифров)...
     
  8. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    GluckMaker
    В любом случае эти методы основаны на большом количестве исходного материала -)
     
  9. t00x

    t00x New Member

    Публикаций:
    0
    Регистрация:
    15 фев 2007
    Сообщения:
    1.921
    GluckMaker
    великовата контрольная сумма (32) для такого блока (64).
    а вообще прямой перебор очень рулит.
     
  10. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Увы, то, что это не CRC, можно доказать на основе CRC(A^B^C)=CRC(A)^CRC(B)^CRC(C). А какие бывают стандартные 32-разрядные суммы кроме CRC? Как-то не верится, что кто-то специально выдумывал свой алгоритм КС (было бы из-за чего...) Возможны, конечно, варианты типа свёртки через DES/ГОСТ и т.п., но почему-то кажется, что это должно быть что-то относительно простое...
     
  11. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Adler вроде бы
    больше не слышал
     
  12. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Адлер - LRC. Он не будет так меняться при изменении 1 бита.
     
  13. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    h**p://w*w.isthe.com/chongo/src/fnv/fnv-4.1.tar.gz
     
  14. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    GluckMaker
    А почему бы и нет? Ведь тебе код черного ящика недоступен -), вот и гадай себе. Смысл наверное в нестандартности.
     
  15. GluckMaker

    GluckMaker New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2007
    Сообщения:
    7
    Нестандартность - это, конечно, хорошо, но поди докажи, что ты придумал хорошую контрольную сумму. По поводу моей задачки - оказалось, что как минимум 3 левые тетрады к контрольной сумме не имеют никакого отношения (они предсказуемы, но сначала я не обратил внимания, откуда они берутся). Четвёртая тетрада - под вопросом.