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 details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file cryptanalib3-1.0.0b0.tar.gz.

File metadata

  • Download URL: cryptanalib3-1.0.0b0.tar.gz
  • Upload date:
  • Size: 139.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.6

File hashes

Hashes for cryptanalib3-1.0.0b0.tar.gz
Algorithm Hash digest
SHA256 c318fc6f178d9d4ea26e0ba91f2cb97db40c2a8d349dff7c16c6c9a76a1506ca
MD5 b97883193eb6c373d05734d414b762ae
BLAKE2b-256 4eff5a5fd28603f5d3b10715bceb3e48004d9df35b759cf8c9c883ed5b595388

See more details on using hashes here.

File details

Details for the file cryptanalib3-1.0.0b0-py3-none-any.whl.

File metadata

  • Download URL: cryptanalib3-1.0.0b0-py3-none-any.whl
  • Upload date:
  • Size: 138.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.50.0 CPython/3.8.6

File hashes

Hashes for cryptanalib3-1.0.0b0-py3-none-any.whl
Algorithm Hash digest
SHA256 25d2e6d24e71d0c6e4b542c6e8d5e4e71e9a6b041cda482adfaaacdba706908f
MD5 a8d986112eb10c10a0dc880716fd596a
BLAKE2b-256 4b525210ed96483d294d3fa3996fc8a747814ba6e19d94ced98ab69c083e21aa

See more details on using hashes here.

Supported by

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