Gerador de Senhas
Publicado por Thiago (última atualização em 18/06/2011)
[ Hits: 10.662 ]
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; }
Programa para demonstrar operadores
Rotinas para manipulação de matrizes
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (11)