Como desenvolvedor de software, sempre fui fascinado pela interseção entre segurança e usabilidade. Recentemente, decidi embarcar em um projeto interessante: criar um gerenciador de senhas de linha de comando usando Go. Quero compartilhar com vocês o início dessa jornada, começando pelo primeiro commit.
Em 27 de novembro de 2023, fiz o commit inicial do meu projeto, que chamei de "dost" (amigo em hindi, refletindo seu papel como um companheiro útil para gerenciamento de senhas). Este primeiro passo, embora pequeno, estabelece as bases para o que espero que se torne uma ferramenta robusta e fácil de usar.
Ao embarcar neste projeto, me inspirei no popular gerenciador de senhas de linha de comando. A simplicidade e eficácia do pass chamaram minha atenção e decidi usar sua API como modelo para construir meu próprio gerenciador de senhas em Go.
Mergulhar no código-fonte do passe foi uma experiência reveladora. Fiquei intrigado ao descobrir que toda a funcionalidade desta ferramenta amplamente utilizada está encapsulada em um script Bash abrangente. Essa simplicidade elegante é algo que admiro e espero imitar em meu próprio projeto, embora usando os pontos fortes do Go.
Ao estudar o passe, obtive insights valiosos sobre os recursos essenciais de um gerenciador de senhas de linha de comando e a experiência do usuário que ele deve fornecer. À medida que continuo desenvolvendo o "dost", manterei essas lições em mente, com o objetivo de criar uma ferramenta que combine a simplicidade do passe com os benefícios de desempenho e compatibilidade entre plataformas do Go.
Essa exploração não apenas forneceu um roteiro para implementação de recursos, mas também reforçou minha crença no poder de ferramentas bem elaboradas e focadas. Estou animado para ver como essa inspiração moldará a evolução do "dost" nos próximos estágios de desenvolvimento.
O commit inicial focou em duas funcionalidades principais:
Geração de senha: Implementei um gerador de senha básico que permite aos usuários especificar o comprimento de senha desejado. Este recurso tem como objetivo criar senhas fortes e aleatórias, adaptadas a vários requisitos de segurança.
Integração com a área de transferência: Para aprimorar a experiência do usuário, garanti que a senha gerada seja copiada automaticamente para a área de transferência. Esse recurso pequeno, mas crucial, economiza tempo e reduz o risco de erros de transcrição.
Vamos mergulhar em alguns dos aspectos técnicos desta primeira iteração:
Vejamos algumas partes importantes da implementação:
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 função cria uma senha selecionando aleatoriamente caracteres de um conjunto predefinido, garantindo uma mistura de letras maiúsculas, minúsculas, dígitos e caracteres especiais.
- Integração da área de transferência:
func writeToClipboard(text string) error { return clipboard.WriteAll(text) }Esta função simples utiliza o pacote da área de transferência para gravar a senha gerada na área de transferência do sistema.
- Função 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") }A função principal une tudo. Ele usa o pacote flag do Go para permitir que os usuários especifiquem o comprimento da senha, gerem a senha e a copiem para a área de transferência.
Interface de linha de comando
Como você pode ver na função principal, implementei uma CLI simples usando o pacote flag do Go. Os usuários podem especificar o comprimento desejado da senha usando o sinalizador -length, com um padrão de 12 caracteres, se não for especificado.
Olhando para o futuro
Este primeiro commit é apenas o começo. À medida que continuo desenvolvendo este gerenciador de senhas, pretendo adicionar recursos como:
Estou entusiasmado com a jornada que temos pela frente e com os desafios que ela trará. Construir um gerenciador de senhas não envolve apenas codificação; trata-se de compreender os princípios de segurança, as necessidades do usuário e criar uma ferramenta na qual as pessoas possam confiar suas informações confidenciais.
Fique ligado para mais atualizações à medida que este projeto evolui. Estarei compartilhando meu progresso, desafios e aprendizados ao longo do caminho. Se você estiver interessado em acompanhar ou contribuir, fique à vontade para conferir o projeto no GitHub.
dost é um gerenciador de senhas CLI escrito em Go.
Inspirado por (Passe)[https://www.passwordstore.org/]
> go build -o dost main.go
Gerando senha:
> ./dost generate email/[email protected] Generated Password: );XE,7-Dv?)Aa &
Gerando senha com comprimento especificado (o padrão é 25):
> ./dost generate email/[email protected] 12 Generated Password: si
Copiar a senha gerada para a área de transferência sem imprimir:
> ./dost generate -c email/[email protected] Copied to clipboard! ✅
Evite símbolos para geração de senhas:
> ./dost generate -n email/[email protected] Generated Password: E2UST}^{Ac[Fb&D|cD%;Eij>H
MIT
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3