🔒 A "Automated Password Generator"-clone written in Go
Find a file
Winni Neessen 2a970b9bce
v0.2.2: Minor fixes and testing
- Replaced log.Fatal() with log.Fatalf() since we provide %v
- Added proper testing and benchmarking
2021-03-20 18:31:32 +01:00
.github/workflows Create codeql-analysis.yml 2021-03-19 08:55:39 +01:00
.idea v0.1.0: Initial check-in 2021-03-18 23:26:41 +01:00
.gitignore Updated README and gitignore files 2021-03-19 08:31:02 +01:00
apg.go v0.2.2: Minor fixes and testing 2021-03-20 18:31:32 +01:00
apg_test.go v0.2.2: Minor fixes and testing 2021-03-20 18:31:32 +01:00
LICENSE Initial commit 2021-03-18 23:13:10 +01:00
Makefile v0.2.1: Support for more platforms added 2021-03-19 08:40:48 +01:00
README.md Updated README and gitignore files 2021-03-19 08:31:02 +01:00

apg.go

apg.go is a simple APG-like password generator script written in Go. It tries to replicate the functionality of the "Automated Password Generator", which hasn't been maintained since 2003. Since more and more Unix distributions are abondoning the tool, I was looking for an alternative. FreeBSD for example recommends "security/makepasswd", which is written in Perl but requires a lot of dependency packages and doesn't offer the feature-set/flexibility of APG. Therefore, as a first attempt, I decided to write my own implementation in Perl, but since I just started learning Go, I gave it another try and reproduced apg.pl in Go as apg.go. Again, as I never used the "pronouncable password" functionality, I left this out in this version.

Usage

Either use the binary releases, unzip them and simply execute them:

$ unzip apg_v0.2.0_linux_amd64.zip
$ chmod +x apg
$ ./apg

Or download the sources and build the binary yourselves:

$ go build apg.go
$ ./apg

Systemwide installation

To be a proper APG replacement, i suggest to install it into a directory in your PATH and symlink it to "apg":

$ sudo cp apg /usr/local/bin/apg

CLI options

apg.go replicates some of the parameters of the original APG. Some parameters are different though:

  • -m, --minpasslen <length>: The minimum length of the password to be generated
  • -x, --maxpasslen <length>: The maximum length of the password to be generated
  • -n, --numofpass <number of passwords>: The amount of passwords to be generated
  • -E, --exclude <list of characters>: Do not use the specified characters in generated passwords
  • -U, --uppercase: Use uppercase characters in passwords
  • -N, --numbers: Use numeric characters in passwords
  • -S, --special: Use special characters in passwords
  • -H, --human: Avoid ambiguous characters in passwords (i. e.: 1, l, I, o, O, 0)
  • -c, --complex: Generate complex passwords (implies -U -N -S and disables -H)
  • -h, --help: Show a CLI help text
  • -v, --version: Show the version number