Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/08/2008, à 13:12

pabix

Créer un véritable mot de passe.

Bonjour,

Si jamais vous cherchez à créer un mot de passe, et que vous souhaitez avoir un mot de passe le plus aléatoire possible, je vous soumets un bout de code C++ qui permet de générer un mot de passe ASCII d’une longueur donnée en argument.

Sauvez ce fichier sous le nom que vous voulez avec l’extension C, cpp, par exemple, installez build-essential si vous ne l’avez pas déjà.

Avant de compiler, changez à votre gré la place des caractères dans le tableau entre les lignes 11 et 20 ; de cette manière, vous rendez les mots de passe générés beaucoup plus difficiles à deviner !

Compilez le programme avec g++ ¹, et lancez-le avec pour argument le nombre de caractères que vous voulez pour votre mot de passe.

// Random ASCII password generator
// Compile it with g++
// Run it as ./name_of_the program length_desired

#include <cstdlib>
#include <iostream>
#include <climits>
#include <ctime>

const char ascii_table[] = {
	' ',    '!',    '"',    '#',    '$',    '%',    '&',   '\'',    '(',    ')',
	'*',    '+',    ',',    '-',    '.',    '/',    '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',    'Z',   
	'[',   '\\',    ']',    '^',    '_',    '`',    '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',    '{',    '|',    '}',    '~'
	};

int main(int argc, char ** argv)
{
	if (argc == 1 || !atoi(argv[1])) return EXIT_FAILURE;
	int numChars = sizeof(ascii_table) / sizeof(ascii_table[0]);
	srand(time(NULL)+getpid());
	for (unsigned int i = 0; i < atoi(argv[1]); ++i) {
		int k = (int) ((double)numChars * (rand() / (RAND_MAX + 1.0)));
		std::cout << ascii_table[k];
	}
	std::cout << std::endl;
	return EXIT_SUCCESS;
}

--- Notes
1. Si vous ne savez pas compiler avec g++ : ouvrez un terminal, allez dans le répertoire de votre programme, et tapez « g++ nom_du_programme.cpp ». g++ créera un fichier qui s’appelle a.out, que vous pouvez lancer avec la commande « ./a.out NN » où NN est le nombre de caractères que vous voulez pour votre mot de passe.


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#2 Le 20/08/2008, à 16:51

claudius01

Re : Créer un véritable mot de passe.

Bonjour,

Ok, cela fonctionne bien (j'ai réduit la liste des caractères à [0-9][a-z][A-Z])
Bravo pour la présentation très professionnelle, c'est nickel


Cordialement, A+
--
Claudius

Hors ligne

#3 Le 21/08/2008, à 12:00

rniamo

Re : Créer un véritable mot de passe.

pourquoi écrire ça en c++ et pas en c ? Sinon nikel, bravo.


< Quelques un des mes programmes  | Cuisine Facile (pour les gourmands) | Fast MVC for PHP >
        \   ^__^
         \  (o o)\_______
            (___)\            )\

Hors ligne

#4 Le 21/08/2008, à 15:56

pabix

Re : Créer un véritable mot de passe.

bah… pourquoi pas ? En ce moment, j’utilise plus souvent le C++, j’ai fait cela naturellement comme ça.


Utilisateur du clavier BÉPO.
mortgat (()) gmail () com
GPG 0x377D716D

Hors ligne

#5 Le 21/08/2008, à 16:03

iuchiban

Re : Créer un véritable mot de passe.

ou bien en Ruby, Perl ou Python, comme ca pas besoin de compiler big_smile

Donc pour ceux qui veulent pas compiler (mais qui ont installé Ruby)

 require 'date'  
 tab=[' ',    '!',    '"',    '#',    '$',    '%',    '&',   '\'',    '(',    ')',
    '*',    '+',    ',',    '-',    '.',    '/',    '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',    'Z',   
    '[',   '\\',    ']',    '^',    '_',    '`',    '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',    '{',    '|',    '}',    '~']

srand(Date.today.sg+Process.pid)

puts "Quelle taille ?"
passwd = ""

gets.chomp.to_i.times do |i|
    passwd += tab[rand(tab.length)]
  end
puts passwd

Dernière modification par iuchiban (Le 21/08/2008, à 16:21)


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#6 Le 28/08/2008, à 18:25

Link Mauve

Re : Créer un véritable mot de passe.

Pour ceux qui veulent encore moins s'embêter, il existe le programme pwgen (sudo apt-get install pwgen) qui permet la génération de mots de passe aléatoires.
Je vous conseille les options -B, -y et -v pour avoir des beaux mots de passe bien durs à retenir mais encore plus à deviner wink

Hors ligne

#7 Le 30/08/2008, à 22:16

Link31

Re : Créer un véritable mot de passe.

CHARS="0-9a-zA-Z"
LENGTH=8
grep -a -o "[$CHARS]" /dev/urandom | tr -d '\n' | head -c $LENGTH | sed -e 's/-//g' -e 's/$/\n/'

Hors ligne