Gerador de Senhas
Publicado por Thiago (última atualização em 18/06/2011)
[ Hits: 10.800 ]
Simples programa em C para geração de senhas.
Serve como base para criação de wordlists.
#include <stdio.h> #include <stdlib.h> #include <string.h> /* * * passwdgen 1.0 * * Copyright (C) 2009 Free Software Foundation, Inc. * License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. * This is free software: you are free to change and redistribute it. * There is NO WARRANTY, to the extent permitted by law. * * Autor: Thiago Alexandre Martins Monteiro * Local: Goiania/Goias/Brasil * Data: 16/04/2011 * * Este programa tem como objetivo gerar senhas simples. Tenho plena certeza de que este * codigo pode e deve ser melhorado. Respeito a criatividade dos outros e mantenha a autoria. * * OBS: Esse programa pode ser portado para Windows com pouco esforco. * * Compile com: gcc passwdgen.c -o passwdgen */ /* Protótipo das funções */ int validarComprimentoSenha( int len ); int validarQuantidadeDeVezes( int vezes ); void mostrarAjuda( void ); void mostrarVersao( void ); void gerarSenha( int len ); int main( int argc, char *argv[] ) { int len = 8; /* comprimento da palavra */ int vezes; int register i = 0; system( "clear" ); /* no RuWindows use system("cls"); */ puts( "{FONTE}33[32m\tPASSWDGEN (Gerador de Senhas){FONTE}33[30m" ); srand( time( NULL ) ); switch (argc) { case 1: puts( "\n{FONTE}33[34mProcessando...{FONTE}33[30m\n" ); sleep(2); gerarSenha( len ); break; case 2: if ( (strcmp( argv[1], "-h" ) == 0) || (strcmp( argv[1], "--help" ) == 0) ) { mostrarAjuda(); } if ( (strcmp( argv[1], "-v" ) == 0) || (strcmp( argv[1], "--version" ) == 0) ) { mostrarVersao(); } break; case 3: puts( "\n{FONTE}33[34mProcessando...{FONTE}33[30m\n" ); sleep(2); /* -l de length (comprimento da senha) */ if ( (strcmp( argv[1], "-l" ) == 0) || (strcmp( argv[1], "--length" ) == 0) ) { /* Converte de string para inteiro */ len = atoi( argv[2] ); gerarSenha( len ); } /* -a de amount (quantas senhas devem ser geradas) */ if ( (strcmp( argv[1], "-a" ) == 0) || (strcmp( argv[1], "--amount" ) == 0) ) { vezes = atoi( argv[2] ); if ( validarQuantidadeDeVezes( vezes ) ) exit(1); for (i = 0; i < vezes; i++) { gerarSenha( len ); } } break; case 4: puts( "\n{FONTE}33[34mProcessando...{FONTE}33[30m\n" ); sleep(2); if (strcmp( argv[1], "-al" ) == 0) { vezes = atoi( argv[2] ); len = atoi( argv[3] ); } if (strcmp( argv[1], "-la" ) == 0) { len = atoi( argv[2] ); vezes = atoi( argv[3] ); } if ( validarQuantidadeDeVezes( vezes ) ) { exit(1); } for (i = 0; i < vezes; i++) { gerarSenha( len ); } break; default: printf( "\n{FONTE}33[32m\tDigite: passwdgen -help para obter ajuda.{FONTE}33[30m\n\n" ); } return 0; } int validarComprimentoSenha( int len ) { if (len < 1 || len > 50) { printf( "\t{FONTE}33[31mErro: O comprimento da senha e invalido.\n\tComprimentos validos vao de 1 ate 50 caracteres.{FONTE}33[30m\n\n" ); return 1; } else return 0; } int validarQuantidadeDeVezes( int vezes ) { if (vezes < 1 || vezes > 1000) { printf( "\t{FONTE}33[31mErro: A quantidade de senhas a serem geradas e invalida.\n\tA quantidade de vezes valida vai de 1 ate \ 1000.{FONTE}33[30m\n\n" ); return 1; } else return 0; } void mostrarAjuda( void ) { char c = 'a'; while (c != 'q') { printf( "\n\t{FONTE}33[34mPASSWDGEN{FONTE}33[30m\n" ); printf( "\n\t{FONTE}33[34mNOME: passwdgen - gera senhas simples e imprime na saida padrao.\n{FONTE}33[30m" ); printf( "\n\t{FONTE}33[34mSINOPSE: passwdgen [OPTION] ... [NUMBER] ...\n{FONTE}33[30m" ); printf( "\n\t{FONTE}33[34mDESCRICAO: Gera senhas simples e imprime na saida padrao.{FONTE}33[30m\n" ); printf( "\n\t{FONTE}33[34m -a, --amount\n\t\t Define a quantidade de senhas a serem geradas.{FONTE}33[30m" ); printf( "\n\n\t{FONTE}33[34m -h, --help\n\t\t Apresenta a tela de ajuda do sistema.{FONTE}33[30m" ); printf( "\n\n\t{FONTE}33[34m -l, --length\n\t\t Define o comprimento (quantidade de caracteres) da senha.{FONTE}33[30m" ); printf( "\n\n\t{FONTE}33[34m -v, --version\n\t\t Apresenta o numero de versao do programa.{FONTE}33[30m" ); printf( "\n\n\t{FONTE}33[34m EXEMPLOS:{FONTE}33[30m" ); printf( "\n\n\t\t{FONTE}33[34mpasswdgen -a 5\n\t\tGera 5 senhas de 8 caracteres.{FONTE}33[30m" ); printf( "\n\n\t\t{FONTE}33[34mpasswdgen -l 20\n\t\tGera uma senha de 20 caracteres.{FONTE}33[30m" ); printf( "\n\n\t\t{FONTE}33[34mpasswdgen -al 3 5\n\t\tGera 3 senhas de 5 caracteres.{FONTE}33[30m" ); printf( "\n\n\t\t{FONTE}33[34mpasswdgen -la 3 5\n\t\tGera 5 senhas de 3 caracteres.{FONTE}33[30m" ); printf( "\n\n\t{FONTE}33[34m AUTOR: Thiago Alexandre M. Monteiro{FONTE}33[30m\n" ); c = getchar(); } return; } void mostrarVersao( void ) { printf( "\n\t{FONTE}33[34mpasswdgen 1.0\n\n\tCopyright (C) 2009 Free Software Foundation, Inc. \ \n\tLicense GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>. \ \n\tThis is free software: you are free to change and redistribute it. \ \n\tThere is NO WARRANTY, to the extent permitted by law.{FONTE}33[30m\n\n" ); return; } void gerarSenha( int len ) { int register i; char alfabeto[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'X', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '*', '#' }; char palavra[len]; /* srand( time( NULL ) ); Definir a semente aqui faz com que a senha se repita */ if ( validarComprimentoSenha( len ) ) exit(1); for (i = 0; i < len; i++) { palavra[i] = alfabeto[ rand() % 64 ]; /* 62 é o tamanho do alfabeto */ } palavra[i] = '{FONTE}'; /* terminador de string */ printf("\t%s\n", palavra); return; }
Nenhum coment�rio foi encontrado.
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Como gerar um podcast a partir de um livro em PDF
Organizando seus PDF com o Zotero
Erro no realm join [Resolvido]
Um programa para baixar vídeos: Parabolic
Como Definir o Painel Principal em Múltiplos Monitores no Linux Mint
Sempre que vou baixar algum pacote acontece o erro dpkg (2)
BlueMail não abre no Kubuntu 25.04 (6)
Não consigo montar meu cartão SD (5)
aplicativos criados com webapp-manager não aparecem no menu do xfce (1)