Skip to content

spbu-math-cs/kotlin-2022-class2

Repository files navigation

Дело о секретной лаборатории

Введение

Полиция города Санкт-Петербург накрыла лабораторию по производству сомнительного кода на языке Kotlin.
Удалось задержать непосредственных guano-кодеров, они были направлены на общественные работы - предсказывать исходы хоккейных матчей по полёту птиц.

К сожалению, главный организатор лаборатории так и не был пойман. Пытаясь выйти на его след, стражи закона проанализировали изъятое оборудование и нашли несколько подозрительных директорий на диске. Используя свою интуицию и всю доступную убедительность при общении с рядовыми работниками ликвидированной лаборатории, полицейские смогли выяснить, что подозрительные директории являются некими кустарным шифром главного злодея. Для некоторых директорий даже удалось выяснить, исходные сообщения - они находятся в файлах sampleN.N.tgz - см. тесты. Также один из рядовых работников ликвидированной лаборатории успел рассказать основную идею алгоритма шифрования. Однако потом внезапно у него заболело горло, и он не смог рассказать весь алгоритм.

Вам необходимо расшифровать зашифрованные записи. Есть основания полагать, что данные об основателе лаборатории зашифрованы в secret.tgz! Реализуйте алгоритм дешифрования и шифрования в классах DecodeStream и EncodeStream соответственно. Используйте тесты для проверки, при необходимости пишите свои.

Стенограмма допроса относительно алгоритма шифрования

... Кхе-кхе-кхе... Похоже дни мои сочтены... Дайте ещё мороженого и я всё расскажу! О, вы так добры! Что ж, он очень хитёр и не доверяет корпорациям, поэтому он придумал свой код... кхе-кхе-кхе... Все данные записывались в файлы случайной длины в случайных поддиректориях одной директории... Важно правильно их обойти. Как?! В каждой директории по алфавиту, сначала все директории, в глубину, потом уже файлы... Но важны только файлы, в директориях ничего не спрятано... Мороженого, ещё мороженого! Вот так, хорошо... кхе-кхе-кхе... Всё зашифровано паролем, не сложно, наверно простой XOR, не это главное! Он просто гений, но он очень боялся, боялся забыть пароль... он был очень хитёр! Так что пароль хранится там же, в файлах, в первых файлах... Но не в них самих, а во времени их последнего изменения... Стоит только поменять файл - и всё пропало! Кхе-кхе-кхе... Вам никогда его не поймать, он - чёртов гений! Помяните моё слово... Уберите руки! Не надо быть такими убедительными, я расскажу! Кхе-кхе-кхе... Ещё мороженого, умоляю! Да, последняя цифра в секундах создания! Он любил цифры... Кроме цифры 0, она вгоняла его уныние, потому что напоминала о пустоте... Все его пароли были только из любимых цифр. Кхе-кхе-кхе... Вот так по одной цифре в файле, файл за файлом он и прятал свои пароли... Но только пока идут любимые цифры... Это было просто невероятно! Вам никогда его не поймать! ... О, как же болит горло от вашего мороженого! Глупцы, больше вы ничего от меня не услышите! ....

(После этого подозреваемый не смог ничего сказать и был увезён в больницу)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages