Gerador de Senhas
Publicado por Thiago (última atualização em 18/06/2011)
[ Hits: 10.634 ]
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; }
Contagem de elementos de um array
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta