Rob Cadwallader
May 2, 2014


Password cracking is not a precise science; it involves guessing. A lot of guessing. Words with Foes is a wordlist generator that algorithmically generates educated guesses. That is, it produces a wordlist for use by a password cracker based on common password patterns.



(You may attach a PNG, GIF, or JPG file. Please note the Attach: syntax for doing this. After you save the wiki page, you will see the Attach: link with a blue triangle. Click on the link, and then you will be brought to a page where you can upload the attachment. After you upload the attachment, the link goes away and you see the image instead.)

Concepts Demonstrated

  • Functional Programming is used throughout Words with Foes to manipulate and augment words.
  • Finite and infinite "Streams" are used to make many augmentations to words.
  • List comprehensions are used to organize and compile results.
  • Words with Foes takes advantage of the fact that Racket has First Class Functions to organize and apply manipulations to words.

External Technology

Another grading category is the “extent to which project integrates with some external technology.” Briefly mention this here. If your external technology is a Racket library, describe it.

Words with Foes uses a few external technologies. The Racket Libraries Racket GUI Toolkit and File IO are used for user interaction and file production respectively. An external CSVReader library is used for wordlist file input.


Using an existing wordlist or a single seed word Words with Foes makes likely changes to existing words. The application does not simply generate permutations, it generates permutations that you might expect a human to make. It is also easily extensible allowing people to write and include their own manipulation procedures easily.

Technology Used Block Diagram

Create a simple block diagram of your software system that illustrates the major technical components and how they interact; e.g.:

Additional Remarks

Please use this area to include any additional information you would like to include that did not fit into any of the previous categories.

The total write-up, including screen shot and block diagram, should be two to three pages in length (when printed).