A script to generate SNMPv3 keys as detailed by rfc3414 (passphrases expanded with a kdf, then hashed with the engine id). All key generation is done using the new cryptographically secure secrets library.
As I wrote this with ESXi in mind, it also emits a string suitable for configuring the SNMP daemon via esxcli/PowerCLI, but the hashes are standard and compatible with other SNMPv3 implementations.
With no arguments, it will generate an authentication and privacy passphrase with associated random engine ID in text form. --json will format the output as json.
The script is fully idempotent; if you take the parameters it generates randomly and re-enter them, you will get the same output a second time.
Dependencies
Runtime: Python 3.6 or greater.
Sample Output
Standard
User: observium Auth: gaYA82XVtNaf3WLwRgoIs544ghP6f80S / f78359764ca382922fa382cf884e588031de575a Priv: H5XEtRpxXVaGzXU5i2rFwPnYGr8SEzTp / 31a001a56a225fdfc1916bd60190405a1aa22ff0 Engine: 7ae1b0ff0aa2f3950566d3de2274d05a ESXi USM String: observium/f78359764ca382922fa382cf884e588031de575a/31a001a56a225fdfc1916bd60190405a1aa22ff0/authpriv
JSON
{
"user": "observium",
"engine": "b2a50167b7c8512ddfc9d5765a3490af",
"phrases": {
"auth": "71rOhjfj6QVSy2mw5tBo7PueZ8KWSv60",
"priv": "xwsvzht8NEcuwAlEpUKzMxKFWeH72sK9"
},
"hashes": {
"auth": "fa0d5249293404502f9953b9514d0636a96c2cbc",
"priv": "cccbdcfa603817df340514ecc22dfae8c4c412e8"
},
"esxi": "observium/fa0d5249293404502f9953b9514d0636a96c2cbc/cccbdcfa603817df340514ecc22dfae8c4c412e8/authpriv"}
If a YAML or TOML library is installed, you also use the --yaml and --toml arguments respectively.
It should go without saying, but DO NOT use the engine id or passphrases in the samples.
Usage
usage: snmpv3-hashgen [-h] [--auth AUTH] [--priv PRIV] [--engine ENGINE] [--user USER] [--mode {auth,priv,none}] [--hash {md5,sha1,sha224,sha256,sha384,sha512}] [--json | --yaml | --toml]
Convert an SNMPv3 auth or priv passphrase to hashes.
optional arguments:
-h, --help show this help message and exit
--auth AUTH Authentication passphrase to be derived as utf8 string
--priv PRIV Privacy passphrase to be derived as utf8 string
--engine ENGINE Engine ID as hex string
--user USER SNMPv3 USM username (default "librenms")
--mode {auth,priv,none}
SNMPv3 mode (default "priv")
--hash {md5,sha1,sha224,sha256,sha384,sha512}
Hash algorithm to use (default "sha1")
--json Emit output as json
--yaml Emit output as yaml
--toml Emit output as toml
RFC 7630 defines no test data for sha[2-9]{3} - these should be considered experimental.
Report bugs at https://github.com/TheMysteriousX/SNMPv3-Hash-Generator/issues
Release files for SNMPv3-Hash-Generator 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| SNMPv3 Hash Generator-0.4.1.tar.gz | 10.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| SNMPv3_Hash_Generator-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.5 kB
Release files / SNMPv3 Hash Generator-0.4.1.tar.gz
| Download URL | SNMPv3 Hash Generator-0.4.1.tar.gz |
|---|---|
| Size | 10.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
93bdb06f297a26fcfe760ea22826226c2abbbe7c7d1226816a3d7265739fc63e
|
|
BLAKE2b-256 checksum How to use checksums |
58944f9f891ba7701cd695712188e4b9c53d415cbd7c7a1697460ea8b7265222
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
|
Release files / SNMPv3_Hash_Generator-0.4.1-py3-none-any.whl
| Download URL | SNMPv3_Hash_Generator-0.4.1-py3-none-any.whl |
|---|---|
| Size | 11.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7ac6c11afdc93fce87daf73df9f92beb08fd17714dc9fd6740789bc1b92fe6c6
|
|
BLAKE2b-256 checksum How to use checksums |
08cf2732225a5d6b828902294f7a20ffce66923026904df823e8eb04e7b618c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/49.2.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.8.3
|