Metadata-Version: 2.1
Name: CryptoLyzer
Version: 0.12.2
Summary: A comprehensive cryptographic settings analyzer
Author: Szilárd Pfeiffer
Author-email: coroner@pfeifferszilard.hu
Maintainer: Szilárd Pfeiffer
Maintainer-email: coroner@pfeifferszilard.hu
License: MPL-2.0
Project-URL: Homepage, https://gitlab.com/coroner/cryptolyzer
Project-URL: Changelog, https://cryptolyzer.readthedocs.io/en/latest/changelog
Project-URL: Documentation, https://cryptolyzer.readthedocs.io/en/latest/
Project-URL: Issues, https://gitlab.com/coroner/cryptolyzer/-/issues
Project-URL: Source, https://gitlab.com/coroner/cryptolyzer
Keywords: ssl tls gost ja3 hassh https pop3 smtp imap ftp rdp xmpp jabber ldap sieve ssh hsts dnssec
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console
Classifier: Framework :: tox
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Information Technology
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
Classifier: Natural Language :: English
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Programming Language :: Python
Classifier: Topic :: Internet
Classifier: Topic :: Internet :: File Transfer Protocol (FTP)
Classifier: Topic :: Internet :: XMPP
Classifier: Topic :: Security
Classifier: Topic :: Security :: Cryptography
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Software Development :: Testing :: Traffic Generation
Classifier: Topic :: Software Development :: Testing
Description-Content-Type: text/x-rst
License-File: LICENSE.txt
Requires-Dist: attrs<22.0.1,>=20.3.0
Requires-Dist: bs4
Requires-Dist: certvalidator
Requires-Dist: colorama
Requires-Dist: cryptoparser>=0.12.2
Requires-Dist: pathlib2==2.3.7.post1; python_version < "3.4"
Requires-Dist: pathlib2; python_version >= "3.4"
Requires-Dist: pyfakefs
Requires-Dist: python-dateutil
Requires-Dist: requests
Requires-Dist: dnspython
Requires-Dist: typing; python_version < "3.5"
Requires-Dist: urllib3
Requires-Dist: enum34==1.1.6; python_version < "3"
Requires-Dist: pathlib2==2.3.7.post1; python_version < "3"
Requires-Dist: Mock; python_version < "3"
Requires-Dist: unittest2; python_version < "3"
Provides-Extra: test
Requires-Dist: coverage; extra == "test"
Provides-Extra: pep8
Requires-Dist: flake8; extra == "pep8"
Provides-Extra: pylint
Requires-Dist: pylint; extra == "pylint"

**CryptoLyzer** is a fast, flexible, and comprehensive server cryptographic protocol
(`TLS <https://en.wikipedia.org/wiki/Transport_Layer_Security>`__,
`SSL <https://en.wikipedia.org/wiki/Transport_Layer_Security#SSL_1.0,_2.0,_and_3.0>`__,
`SSH <https://en.wikipedia.org/wiki/Secure_Shell>`__,
`DNSSEC <https://en.wikipedia.org/wiki/Domain_Name_System_Security_Extensions>`__) and related setting
(`HTTP headers <https://en.wikipedia.org/wiki/List_of_HTTP_header_fields>`__,
`DNS records <https://en.wikipedia.org/wiki/List_of_DNS_record_types>`__) analyzer and fingerprint
(`JA3 <https://engineering.salesforce.com/tls-fingerprinting-with-ja3-and-ja3s-247362855967>`__,
`HASSH <https://engineering.salesforce.com/open-sourcing-hassh-abed3ae5044c/>`__ tag) generator with
`application programming <https://en.wikipedia.org/wiki/API>`__ (API) and
`command line <https://en.wikipedia.org/wiki/Command-line_interface>`__ (CLI) interface.

However the API can provide the most complete functionality, the CLI also strives to be as comprehensive as possible. To
do that CLI provides three output formats. The first one for human analysis where the cryptographic algorithm names and
the values of key sizes and other security-related settings are colorized according to their security strength using the
well-known `traffic light rating system <https://en.wikipedia.org/wiki/Traffic_light_rating_system>`__. The other two
output formats (`Markdown <https://en.wikipedia.org/wiki/Markdown>`__, `JSON <https://en.wikipedia.org/wiki/JSON>`__)
are machine-readable, however the Markdown format even human-readable and even suitable for generating documentation in
different formats (e.g. DOCX, PDF, ...).

The strength of CryptoLyzer compared to its competitors is that it contains a custom implementation of cryptographic
protocols (`CryptoParser <https://cryptoparser.readthedocs.io>`__), which are as small as absolutely necessary for the
analysis, but as most comprehensive algorithm identifier sets of the cryptographic protocols
(`CryptoDataHub <https://cryptodatahub.readthedocs.io>`__) as possible. The combination of the two properly makes it
possible to check the support of rarely used, deprecated, non-standard, or experimental algorithms and methods that are
not yet or have never been supported by the most popular cryptographic algorithms. This way of working leads to the fact
that CryptoLyzer can recognize more TLS cipher suites than listed in total on
`Ciphersuite Info <https://ciphersuite.info/cs/>`__.

-----
Usage
-----

Pip
===

.. code:: shell

   pip install cryptolyzer

   cryptolyze tls all www.example.com
   cryptolyze tls1_2 ciphers www.example.com
   cryptolyze ssh2 ciphers www.example.com
   cryptolyze http headers www.example.com
   cryptolyze dns dnssec example.com

Docker
======

.. code:: shell

   docker run --rm coroner/cryptolyzer tls all www.example.com
   docker run --rm coroner/cryptolyzer tls1_2 ciphers www.example.com
   docker run --rm coroner/cryptolyzer ssh2 ciphers www.example.com
   docker run --rm coroner/cryptolyzer http headers www.example.com
   docker run --rm coroner/cryptolyzer dns dnssec example.com

.. code:: shell

   docker run -ti --rm -p 127.0.0.1:4433:4433 coroner/cryptolyzer ja3 generate 127.0.0.1:4433
   openssl s_client -connect 127.0.0.1:4433

   docker run -ti --rm -p 127.0.0.1:2121:2121 coroner/cryptolyzer ja3 generate ftp://127.0.0.1:2121
   openssl s_client -starttls ftp -connect 127.0.0.1:2121

.. code:: shell

   docker run -ti --rm -p 127.0.0.1:2222:4433 coroner/cryptolyzer hassh generate 127.0.0.1:2222
   openssl s_client -connect 127.0.0.1:2222

-------
Support
-------

Python implementation
=====================

-  CPython (2.7, 3.3+)
-  PyPy (2.7, 3.5+)

Operating systems
=================

-  Linux
-  macOS
-  Windows

------------
Social Media
------------

-  `Twitter <https://twitter.com/CryptoLyzer>`__
-  `Facebook <https://www.facebook.com/cryptolyzer>`__

-------------
Documentation
-------------

Detailed `documentation <https://cryptolyzer.readthedocs.io>`__ is available on the project's
`Read the Docs <https://readthedocs.com>`__ site.

-------
License
-------

The `code <https://gitlab.com/coroner/cryptolyzer>`__ is available under the terms of
`Mozilla Public License Version 2.0 <https://www.mozilla.org/en-US/MPL/2.0/>`__ (MPL 2.0).

A non-comprehensive, but straightforward description of MPL 2.0 can be found at
`Choose an open source license <https://choosealicense.com/licenses#mpl-2.0>`__ website.

-------
Credits
-------

-  `NLnet Foundation <https://nlnet.nl>`__ and `NGI Assure <https://www.assure.ngi.eu>`__, supports the project part of
   the `Next Generation Internet <https://ngi.eu>`__ initiative.
-  Icons made by `Freepik <https://www.flaticon.com/authors/freepik>`__ from `Flaticon <https://www.flaticon.com/>`__.
