Gerador de Senhas
Publicado por Thiago (última atualização em 18/06/2011)
[ Hits: 10.855 ]
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; }
Teoria do Caos - (Equação Logística)
Distribuição Eletronica de Elementos Químicos em C++
Nenhum coment�rio foi encontrado.
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Realizar overclock no Miyoo Mini (plus ou normal)
Otimização de memória para máquinas modestas
Unbuntu não atualiza o firmware [RESOLVIDO] (2)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (0)
Dúvidas sobre a originalidade de conteúdos online (10)
Erro de interface de Rede no Virt Manager dentro Debian 13 KDE (12)