Git Product home page Git Product logo

dwpwg's Issues

output printable codebook

dwpwg currently offers a middle ground between security and convenience. However, we should add the ability to simply generate a new printable code book; that way passwords could be generated offline.

Acceptance criteria:

  • A command line option is present which outputs a printable PDF file (or, optionally, a raw text file) of the generated codebook
  • README is updated with new method

support different types of dice

The "classic" Diceware algorithm calls for 7776 unique words in a list, indexed by all possible permutations of 5 six-sided dice. Using 20-sided dice, @ospalh was able to reduce the number of dice needed to index these words to three.

Unfortunately, not everyone has multiple d20s lying around. More unfortunately yet, not everyone has a d20 at all. And still more unfortunate than that is the fact that probably a great number of humans do not know what a d20 is.

Six-sided dice, however, are everywhere. Therefore, dwpwg should be extended to support dice with 6 faces.

Acceptance criteria:

  • Generation of wordlists and passphrases using dice with 6 faces is supported.
  • The readme is updated to mention 6-sided dice.

wordlist audit mode

Implement an "audit" mode to provide the ability to swap out undesirable (vulgar and/or hard to remember or spell) words.

A suggested mode of implementation:

  1. The word is printed, upon which the user is prompted "(K)eep? (D)iscard? (B)ack? ".
    a. Keep will result in the current word being added to the revised wordlist and the next word being shown.
    b. Discard will show the next word. The current word will not be added.
    c. Back will remove the previous word added to the revised wordlist and present it again for decision.
  2. The user is prompted for a filename in which to save the revised wordlist.

Acceptance Criteria:

  • A wordlist audit mode such as the one described above is implemented.
  • A mechanism is present to use the customized wordlists.
  • The readme is updated with an explanation of the new mode.

more user friendly i/o

Currently input is somewhat inconvenient as input is rather unconstrained and may cause undefined behavior. Output is also unnecessarily verbose and cryptic.

We should change this. Currently after a newline is used to lock in a roll, a new prompt shows the number of rolls remaining. There is no way to revise prior rolls. We should instead use the following state-based model:

  • Rearrange output to a grid structure, with N columns where N is the number of rolls per word.
  • When N cells are confirmed, the corresponding word is printed at the end of the line and the cursor moves to the first cell on the next line.
  • In any cell:
    • Numeric input is only accepted if it would result in a valid roll. Otherwise, an alert bell is emitted.
  • In an empty cell:
    • [Backspace] or [-] moves the cursor to the end of the previous cell or emits an alarm bell if this is not possible.
    • [Enter] or [.] emits an alarm bell.
  • In a non-empty cell:
    • [Backspace] or [-] removes the most recently entered digit and puts the cursor in its place.
    • [Enter] or [.] locks in the roll and moves the cursor to the next cell.

Acceptance criteria:

  • Input and output follows the new scheme detailed above.
  • Behavior is tested both with a terminal emulator and a Windows command prompt.

wordlist is not shuffled by default

The wordlist is currently not shuffled before being indexed by the dice throws.

Reproduction instructions:

  1. Run python -m dwpwg 1
  2. Input 1 three times.
  3. Generated word will be aachen, every time.

create package and submit to PyPI

Package should be submitted to PyPI to simplify the install process.

Acceptance criteria:

  • Nice installable package using setuptools
  • A proper entry point is registered such that installation results in a "dwpwg" command in path
  • README reflects new installation method
  • Submitted to PyPI

take format string instead of only the number of words

In addition to a number of words, we should also accept a format string which allows a password to be generated entirely programmatically if a user wishes to insert other characters between/after the words.

For example, the command: $ python -m dwpwg {@}-{+}-{.}-{.}-{#100}
Might output the password: CORRECT-Horse-battery-staple-42

Acceptance criteria:

  • a format string scheme is implemented as described above
  • README documents new scheme

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.