Skip to main content

A Python3 fork of the Cryptanalib cryptanalysis module from FeatherDuster

Project description

cryptanalib3

cryptanalib3 is a Python3 fork of the cryptanalib module from the FeatherDuster project, meant to be a standalone module for performing cryptanalysis and cryptographic exploit development.

Since Python3 forces a choice between bytes and string objects, cryptanalib3 now operates entirely on bytes objects in order to avoid the various ways in which Python manipulates strings to try to ensure the data is readable in the user's locale. All functions that consumed and return strings in the original Cryptanalib now receive and return bytes objects.

Usage

To use cryptanalib3, launch Python3 and import ca3. Since Python's built-in help() doesn't do a very good job of showing function prototypes with complex default values, there is a show_help() function provided that addresses this shortcoming and functions more or less identically to the built-in help(). You can use this function to explore the functions provided by the module, like so:

Using cryptanalib3 help

Cryptanalib3 can attempt to decode, identify, and look for indicators of vulnerability with the analyze_ciphertext() function:

Analyzing ciphertext

Here is an example of generating ciphertext from a script that will give us a flag encrypted with AES-CTR using a fixed nonce, as well as encrypting any value we like using the fixed nonce. We first use the analyze_ciphertext() function to determine that the ciphertext is generated with a stream cipher, and that there are signs that the key may be reused, indicated by the key_reuse keyword returned by the analysis. This means we can launch a known plaintext attack against the ciphertext, calculating the keystream by XORing together any corresponding known plaintext and ciphertext. We encrypt a long string of aaaa..., then XOR it with its encrypted version. We then XOR the keystream with the encrypted flag, decrypting it:

An attack on AES-CTR with fixed nonce

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cryptanalib3-1.0.0b0.tar.gz (139.2 kB view hashes)

Uploaded Source

Built Distribution

cryptanalib3-1.0.0b0-py3-none-any.whl (138.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page