Password cracking: Difference between revisions

From Rixort Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 21: Line 21:
* What options does the chosen language support?
* What options does the chosen language support?
* Which options are the most efficient?
* Which options are the most efficient?
Contents of lookup tables:
* Dictionary words
* Common words not in dictionary (e.g. TV shows)
* Simple combinations, such as dictionary word concatenated with '1', '123' etc.
* Every possible combination of case and 0-9a-z from 6-12 characters in length.


== Libraries ==
== Libraries ==

Revision as of 17:16, 22 July 2018

Initial steps

Steps required for password cracking software:

  1. Identify which columns contain the username and the password (hashed or otherwise). May be easier to convert to a standard internal representation before processing.
  2. Identify the algorithm used.
  3. Identify whether a salt is used.

From these there are multiple stages:

  1. If no salt is used (e.g. plain MD5), consult a pre-computed lookup table.

Identifying an algorithm

  • Length: 32 characters (16 bytes) is likely to be MD5.
  • Characters: 0-9a-zA-Z is likely to be MD5.

Lookup tables

  • How should these be delivered? Plain text file, SQLite database, Lightning Memory-Mapped Database (LMDB), something else?
  • What options does the chosen language support?
  • Which options are the most efficient?

Contents of lookup tables:

  • Dictionary words
  • Common words not in dictionary (e.g. TV shows)
  • Simple combinations, such as dictionary word concatenated with '1', '123' etc.
  • Every possible combination of case and 0-9a-z from 6-12 characters in length.

Libraries

Ultimately most libraries end up being a wrapper around OpenSSL.

Python

hashlib is the Python wrapper around OpenSSL and appears to be in the standard library.