Un générateur de mot de passe écrit en Python / wxPython, sans aucune prétention ! Je débute dans wxPython, cette appli fait plutot office d'essais :-)
Source / Exemple :
#!/usr/bin/env python
#-*- coding: ISO-8859-1 -*-
import wx
import os
import sys
class myApp(wx.Frame):
#__init__:begin
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, style=wx.DEFAULT_FRAME_STYLE ^ wx.RESIZE_BORDER ^ wx.MAXIMIZE_BOX)
icon = wx.Icon(name=os.path.join(sys.path[0],"icon_secure.ico"), type=wx.BITMAP_TYPE_ICO)
self.SetIcon(icon)
panel = wx.Panel(self, -1) # voir style=wx.SIMPLE_BORDER ou autre
## START content
MainSizer = wx.BoxSizer(wx.VERTICAL)
TopBox = wx.BoxSizer(wx.HORIZONTAL)
InTopBoxRight = wx.BoxSizer(wx.VERTICAL)
hbox0 = wx.GridBagSizer(5,5)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
Logo = os.path.join(sys.path[0],'icon-main.gif')
img = wx.Image(Logo, wx.BITMAP_TYPE_ANY)
sb = wx.StaticBitmap(panel, -1, wx.BitmapFromImage(img))
TopBox.Add(sb, 0)
ST_PwLenght = wx.StaticText(panel, -1, "Key lenght")
self.SC_PwLenght = wx.SpinCtrl(panel, -1, "", size=(60,-1))
self.SC_PwLenght.SetRange(2,62)
self.SC_PwLenght.SetValue(8)
self.CB_Alphanum = wx.CheckBox(panel, -1, "Alphanumeric")
self.CB_SpecChars = wx.CheckBox(panel, -1, "Special chars")
self.TC_Result = wx.TextCtrl(panel, -1, "", size=(225, -1), style=wx.TE_READONLY)
BTN_Generate = wx.Button(panel, -1, "Generate")
BTN_Generate.Bind(wx.EVT_BUTTON, self.onGenerate)
ST_Copyright = wx.StaticText(panel, -1, "Copyleft © SViollat 2011")
self.CB_Alphanum.SetValue(True)
hbox0.Add(ST_PwLenght, (0,0), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP, 5)
hbox0.Add(self.SC_PwLenght, (0,1), (1,1), wx.RIGHT | wx.TOP, 5)
hbox0.Add(self.CB_Alphanum, (0,2), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP, 5)
hbox0.Add(self.CB_SpecChars, (0,3), (1,1), wx.ALIGN_CENTER_VERTICAL | wx.RIGHT | wx.TOP, 5)
hbox1.Add(self.TC_Result, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP, 5)
hbox1.Add(BTN_Generate, 0, wx.RIGHT | wx.TOP, 5)
hbox2.Add(ST_Copyright, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT | wx.RIGHT | wx.TOP | wx.BOTTOM, 5)
InTopBoxRight.Add(hbox0, 0)
InTopBoxRight.Add(hbox1, 0)
InTopBoxRight.Add(hbox2, 0)
TopBox.Add(InTopBoxRight, 0)
MainSizer.Add(TopBox, 0)
## END content
panel.SetSizer(MainSizer)
self.Centre()
self.Show(True)
MainSizer.Fit(self)
def onGenerate(self, event):
import random
AlphaNum = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
All = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890&#{}()|-_^@=$%<>!:;.,?"
if not self.CB_Alphanum.IsChecked() and not self.CB_SpecChars.IsChecked():
self.GenerateWarning("PWGen error","Error.\nYou must choose either Alphanumeric and/or Special chars !")
self.CB_Alphanum.SetValue(True)
else:
if self.CB_Alphanum.IsChecked():
choice = AlphaNum
if self.CB_SpecChars.IsChecked():
choice = All
Lenght = self.SC_PwLenght.GetValue()
GeneratedPW = ''.join(random.sample(choice, int(Lenght)))
self.TC_Result.SetValue(GeneratedPW)
def GenerateWarning(self, titre, content):
dialog = wx.MessageDialog(None, content, titre, wx.OK | wx.ICON_EXCLAMATION)
dialog.ShowModal()
dialog.Destroy()
app = wx.App()
myApp(None, -1, 'PWGen')
app.MainLoop()
Conclusion :
Une version CLI existe également, sujet d'un prochain post :-) Merci de vos retours !!
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.