Como desarrollador de software, siempre me ha fascinado la intersección entre seguridad y usabilidad. Recientemente, decidí embarcarme en un proyecto apasionante: crear un administrador de contraseñas de línea de comandos usando Go. Quiero compartir contigo el comienzo de este viaje, comenzando con el primer compromiso.
El 27 de noviembre de 2023, realicé la confirmación inicial para mi proyecto, al que llamé "dost" (amigo en hindi, lo que refleja su función como compañero útil para la administración de contraseñas). Este primer paso, aunque pequeño, sienta las bases de lo que espero se convierta en una herramienta sólida y fácil de usar.
Mientras me embarcaba en este proyecto, me inspiré en el popular administrador de contraseñas de línea de comandos. La simplicidad y efectividad de Pass me llamaron la atención y decidí usar su API como modelo para crear mi propio administrador de contraseñas en Go.
Profundizar en el código fuente de Pass fue una experiencia reveladora. Me intrigó descubrir que toda la funcionalidad de esta herramienta ampliamente utilizada está encapsulada en un script Bash completo. Esta elegante simplicidad es algo que admiro y espero emular en mi propio proyecto, aunque utilizando los puntos fuertes de Go.
Al estudiar Pass, obtuve información valiosa sobre las características esenciales de un administrador de contraseñas de línea de comandos y la experiencia de usuario que debe brindar. A medida que continúe desarrollando "dost", tendré en cuenta estas lecciones, con el objetivo de crear una herramienta que combine la simplicidad de pass con el rendimiento y los beneficios de compatibilidad multiplataforma de Go.
Esta exploración no solo ha proporcionado una hoja de ruta para implementar funciones, sino que también ha reforzado mi creencia en el poder de las herramientas enfocadas y bien diseñadas. Estoy emocionado de ver cómo esta inspiración dará forma a la evolución de "dost" en las próximas etapas de desarrollo.
El compromiso inicial se centró en dos funcionalidades principales:
Generación de contraseñas: Implementé un generador de contraseñas básico que permite a los usuarios especificar la longitud de contraseña deseada. Esta función tiene como objetivo crear contraseñas seguras y aleatorias adaptadas a diversos requisitos de seguridad.
Integración del portapapeles: Para mejorar la experiencia del usuario, me aseguré de que la contraseña generada se copie automáticamente en el portapapeles. Esta pequeña pero crucial característica ahorra tiempo y reduce el riesgo de errores de transcripción.
Profundicemos en algunos de los aspectos técnicos de esta primera iteración:
Veamos algunas partes clave de la implementación:
func generatePassword(length int) (string, error) { const ( uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" lowercaseLetters = "abcdefghijklmnopqrstuvwxyz" digits = "0123456789" specialChars = "!@#$%^&*()-_= []{}|;:'\",./?" ) allChars := uppercaseLetters lowercaseLetters digits specialChars var password string for i := 0; iEsta función crea una contraseña seleccionando aleatoriamente caracteres de un conjunto predefinido, lo que garantiza una combinación de mayúsculas, minúsculas, dígitos y caracteres especiales.
- Integración del portapapeles:
func writeToClipboard(text string) error { return clipboard.WriteAll(text) }Esta función sencilla utiliza el paquete del portapapeles para escribir la contraseña generada en el portapapeles del sistema.
- Función principal:
func main() { passwordLength := flag.Int("length", 12, "length of your password") flag.Parse() password, err1 := generatePassword(*passwordLength) if err1 != nil { fmt.Println("Error generating password:", err1) return } fmt.Println("Generated Password:", password) err2 := writeToClipboard(password) if err2 != nil { fmt.Println("Error writing to clipboard:", err2) os.Exit(1) } fmt.Println("Copied to clipboard! ✅\n") }La función principal une todo. Utiliza el paquete de indicadores de Go para permitir a los usuarios especificar la longitud de la contraseña, genera la contraseña y la copia en el portapapeles.
Interfaz de línea de comandos
Como puede ver en la función principal, implementé una CLI simple usando el paquete de banderas de Go. Los usuarios pueden especificar la longitud de la contraseña deseada utilizando el indicador -length, con un valor predeterminado de 12 caracteres si no se especifica.
Mirando hacia el futuro
Esta primera confirmación es solo el comienzo. A medida que sigo desarrollando este administrador de contraseñas, planeo agregar funciones como:
Estoy entusiasmado con el viaje que tenemos por delante y los desafíos que traerá. Crear un administrador de contraseñas no se trata solo de codificar; se trata de comprender los principios de seguridad, las necesidades de los usuarios y crear una herramienta en la que las personas puedan confiar su información confidencial.
Estén atentos para más actualizaciones a medida que este proyecto evolucione. Estaré compartiendo mis avances, desafíos y aprendizajes a lo largo del camino. Si está interesado en seguirnos o contribuir, no dude en consultar el proyecto en GitHub.
dost es un administrador de contraseñas CLI escrito en Go.
Inspirado en (Pass)[https://www.passwordstore.org/]
> go build -o dost main.go
Generando contraseña:
> ./dost generate email/[email protected] Generated Password: );XE,7-Dv?)Aa &
Generando contraseña con una longitud especificada (el valor predeterminado es 25):
> ./dost generate email/[email protected] 12 Generated Password: si
Copiar la contraseña generada al portapapeles sin imprimir:
> ./dost generate -c email/[email protected] Copied to clipboard! ✅
Evitar símbolos para generar contraseñas:
> ./dost generate -n email/[email protected] Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>H
MIT
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3