- refactor the elevation detection stuff. I'm not terribly happy with it. - add generic password prompt func that takes in a `prompt []byte` param and returns `(passwd []byte, err error)` ``` func getPasswd(prompt []byte) (passwd []byte, err error) { var b []byte var newLnd bool var origIn *term.State var origOut *term.State var fdIn int = int(os.Stdin.Fd()) var fdOut int = int(os.Stdout.Fd()) if origIn, err = term.GetState(fdIn); err != nil { return } if origOut, err = term.GetState(fdOut); err != nil { return } defer func() { var tErr error if !newLnd { fmt.Println() } if tErr = term.Restore(fdIn, origIn); tErr != nil { return } if tErr = term.Restore(fdOut, origOut); tErr != nil { return } }() os.Stdout.Write(prompt) if b, err = term.ReadPassword(fdIn); err != nil { return } passwd = b fmt.Println() newLnd = true return } ``` - password generator/hash+salter and "checksum/hash guesser" utility/library -- incorporate with r00t2.io/pwgen -- incorporate with https://github.com/tredoe/osutil ? -- cli flag to dump flat hashes too (https://github.com/hlandau/passlib and others soon in pwgen) - auger needs to be build-constrained to linux. -- (i think i fixed this) - unit tests - constants/vars for errors - func and struct to return segregated system-level env vars vs. user env vars (mostly usable on windows) (see envs/.TODO.go.UNFINISHED) - validator for windows usernames, domains, etc. (for *NIX, https://unix.stackexchange.com/a/435120/284004) -- https://docs.microsoft.com/en-us/troubleshoot/windows-server/identity/naming-conventions-for-computer-domain-site-ou -- https://support.microsoft.com/en-us/topic/2dc5c4b9-0881-2e0a-48df-f120493a2d3e -- https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/-2000-server/cc959336(v=technet.10)?redirectedfrom=MSDN -- https://stackoverflow.com/questions/33078854/what-is-the-regex-for-windows-domain-username-in-c - finish net