Aller au contenu
  • Veuillez ne pas poster de message pour but d'insulter, incitation à la haine, propos sexuels et tout autre qui ne respecte pas nos conditions générales !

Générez vos mots de passe aléatoirement avec Python


RedLife

Messages recommandés

Salut,

ca fait 2 ans voir plus que j'ai pas écris une ligne de code je ré-apprends petit à petit et ça va je me refamiliarise petit à petit avec les langages informatiques (php, python et le reste html, css)

Mais python reste mon préféré et de loin, je vous partage donc ma première "vraie" création depuis 2 ans et j'en suis plutot content

import random
import string
import sys
import os
class Generator:
	"""
	Classe permettant de générer un mot de passe par RedVie31"""
	def __init__(self):
		self.mdpFinal = ""
		self.listeCaracteresMaj = string.ascii_uppercase
		self.listeChiffres = "0123456789"
		self.listeCaracteres = string.ascii_lowercase
		self.longueur = 0
		self.auth = False
		self.Spec = "#,-$%!§_@=&çè" #Caractères spéciaux, modifiable et adaptable à vos besoins
		
	


	def generer(self, longueur, auth):
		tailleChaine1 = len(self.listeCaracteresMaj)
		tailleChaine2 = len(self.listeCaracteres)
		tailleChaine3 = len(self.listeChiffres)		
		tailleSpec = len(self.Spec)
		if(isinstance(longueur, int)):
			self.longueur = longueur
		else:
			print("ERREUR DE TYPE RENSEIGNE (TAILLE_MDP) DOIT ETRE INT)")
			sys.exit()
		if(isinstance(auth, bool)):
			pass
		else:
			sys.exit()

		i = 0
		while i < self.longueur:
			if auth == True:
				rand = random.randint(0,3)
			elif(auth == False) :
				rand = random.randint(0,2)
			if(rand == 3):

				randx = random.randint(0,tailleSpec)
				self.mdpFinal = self.mdpFinal + self.Spec[randx]
			if(rand == 0):
				rand1 = random.randint(0, 25)
				self.mdpFinal = self.mdpFinal + self.listeCaracteresMaj[rand1]
			elif(rand == 1):
				rand1 = random.randint(0, 25)
				self.mdpFinal = self.mdpFinal + self.listeCaracteres[rand1]
			elif rand == 2:
				rand1 = random.randint(0, 9)
				self.mdpFinal = self.mdpFinal + self.listeChiffres[rand1]
			i += 1
		return self.mdpFinal




try:
	taille = sys.argv[1]
	carac = sys.argv[2].lower()
	tailleMdp = int(taille)
	auth = ['yes', 'no']
	ok = False
except:
	print("Usage : script.py {TAILLE_MDP} {CARAC}\nTAILLE_MDP = INT\nCARAC =  'yes' or 'no'\nVERIFIEZ LES ARGUMENTS UTILISES")
	sys.exit()
if len(sys.argv) != 3:
	print("LE PROGRAMME A BESOIN DE DEUX ARGUMENTS POUR DEMARRER")

if(carac == "yes"):
	mdpFinal = Generator()
	X = mdpFinal.generer(tailleMdp, True)
	print(X)

elif(carac == "no"):
	mdpFinal = Generator()
	X = mdpFinal.generer(tailleMdp, False)
	print(X)
mdpEcriture = "\n" + X + " | \n"
file = open("mdp.txt",'a')
file.write(mdpEcriture)
file.close()

En executant le script comme tel : fichier.py {LongueurMDP} {'yes' OU 'no'} (la syntaxe d'utilisation est expliquée de toute façon qd vous lancerez le script

le script génère un mdp aléatoire avec ou sans caractères spéciaux et écrit le mdp dans un fichier nommé mdp.txt ds le meme dossier que le script

 

bonne journée à vous

 

Modifié par RedLife
Lien à poster
Partager sur d’autres sites

  • 1 mois plus tard...

Bonsoir,

 

Je me suis amusé à faire un générateur de mot de passe similaire à celui que tu proposes, sans le booléen qui permet de désactiver les caractères spéciaux. L'algorithme de nos deux codes restent néanmoins très peu performant pour générer des mots de passe de qualité: on aurait pu implémenter un système qui permet, par exemple, de ne pas avoir x caractère du même type à la suite (car notre générateur est essentiellement basé sur le randint basé sur la chance, ce qui ne devrait pas être le cas).

from random import randint
from sys import argv

class Password():
    """Classe qui permet la création d'un mot de passe aléatoire"""

    def __init__(self):
        self.password = ""
        self.cpt = 0

    def Generate(self,length):
        """Génère un mot de passe aléatoire de taille length"""
    
        while self.cpt != length:
            
            #Séléctionne le caractère à insérer.
            selectChar = randint(1,4)
         
            #Ajout minuscule si 1.
            if selectChar == 1:
                lowerChar = randint(97,122)
                self.password += chr(lowerChar)

            #Ajout majuscule si 2. 
            elif selectChar == 2:
                upperChar = randint(65,90)
                self.password += chr(upperChar)

            #Ajout chiffre si 3.
            elif selectChar == 3:
                digitChar = randint(48,57)
                self.password += chr(digitChar)

            #Ajout spécial si 4.    
            else:
                specialChar = randint(33,47)
                self.password += chr(specialChar)
                
            #Incrémente le compteur jusqu'à ce que la longueur soit atteinte.   
            self.cpt += 1
            
        return self.password

#Ajoute le mot de passe généré dans un fichier texte, ferme le programme si l'utilisateur n'enconde pas un int.     
password = Password()   
if isinstance(int(argv[1]),int):
    with open("mdp.txt", "w", encoding="utf-8") as f:
        f.write(password.Generate(int(argv[1])))
else:
    print("Erreur: le programme ne reconnaît aucun chiffre, le programme va fermer"
    

Bonne soirée.

Modifié par Yassine
Lien à poster
Partager sur d’autres sites

  • 1 mois plus tard...
  • 8 mois plus tard...
  • Administrateur
    Salut RedLife ,
    Ton sujet a été déplacé pour une des deux raisons suivantes :

    - Ta demande a été résolue.

    - Ton sujet se trouvait dans la mauvaise catégorie.

        
      Ceci est un message automatique.

⠀⠀Founder of Inshare.fr

⠀⠀Baylife moderator

⠀⠀Twitch channel moderator

⠀⠀French translator Trucksbook.eu

𝐹𝑒𝑒𝑙 𝑓𝑟𝑒𝑒 𝑡𝑜 𝑤𝑟𝑖𝑡𝑒 𝑎 𝑐𝑜𝑚𝑚𝑒𝑛𝑡

—————————————————

╱⠀⠀⠀⠀⠀⠀⠀⠀⠀Règlements⠀⠀ //⠀⠀Abonnements⠀⠀ //⠀⠀ Discord   ⠀⠀⠀⠀⠀⠀⠀⠀⠀╲

 

signature.png

Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...