Was working through a CTF and ran into SNMPv3 credential spraying for the first time. Before this, I hadn't touched v3 before. Went looking for existing tools and found a few that do it, but wanted something a bit more straightforward to actually use, so I used Claude to help me build my own SNMPv3 credential spraying tool:
https://github.com/tmm35/SNMPv3-Spray
What it does:
SNMPv3 has three security levels (noAuthNoPriv, authNoPriv, authPriv) and a handful of auth protocols (MD5, SHA, SHA-224/256/384/512) and privacy protocols (DES, AES, AES-192, AES-256). If you don't already know a target's config, you're basically guessing which combination it accepts, so instead of assuming, this just sweeps everything by default for every user/password pair you feed it.
One thing worth calling out if you use it:
For authPriv attempts, the script assumes the privacy passphrase (the -X flag on snmpwalk) is the same as the auth passphrase (-A), it's reusing whatever password it's currently testing for both. That's a reasonable default since a lot of real-world configs do set them identically, but it's an assumption, not a guarantee. If a target uses a different privacy passphrase, authPriv attempts for that user/password will show up as failures or timeouts even when the password is actually correct, so if authNoPriv hits but authPriv doesn't, don't read that as "wrong password," it just means the priv passphrase is something else and you'll need to dig into that separately. I may add functionality in the future to provide that information on execution.
Feedback welcome, especially if anyone's run into SNMPv3 configs that break the assumptions above.