Shortened some existing command line options:
--dict-file option to allow a dictionary file be specified for use as the word source.
-d option so it is now an alias for
--rng-pkg-args options to allow arguments be passed to the constructors for the packages specified via
--rng-pkg. Both options expect a JSON string representing an array.
Re-factored the hsxkpasswdrc file format to support dictionary files and package options.
Updated the documentation to reflect these changes.
This is the third, and hopefully final, BETA release of the re-named
This release contains just one bug fix:
1. There was a subtle error in how the entropy was calculated for the worst-case scenario (where attackers know both the configuration and word source used). Unfortunately the bug caused the module to overestimate the entropy. Because if this, some presets had to be altered after the bug was fixed to keep them below the entropy warning thresholds. This proved impossible for the
WEB16 preset, so it has now issues a warning in the same way the
NTLM preset does.
This release contains a number of enhancements to the core module:
1. Control over entropy warnings has been greatly improved. Previously warnings were controlled by specifying which warnings to suppress, this is inverse to how most humans think, and hence very confusing. The logic has now been reversed, and the module config variable re-named to reflect the new logic.
ALTERNATE case transform now randomises the case of the first word, and then alternates from there. This adds a little more entropy, and makes more sense than having it always be the same IMO.
This release contains significant updates to the
hsxkpasswd terminal command:
1. Support for
hsxkpasswdrc files has been added. These config files allow users of the terminal command store custom presets, and set other default values. the
--rcfile option can be used to specify the path to a specific rc file, but by default
~/.hsxkpasswdrc is used. The
--test-rcfile option can be used to help debug rc files.
-warn options were added to allow control of the entropy warnings when using the terminal command
There are no more outstanding features targeted for the first stable release of the renamed module.
The second BETA release of the re-named Crypt::HSXKPasswd (was XKPasswd.pm).
This release contains some bug fixes, as well as some feature changes:
- all data validation now done using a custom Type::Library type library of Type::Tiny types. With the help of @NosillaCast, many of the error messages have also been re-worded to be more human-friendly.
- a new helper class has been created to remove all circular dependencies - they were not breaking the code, but they were making my IDE cranky, and they just didn't smell right.
- a command-line interface (hsxkpasswd) has been added
- the test suite has been greatly improved, which should make it easier to spot bugs before code releases going forward
- the documentation got quite a bit of TLC
Apart from fixing any bugs this beta release highlights, all the remains to be done for the first stable release is to go through the documentation with a fine-tooth-comb to remove complex sentences, and to unify phraseology so there is better consistency.
The first beta release of the re-designed and re-named module. With this release the Perl module has been re-named from simply
XKPasswd, to the properly name-spaced
The reason for the change of name from XKPasswd to HSXKPasswd is to better reflect the fact that this module combines ideas from both the famous XKCD password comic, and Steve Gibson's Password Haystacks. The old name implied the module only implemented traditional XKCD-style passwords, which under-sells the module's capabilities.
This version has been packaged for future distribution on CPAN, and contains many new features, most notably:
- Both the functional interface (
hsxkpasswd()) and the constructor have been changed to using named parameters to make it easier to instantiate objects with more customisations.
- The config can now be passed as a JSON string (the format produced in the Save/Load tab on the www.xkpasswd.net website), making it easy to tweak your config in the web GUI, then use it in your scripts.
- The module is now fully unicode aware, so it can finally handle accented letters, and hence, languages other than English!
- The module now ships with English, German, French, Spanish, Italian and Portuguese dictionaries built in.
- The dictionary interface has been completely re-designed, allowing for more flexible word sources in the future - simply extend
Crypt::HSXKPasswd::Dictionaryand implement the function
- Random number generation (RNG) has been completely re-designed, and there is now built-in support for better sources of randomness than
rand(), including support for
Data::Entropy::Algorythms. By default, the best RNG available on the system will be used, and a warning will be issued if the module has to fall back to using
- Custom RNGs can now be created by extending
Crypt::HSXKPasswd::RNGand implementing the function
Installation instructions can be found in the
INSTALL file, and detailed documentation in the
README file, both included in the release.
The first non-beta release. Mostly the same as the previous beta, but with a few bugs fixed, and a few small additions. The additions were added to address shortcomings that came to light during the recent re-development of www.xkpasswd.net.
A very minor change since the first beta, just some bug fixes to the validation code.
This version is fully functional, and appears stable, but there may still be some bugs that need to be knocked out.