Общие модули Python

Резюме: Здесь указаны общие модули, которые по мере необходимости используются в кейгенах
к соответствующим crackmes. Модули оформлены как .py-файлы. Список доступных
модулей для скачивания приведен ниже.

1. Что такое модуль.
Python позволяет поместить классы, функции или данные в отдельный файл и использовать их в других программах. Такой файл называется модулем. Объекты из модуля могут быть импортированы в другие модули. Имя файла образуется путем добавления к имени модуля расширения .py. При импорте модуля интерпретатор ищет файл с именем my_module.py сначала в текущем каталоге, затем в каталогах, указанных в переменной окружения PYTHONPATH, затем в зависящих от платформы путях по умолчанию.

2. Импорт модуля

import my_module

Доступ ко всем функциям, которые в модуле определены (один из вариантов)

my_module.func1()
my_module.func2()

Модули (разное):


1. модуль MMX (эмулятор MMX-регистров и MMX-инструкций)
MMX - коммерческое название дополнительного набора инструкций, выполняющих характерные для процессов
кодирования/декодирования потоковых аудио/видео данных действия за одну машинную инструкцию.
Набор команд MMX можно посмотреть здесь.

2. Расширенный алгоритм Евклида
Используется для поиска обратного по модулю значения (multiplicative inverse).
В то время как "обычный" алгоритм Евклида просто находит наибольший общий делитель двух чисел a и b, расширенный алгоритм Евклида находит помимо НОД также коэффициенты x и y такие, что:
a * x + b * y = gcd(a, b)
Т.е. он находит коэффициенты, с помощью которых НОД двух чисел выражается через сами эти числа.

3. Извлечение квадратного корня в поле вычетов (алгоритм Шенкса или Шенкса-Тонелли)
Рассмотрим сравнение вида:
$x^2 \equiv a \pmod p$
a – квадратичный вычет (по модулю p). Что такое x? В обычной арифметике, это выражение равносильно нахождению квадратного корня числа. В модульной арифметике, x - квадратный корень a по модулю р, где р – простое число.
В общем случае, нахождение корня - это очень сложная задача. По сути, это эквивалент факторизации числа, потому что нет эффективного алгоритма для ситуации, когда надо найти квадратный корень по составному модулю (если модуль является составным, то его надо факторизовать в первую очередь).
Но вот когда р – простое число, то существует эффективный полиномиальный алгоритм для вычисления х. Это алгоритм Шенкса или Шенкса-Тонелли алгоритм. Теория и описание алгоритма.
Вычисление квадратного корня по модулю, вероятно, не относится к ежедневным задачам, но встречается в riddles, challenges и crackme. Eli Bendersky написал Python-реализацию этого алгоритма.

4. Битовые операции
Такие, как циклический сдвиг влево ROL или вправо ROR.

5. Декомпилятор TI-Basic
TI-BASIC - неофициальное имя BASIC-подобного языка, встроенного в графические калькуляторы Texas Instruments (TI), а именно серия TI-83/TI-84 Plus/TI-89/TI-92 (в том числе Voyage 200)/TI-73/TI-Nspire. Сокращение TI-BASIC встречается в документации для разработчиков.

Модули (криптоалгоритмы):


1. Whirlpool (хэш-функция)
Whirlpool — криптографическая хэш-функция, разработанная Винсентом Райжменом (Vincent Rijmen) и Паулом Баретто (Paulo S. L. M. Barreto). Впервые опубликована в ноябре 2000 года. Осуществляет хэширование входного сообщения с длиной до 2256 бит. Выходное значение хэш-функции Whirlpool, называемое хэшем, составляет 512 бит. Автор Python реализации алгоритма Whirlpool - Bjorn Edstrom <es.nrjb|eb#es.nrjb|eb> (16 декабря 2007).

2. RIPEMD-160 (хэш-функция) RIPEMD-160 – 160-битная криптографическая хэш-функция. Автор Python реализации алгоритма Dwayne C. Litzenberger <ten.ztild|ztild#ten.ztild|ztild> (2008). Смотрите описание RIPEMD-160.

3. RC4 (потоковый шифр)
RC4 – это потоковый шифр с переменным размером ключа, разработанный в 1987 году Роном Ривестом для RSA Data Security, Inc. Смотрите описание RC4.

4. HappyTownHash (хэш-функция)
Хэш-функция, которая встречается в crackmes (автор happytown). Смотрите пример crackme. Я не нашел к какой из существующих хэш-функций она относится. Поэтому я сделал ее Python-реализацию.

5. SHA-1/SHA-2 (семейство хэш-функций)
SHA-1/2 - это семейство криптографических функций, определенных стандартом FIPS-180-4 (март 2012). За основу взята Python-реализация Stefano Palazzo, код написан без оптимизаций, только для образовательных целей. Описание стандарта смотрим здесь.

Пока не указано иное, содержимое этой страницы распространяется по лицензии Creative Commons Attribution-ShareAlike 3.0 License