Winni Neessen
9277e83fd4
To address issue #13, the password length behaviour of the original APG has been reproduced. Previously, when a minLength of 5 and a maxLength of 10 was given, apg-go se the pwLength to the preferred maxLength. With v0.3.1 it will choose a random length between minLength and maxLength instead, same as the original C-lang apg did. For this the minLength has been defaulted to a sane value of 12 (instead of the 8 of the original apg). The default for maxLength stayed at 20. Also the default number of generated passwords has been changed from 1 to 6, to replicate the behaviour of the original apg. |
||
---|---|---|
.github/workflows | ||
.idea | ||
buildfiles/arch-linux | ||
.gitignore | ||
apg.go | ||
apg_test.go | ||
chars.go | ||
config.go | ||
convert.go | ||
go.mod | ||
LICENSE | ||
rand.go | ||
README.md |
A "Automated Password Generator"-clone
apg-go is a simple APG-like password generator 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.
Since FIPS-181 (pronouncable passwords) has been withdrawn in 2015, I didn't see any use in replicating that feature. Therfore apg-go does not support pronouncable passwords.
Installation
Binary releases
Linux/BSD/MacOS
- Download release
$ curl -LO https://github.com/wneessen/apg.go/releases/download/v<version>/apg-v<version>-<os>-<architecture>.tar.gz $ curl -LO https://github.com/wneessen/apg.go/releases/download/v<version>/apg-v<version>-<os>-<architecture>.tar.gz.sha256
- Verify the checksum
Make sure the checksum of the downloaded file and the checksum in the .sha256 match$ sha256 apg-v<version>-<os>-<architecture>.tar.gz $ cat apg-v<version>-<os>-<architecture>.tar.gz.sha256
- Extract archive
$ tar xzf apg-v<version>-<os>-<architecture>.tar.gz
- Execute
$ ./apg
Windows
- Download release
PS> Invoke-RestMethod -Uri https://github.com/wneessen/apg.go/releases/download/v<version>/apg-v<version>-windows-<architecture>.zip -OutFile apg-v<version>-windows-<architecure>.zip PS> Invoke-RestMethod -Uri https://github.com/wneessen/apg.go/releases/download/v<version>/apg-v<version>-windows-<architecture>.zip.sha256 -OutFile apg-v<version>-windows-<architecure>.zip.sha256
- Verify the checksum
Make sure the checksum of the downloaded file and the checksum in the .sha256 matchPS> Get-FileHash apg-v<version>-windows-<architecture>.zip | Format-List PS> type apg-v<version>-windows-<architecture>.zip.sha256
- Extract archive
PS> Expand-Archive -LiteralPath apg-v<version>-windows-<architecture>
- Execute
PS> cd apg-v<version>-windows-<architecture> PS> apg.exe
Sources
- Download sources
$ curl -LO https://github.com/wneessen/apg.go/archive/refs/tags/v<version>.tar.gz
- Extract source
$ tar xzf v<version>.tar.gz
- Build binary
$ cd apg.go-<version> $ go build -o apg ./...
- Execute the brand new binary
$ ./apg
Systemwide installation
It is recommed to install apg in a directory of your $PATH
environment. To do so run:
(In this example we use /usr/local/bin
as system-wide binary path. YMMV)
$ sudo cp apg /usr/local/bin/apg
CLI parameters
apg.go replicates some of the parameters of the original APG. Some parameters are different though:
-m <length>
: The minimum length of the password to be generated (Default: 12)-x <length>
: The maximum length of the password to be generated (Default: 20)-n <number of passwords>
: The amount of passwords to be generated (Default: 6)-E <list of characters>
: Do not use the specified characters in generated passwords-M <[LUNSHClunshc]>
: New style password parameters (upper-case enables, lower-case disables)-L
: Use lower-case characters in passwords (Default: on)-U
: Use upper-case characters in passwords (Default: on)-N
: Use numeric characters in passwords (Default: on)-S
: Use special characters in passwords (Default: off)-H
: Avoid ambiguous characters in passwords (i. e.: 1, l, I, o, O, 0) (Default: off)-C
: Generate complex passwords (implies -L -U -N -S and disables -H) (Default: off)-l
: Spell generated passwords (Default: off)-h
: Show a CLI help text-v
: Show the version number