0% ont trouvé ce document utile (0 vote)
28 vues15 pages

Rapport TP

Ce rapport présente une application Tkinter développée par Geoffroy Awizoba pour un projet de licence en cybersécurité. Il décrit en détail le fonctionnement de deux fenêtres : une pour l'authentification avec vérification des identifiants et un captcha, et une autre pour un dashboard permettant de convertir du texte en base64. Le rapport met en avant l'utilisation de modules Python tels que tkinter, base64 et subprocess pour la création de l'application.

Transféré par

geoffroyawizobacorp44
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
28 vues15 pages

Rapport TP

Ce rapport présente une application Tkinter développée par Geoffroy Awizoba pour un projet de licence en cybersécurité. Il décrit en détail le fonctionnement de deux fenêtres : une pour l'authentification avec vérification des identifiants et un captcha, et une autre pour un dashboard permettant de convertir du texte en base64. Le rapport met en avant l'utilisation de modules Python tels que tkinter, base64 et subprocess pour la création de l'application.

Transféré par

geoffroyawizobacorp44
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithmes & Programmation Structurée

avec Python II

RAPPORT DE TRAVAIL

Presenté par :

AWIZOBA Geoffroy Essohanim

FILIERES

CYBERSECURITE

PROMOTION
Licence Cours Du Jour 2024-2025
SOMMAIRE

1. Introduction

2. La fenêtre d’ Authentification

3. La fenêtre de dashboard .

4. Liaison des deux fenêtre.

5. Conclusion.
1. Introduction

Voici un rapport détaillé, étape par étape, expliquant le fonctionnement de chaque bloc
de code des deux fichiers [Link] et [Link] afin que tu puisses bien comprendre le
processus global.

2. La fenêtre d’ Authentification

Voici le code de présentation de la fenêtre d’ authentification .

#Nom : AWIZOBA
#Prenom : Geoffroy
#Date : 09/05/2025
#Code : La page d' authentification

import tkinter as tk
from tkinter import messagebox
import random
import [Link] as tkFont

import subprocess

# À mettre à la place de [Link] dans ton code de connexion réussie :

# Identifiants valides

USERNAME = "admin"
PASSWORD = "admin"

# Générer un captcha simple (addition)

def generer_captcha():
global captcha_reponse
a = [Link](1, 10)
b = [Link](1, 10)
captcha_reponse = str(a + b)
label_captcha.config(text=f"Combien font {a} + {b} ?")

# Vérifier les identifiants et le captcha

def verifier_connexion():
nom_utilisateur = entry_utilisateur.get()
mot_de_passe = entry_mot_de_passe.get()
reponse_captcha = entry_captcha.get()

if nom_utilisateur == USERNAME and mot_de_passe == PASSWORD:


if reponse_captcha == captcha_reponse:
[Link]("Succès", "Connexion réussie !")
[Link]()
[Link](["python", "[Link]"])
else:
[Link]("Erreur", "Captcha incorrect.")
generer_captcha()
else:
[Link]("Erreur", "Nom d'utilisateur ou mot de passe
incorrect.")
generer_captcha()

# Création de la fenêtre
fenetre = [Link]()
[Link]("Authentification")
[Link]("300x300")
[Link](False, False)
[Link](bg="lightblue")
default_font = [Link]("TkDefaultFont")
default_font.configure(family="Arial", size=10)

# Widgets
[Link](fenetre, text="Nom d'utilisateur :").pack(pady=5)
entry_utilisateur = [Link](fenetre)
entry_utilisateur.pack(pady=5)

[Link](fenetre, text="Mot de passe :").pack(pady=5)


entry_mot_de_passe = [Link](fenetre, show="*")
entry_mot_de_passe.pack(pady=5)

label_captcha = [Link](fenetre, text="")


label_captcha.pack(pady=10)
entry_captcha = [Link](fenetre)
entry_captcha.pack(pady=5)

[Link](fenetre, text="Se connecter", command=verifier_connexion).pack(pady=20)

# Lancer le captcha au démarrage


generer_captcha()

# Lancer la boucle principale


[Link]()
Explication de ce code
Les importation :
import tkinter as tk
from tkinter import messagebox
import random
import [Link] as tkFont

import subprocess

La creation de la fentre
# Création de la fenêtre
fenetre = [Link]()
[Link]("Authentification")
[Link]("300x300")
[Link](False, False)
[Link](bg="lightblue")
default_font = [Link]("TkDefaultFont")
default_font.configure(family="Arial", size=10)

Cette partie du code nous permet de créer la fenêtre d’ authentification de lui assigner une
taille de base avec la fonction geometry ici nous avons assigner 300 px sur 300 px , nous n’
avons pas autoriser le redimensionnement de notre fenêtre ajoutant a la fonction resizable
les paramtre (false , false) . de plus nous avons ajouter une police d’ ecriture (Arial) avec
notre module tkinter font que nous avons importer en de but de code, nous avons aussi
ajouter une couleur de background en bleu.

Les widgets

# Widgets
[Link](fenetre, text="Nom d'utilisateur :").pack(pady=5)
entry_utilisateur = [Link](fenetre)
entry_utilisateur.pack(pady=5)

[Link](fenetre, text="Mot de passe :").pack(pady=5)


entry_mot_de_passe = [Link](fenetre, show="*")
entry_mot_de_passe.pack(pady=5)

label_captcha = [Link](fenetre, text="")


label_captcha.pack(pady=10)
entry_captcha = [Link](fenetre)
entry_captcha.pack(pady=5)

[Link](fenetre, text="Se connecter", command=verifier_connexion).pack(pady=2)

Nous avons créer nos different widgets et les avons organiser sur la fentre principale en
utilisant la fonction packs nos wigets utiliser son les Labels pour du texte et les Entry pour
nos champs de saisi , l’ utilisateur doit saisir ses information de login dans ses different
champs. Le Button nous permet d’ envoyer toutes ces infos pour verification.

La fonction de verification
# Vérifier les identifiants et le captcha

def verifier_connexion():
nom_utilisateur = entry_utilisateur.get()
mot_de_passe = entry_mot_de_passe.get()
reponse_captcha = entry_captcha.get()

if nom_utilisateur == USERNAME and mot_de_passe == PASSWORD:


if reponse_captcha == captcha_reponse:
[Link]("Succès", "Connexion réussie !")
[Link]()
[Link](["python", "[Link]"])
else:
[Link]("Erreur", "Captcha incorrect.")
generer_captcha()
else:
[Link]("Erreur", "Nom d'utilisateur ou mot de passe
incorrect.")
generer_captcha()

Donc ici nous avons la fonction de verification des identifiant entrer en cas de reussite nous
affichons un message box de type info pour informer au user de la reussite en cas d’ echec
nous l’ informons de la defaite . En cas de succés un autre processus commence la fentre
actuelle (la fentre d’ authentification) et il ya ouverture de la deuxieme fentre le
[Link] cela est possible grace a notre importation de module subprocess ce module
nous permet de lancer un programme python depuis un autre ce qui est fait ici grace a la
reussite de notre authentification on fait appel a l’ execution de notre fichier dashboard

J’ ai aussi créer un système de captcha simple avec le module random il nous demande
juste de faire un petit calcul.

Voici le code du captcha

def generer_captcha():
global captcha_reponse
a = [Link](1, 10)
b = [Link](1, 10)
captcha_reponse = str(a + b)
label_captcha.config(text=f"Combien font {a} + {b} ?")

Je précise que dans mon TP le username est admin et me password admin .

Apercu de notre exécution


1-

2-
3- La fenetre de dashborad
Voici le code de cette fenetre :

#Nom : AWIZOBA
#Prenom : Geoffroy
#Date : 09/05/2025
#Code : La page de dahboard

import tkinter as tk
from tkinter import messagebox, filedialog
import base64
import os

def convertir_et_sauvegarder():
mot_ascii = entry_ascii.get()
if not mot_ascii:
[Link]("Champ vide", "Veuillez entrer un mot de passe en
ASCII.")
return

try:
mot_base64 = base64.b64encode(mot_ascii.encode()).decode()
output_text.delete("1.0", [Link])
output_text.insert([Link], mot_base64)

# Sauvegarder dans un fichier


nom_fichier = [Link](defaultextension=".txt",
filetypes=[("Fichiers texte", "*.txt")])
if nom_fichier:
with open(nom_fichier, "w") as fichier:
[Link](mot_base64)
[Link]("Succès", f"Fichier enregistré :\n{nom_fichier}")
# Ouvre le dossier contenant le fichier
[Link]([Link](nom_fichier)) # Windows
# Pour Linux/macOS, remplacer par : [Link](f'xdg-open
"{[Link](nom_fichier)}"')
except Exception as e:
[Link]("Erreur", str(e))

# Interface Dashboard
fenetre = [Link]()
[Link]("Dashboard - Encodeur Base64")
[Link]("400x300")
[Link](bg="#e6f0ff")
[Link](fenetre, text="Entrez le mot de passe ASCII :", bg="#e6f0ff",
font=("Arial", 10)).pack(pady=10)
entry_ascii = [Link](fenetre, width=40, font=("Arial", 10))
entry_ascii.pack(pady=5)

[Link](fenetre, text="Convertir et Enregistrer",


command=convertir_et_sauvegarder,
bg="#4da6ff", fg="white", font=("Arial", 10, "bold")).pack(pady=10)

[Link](fenetre, text="Résultat Base64 :", bg="#e6f0ff", font=("Arial",


10)).pack(pady=5)
output_text = [Link](fenetre, height=4, width=45, font=("Courier", 10))
output_text.pack(pady=5)

[Link]()

Explication du code

Cette fenetre est un dashboard qui nous permet de convertir du texte en base64 il utilisase
donc un algorithme de chiffrage.

fenetre = [Link]()
[Link]("Dashboard - Encodeur Base64")
[Link]("400x300")
[Link](bg="#e6f0ff")

[Link](fenetre, text="Entrez le mot de passe ASCII :", bg="#e6f0ff",


font=("Arial", 10)).pack(pady=10)
entry_ascii = [Link](fenetre, width=40, font=("Arial", 10))
entry_ascii.pack(pady=5)

[Link](fenetre, text="Convertir et Enregistrer",


command=convertir_et_sauvegarder,
bg="#4da6ff", fg="white", font=("Arial", 10, "bold")).pack(pady=10)

[Link](fenetre, text="Résultat Base64 :", bg="#e6f0ff", font=("Arial",


10)).pack(pady=5)
output_text = [Link](fenetre, height=4, width=45, font=("Courier", 10))
output_text.pack(pady=5)

[Link]()

Nous avons créer ici notre fenetre comme d’ habitude avec un title une taille fixe de 400px
sur 300 px . nous avons utiliser tois champs labels pour nos texte . on a aussi utiser un
Entry pour la saisi du password a concertir en base 64. Le trisieme champs label pour
afficher notre conversion , un widget Button qui lancer l’ action de conversion son
paramettre commande fait appel a la fonction convertir_et_suvegarder.

La fonction convertir_et_sauvegarder
def convertir_et_sauvegarder():
mot_ascii = entry_ascii.get()
if not mot_ascii:
[Link]("Champ vide", "Veuillez entrer un mot de passe en
ASCII.")
return

try:
mot_base64 = base64.b64encode(mot_ascii.encode()).decode()
output_text.delete("1.0", [Link])
output_text.insert([Link], mot_base64)

# Sauvegarder dans un fichier


nom_fichier = [Link](defaultextension=".txt",
filetypes=[("Fichiers texte", "*.txt")])
if nom_fichier:
with open(nom_fichier, "w") as fichier:
[Link](mot_base64)
[Link]("Succès", f"Fichier enregistré :\n{nom_fichier}")
# Ouvre le dossier contenant le fichier
[Link]([Link](nom_fichier)) # Windows
# Pour Linux/macOS, remplacer par : [Link](f'xdg-open
"{[Link](nom_fichier)}"')
except Exception as e:
[Link]("Erreur", str(e))

cette fonction nous permet de convertir en base 64 via l’ importation du module base64 et
nous permet d’ enregistrer le resultat dans un fichier txt sauvegardable via le module os de
python on interagit avec l’ utisateur avec le filedialog.

import tkinter as tk
from tkinter import messagebox, filedialog
import base64
import os
3-Liaison des deux fenêtre.

La liaison des deux fentre a été rendu possible grace au module subprocess de python. Les
deux fichier on été mis dans un méme dossier.

4-Conclusion.

Ce TP m’a permis de créer une application Tkinter avec une authentification sécurisée
suivie d’un dashboard fonctionnel. J’ai eu a manipulé des modules essentiels comme
tkinter, base64 et subproces

Vous aimerez peut-être aussi