Skip to content


Subversion checkout URL

You can clone with
Download ZIP
An experiment to evolve Markov models that guess passwords
C# Other
Branch: master
Failed to load latest commit information.
experiments Refactored code
paper Refactored code
PasswordEvolution.userprefs Fixed all the condor bugs

Markov Chain Password Evolution via NEAT

This is a version of the SharpNEAT (v2.1) framework that has been adapted to evolve Markov chains instead of neural networks. The goal of this project is to evolve Markov chains that can better model the distributions of user-created passwords in online databases.

Acessing password data

The password data was too large to store on Github, since some of the lists are hundreds of MB in size. You can find all the data for the passwords at this dropbox folder.

Changes to SharpNEAT

To accomodate Markov chains, I have made some changes to the underlying framework. It is my hope that keeping track of the core changes will help guide the next iteration of SharpNEAT to make it more modular and flexible regarding less traditional structures.


Changed the call to GetActivationFunction to use a dictionary instead of a hardcoded switch statement. Added an AddActivationFunction method that enables the user to add a new activation function that can leverage the existing IO plumbing without having to modify the core framework.

Other recommended changes in the next version of SharpNEAT

  • Utilize generics more, especially regarding nodes and activation functions. Not every kind of node contains an array of doubles for its auxilary state, takes a double as input, and outputs a double.

  • Remove the IBlackBox dependencies in INeatExperiment

Something went wrong with that request. Please try again.