The library we’ll be examining is bartificer.linkToolkit.js, a small open source library I released over the weekend. This library bundles some functions for manipulating links in HTML documents. The two main functions of the library are to ensure that links with a target of
_blank also specify a
noopener (for security reasons), and, to automatically make links leading out of the site open in a new tab, and denoting that fact with an icon appended to the end of the links. You can see the library in use right here on this page!
While it’s very easy to install
hsxkpasswd onto your system from CPAN – it’s literally just one command (see below) – it requires administrator access to the machine.
sudo cpan Crypt::HSXKPasswd
This is all well and good if you have administrator access and are sure you want the module installed system-wide. But, what if you don’t have admin access, or, what if you just want to experiment with the module in your own home directory? The answer is
perlbrew, a system for running custom versions of Perl inside your home directory. No need for
sudo, and what ever you install with
perlbrew is entirely contained within your home directory. If you already have
perlbrew installed and configured with a version of Perl greater than or equal to 5.16, you can skip to the final step. If not, you’ll need to make your way through all the steps.
Step 1 – Install
perlbrew Into Your Home Dir
There are a few different ways of installing
perlbrew, but I find the following method the simplest:
curl -L http://install.perlbrew.pl | bash
That should install
perlbrew into your home directory, and it should tell you to append some code to the end of your
~/.bash_profile file, which you can do with the following command:
echo 'source ~/perl5/perlbrew/etc/bashrc' >> ~/.bash_profile
Once that’s done, close your Terminal window and open a new one (this is to pick up the new environment variables defined in
~/perl5/perlbrew/etc/bashrc). You’ll know the install has been successful if you can run the
Step 2 – Install a Compatible Version of Perl into
The joy of
perlbrew is that you can have as many versions of Perl installed at any one time as you like, and you can then switch between them with the
You can install
Crypt::HSXKpasswd, and hence the
hsxkpasswd terminal command, into any version of Perl greater than or equal to 5.16.
The following command will install Perl 5.16 into
perlbrew install perl-5.16.0
Go off and make yourself a cup of your favourite beverage – this will take a while! 🙂
Once the install finally finishes, you can activate that version of perl (just on your account) with the command:
perlbrew switch perl-5.16.0
It’s important to note that if at any stage you want to disable
perlbrew and get back to the default system version of perl, the command to do so is:
Step 3 – Enable the
perlbrew CPAN Client
If you haven’t already done so, enable the
perlbrew CPAN client
cpanm with the command:
Step 4 – Install
Once you have
perlbrew installed and configured with a compatible version of perl, you can install
Crypt::HSXKPasswd with the following simple command:
You’ll know it’s worked if you can run the
hsxkpasswd terminal command:
This is the second part of a two-part post – read part 1 here.
In part 1 we learned how to use the command line too
hsxkpasswd to generate passwords, and how to use various flags to specify custom password generation configurations, and word sources. In this second part we’ll look at how to save these customisations for future use with
Since version 3.5, the
Crypt::HSXKPasswd password generating perl module ships with a command line interface to the password generator called
hsxkpasswd. This provides a way for non-Perl programers to access the vast majority of the module’s functionality.
The easiest way to install the module, and it’s accompanying terminal command is via CPAN:
sudo cpan Crypt::HSXKPasswd
Once the module is installed, you’ll have access to the
hsxkpasswd terminal command.
Getting started is simple, run the command with no arguments at all and it will generate one password using the default settings:
bart-iMac2013:~ bart$ hsxkpasswd @@26.MEASURE.below.LIFT.95@@ bart-iMac2013:~ bart$
If you want more passwords, pass a number as an argument, and you’ll get that many passwords:
bart-iMac2013:~ bart$ hsxkpasswd 10 ~~08!hole!VOWEL!then!45~~ $$49^monday^YELLOW^remember^22$$ //69-express-MONDAY-edge-54// --42~KITCHEN~save~COLD~40-- ==51%REPLY%even%AUGUST%28== %%63&list&INSIDE&train&58%% ^^19!spain!CONGO!spain!01^^ ::30@SMILED@from@PERIOD@90:: &&05%decimal%THREE%remember%80&& ..47^ROAD^dress^BERLIN^11.. bart-iMac2013:~ bart$
The latest stable release of both the
Crypt::HSXKPasswd perl module, and the
hsxkpassd terminal command are now available through CPAN: http://search.cpan.org/perldoc?Crypt%3A%3AHSXKPasswd
The library and terminal command are bundled together, and can be installed onto Unix/Linux/Mac OS X computers in the standard CPAN way:
sudo cpan Crypt::HSXKPasswd
When this install finishes, both the terminal command and perl module will be available for use on the system, along with the documentation for both:
Even though I’ve put a lot of time an effort into creating these tools, I’ve chosen to released them entirely free of charge, and with a very liberal open-source license (BSD). If you find either the terminal command or Perl module useful, please consider making a donation below to help cover my time and costs.
If you find a bug, would like to suggest a change or improvement, or would like to contribute code to the project, please use the project’s GitHub page.
Firstly, thanks to everyone who runs beta versions of
Crypt::HSXKPasswd – every bug you find makes the software that little bit better!
However, now that the software is in CPAN, many of you may well want to move away from the stand-alone beta releases, and start getting the module directly from CPAN. Before you install the module from CPAN, you should remove the beta from your system. You can do that in two easy steps:
sudo cpan App::pmuninstall
pm-uninstallto remove the beta version of
sudo pm-uninstall Crypt::HSXKPasswd
This is a quick-start guide to using the free and open source
Crypt::HSXKPasswd Perl module for generating secure but memorable passwords.
As I write this post the module is not on CPAN yet, and still in beta form. The module can be downloaded from the project’s GitHub page.
This article assumes you have the module installed – you’ll find installation instructions here.
Before we get stuck into some sample code, let’s first summarise the module’s philosophy.
The module is built around the idea of using common words as a kind of lattice around which to build passwords that are long, have a wide coverage of characters, and yet are still memorable. An ideal HSXKPasswd password will contain a mix of upper and lower case letters, some digits, and some symbols.
The module starts building a password by randomly closing a given number of words from a given dictionary. There can then be an optional number of digits added as pseudo words to the front and/or the back of the initial list of words. Next, a symbol can be used to separate the words, and finally a symbol can be used to pad the front and/or back of the password.
Think of it like this:
correct HORSE BATTERY staple
23 correct HORSE BATTERY staple 45
Crypt::HSXKPasswd comes out of beta, I’m not going to upload it to CPAN, so until then, the betas need to be manually installed. You can get the latest release of the library by downloading the appropriate
.tar.gz file from GitHub.
For Perl regulars, the process is likely to be familiar, because the module is packaged using the very popular
Module::Build. The process is quite straight forward, but there are a few potential pitfalls for the uninitiated.
For quick reference, here are the commands needed to install the module:
sudo ./Build installdeps
sudo ./Build install
It’s been a while since I released a new version of
XKPasswd.pm, the open source Perl module that powers the secure memorable password generator at www.xkpasswd.net. The main reason for the big gap is that I needed to learn some new skills to get the code to where I wanted it to be. There were three main problems I wanted solved:
- To get wide adoption, the Module needs to be available via CPAN
- The module needs unicode support to deal with non-English languages
- It needs to be easy to edit and tweak a config with the www.xkpasswd.net web interface, and then use it in your scripts.
While solving those problems, I also took the opportunity to tidy up some other odds and ends in the code base. It’s not that code was broken, it just that a few parts of it had a bit of a fishy smell – it seemed like there was probably a better way to do that, and there was!
So, here’s a summary of what’s changed from the the point of view of a user of the Module:
- The Packaging – the module has a new name, and is now packaged with
Module::Build, so it’s easier to install, and ready for distribution via CPAN.
- Unicode Support – if it’s a unicode character, you can use it while generating passwords.
- Redesigned Word Sources – more bundled with the module, and easier to create your own.
- Redesigned Sources of Randomness – more bundled with the module, a better default, and easier to create you own.
- A switch to Named Arguments (in both the constructor and functional interface).
I’ve put a lot of time and effort into developing this entirely free and open source module. If you find it useful, please consider making a donation:
I spent of a bit of time tweaking my server backup script this week, and figured there was no reason not to share it with others. This is not the be-all-and-end-all of backup scripts, or the most flexible backup script in the world, it does what I need from a backup script, and nothing more or less! It might meet your needs, or, more likely, it might make a useful starting point for a script that meets your exact needs.
You’ll find the code and the documentation over on my GitHub account.