
Автоматизированный модульный инструмент криптоанализа; то есть Оружие Математического Разрушения.
FeatherDuster — это инструмент, написанный в основном Дэниелом «unicornfurnace» Кроули при участии сообщества, для взлома криптографии; он пытается сделать процесс выявления и использования слабых криптосистем максимально простым. Cryptanalib — это движок, лежащий в основе FeatherDuster, и его можно использовать независимо от FeatherDuster.
Почему «FeatherDuster»? Среди некоторых крипто-энтузиастов есть внутренняя шутка, когда плохое использование криптографии или применение её для решения задачи, для которой она не предназначена, называют «посыпанием магической крипто-пыльцой фей». FeatherDuster предназначен для уборки магической крипто-пыльцы фей.
Это бета-релиз FeatherDuster. Некоторые вещи могут быть сломаны.
Если вы нашли ошибку, пожалуйста, создайте issue. Pull request'ы приветствуются и поощряются.
python featherduster/featherduster.py [ciphertext file 1] ... [ciphertext file n]
Если вы установили FeatherDuster в ваше виртуальное окружение, вы можете просто запустить его так:
(featherduster) $ featherduster [ciphertext file 1] ... [ciphertext file n]
При импорте образцов через позиционные аргументы каждый файл будет считан и обработан как отдельный шифртекст, независимо от формата файлов. FeatherDuster умеет автоматически распознавать и декодировать распространённые кодировки, так что ничего страшного, если эти файлы содержат закодированные образцы.
После запуска консоли FeatherDuster станут доступны альтернативные способы импорта шифртекстов, а именно возможность импортировать файл с образцами, разделёнными переводами строк, где каждая строка будет рассматриваться как отдельный образец, например:
68657920636f6f6c
796f752072656164
74686520726561646d65
а также возможность указать одиночный шифртекст в FeatherDuster через ввод в командной строке. Поскольку такой ввод завершается на символе новой строки, рекомендуется использовать какую-либо кодировку на случай, если образец содержит перевод строки.
Cryptanalib можно использовать отдельно от FeatherDuster для создания Python-инструментов для атак на криптографию. Документацию по функциям cryptanalib можно получить через Python-функцию help() следующим образом:
>>> import cryptanalib as ca
>>> dir(ca) # output edited for a cleaner README file
[ ... 'analyze_ciphertext', 'batch_gcd', 'bb98_padding_oracle', 'break_alpha_shift', 'break_ascii_shift', 'break_columnar_transposition', 'break_generic_shift', 'break_many_time_pad', ... ]
>>> help(ca.bb98_padding_oracle)
Help on function bb98_padding_oracle in module cryptanalib:
bb98_padding_oracle(ciphertext, padding_oracle, exponent, modulus, verbose=False, debug=False)
Bleichenbacher's RSA-PKCS1-v1_5 padding oracle from CRYPTO '98
Given an RSA-PKCS1-v1.5 padding oracle and a ciphertext,
decrypt the ciphertext.
ciphertext - The ciphertext to decrypt
padding_oracle - A function that communicates with the padding oracle.
The function should take a single parameter as the ciphertext, and
should return either True for good padding or False for bad padding.
exponent - The public exponent of the keypair
modulus - The modulus of the keypair
verbose - (bool) Whether to show verbose output
debug - (bool) Show very verbose output
Аналитический движок в Cryptanalib, используемый FeatherDuster, может автоматически обнаруживать кодировки и декодировать образцы. Движок предполагает, что все образцы создаются одним и тем же процессом (например, base64encode(aes_encrypt(datum))), но в некоторой степени может обрабатывать и смешанные образцы. В настоящее время Cryptanalib умеет обнаруживать и декодировать следующие схемы кодирования:
Аналитический движок Cryptanalib также может обнаруживать ряд свойств на этапе анализа: