На одном собрании директор завода поставил мне очень важную задачу, которую я сохранил на своем компьютере, но после атаки злобных какеров на компьютер часть фразы была утеряна... Постойте, у меня же сохранилась контрольная сумма от фразы!
Файлы из папки public
Нам нужно востановить текст, ориентируясь на контрольную сумму. Мы знаем алгоритм востановления CRC - можем воспользоваться им. Его описание приведено в pdf-файле.
Ещё хочется отметить, что нам "повезло" и атака востановила тот же флаг, что был задуман нами. Иногда случается коллизия и находится другой текст с таким же CRC - это связано с тем моментом, что при инвертировании таблицы мы могли выбрать не тот элемент (например, в атаке мы берем крайний байт при составлении таблицы table_reverse - вот в ней может быть неоднозначное соответствие между последним байтом и значением CRC, если бы мы её строили "честно" - то есть брали при построении за основу таблицу table_forward). В таком случае нам нужно было бы обойти дерево всех возможных случаев и восстановить все тексты. Критерием отбора "настоящего" флага можно считать печатаемость всех символов, а если и этого будет мало, то осмысленность текста.
Атака реализована в скрипте.
CUP{D3AdLiNs_It_Ea$Y}