· 7 years ago · Oct 04, 2018, 12:12 PM
1#!/usr/bin/python3
2# coding: utf-8
3
4import MySQLdb
5import datetime # récupere la date et heure
6import colorama # pour avoir de la couleur
7from colorama import Fore # pour avoir de la couleur
8import argparse # gere les arguments
9import sys # gere les commande systeme
10import hashlib # gere les hash md5
11
12#on désactive les warning
13import warnings
14warnings.filterwarnings("ignore")
15
16
17#banner
18banner = """
19 $$$$$$\ $$\
20$$ __$$\ $$ |
21$$ / \__|$$\ $$\ $$$$$$$\ $$$$$$\ $$$$$$\ $$$$$$$\
22$$ | $$ | $$ |$$ __$$\ $$ __$$\ $$ __$$\ $$ _____|
23$$ | $$ | $$ |$$ | $$ |$$$$$$$$ |$$ | \__|\$$$$$$\
24$$ | $$\ $$ | $$ |$$ | $$ |$$ ____|$$ | \____$$\
25\$$$$$$ |\$$$$$$$ |$$$$$$$ |\$$$$$$$\ $$ | $$$$$$$ |
26 \______/ \____$$ |\_______/ \_______|\__| \_______/
27 $$\ $$ |
28 \$$$$$$ |
29 \______/
30"""
31# Open database connection
32print(banner)
33try:
34 print(Fore.BLUE + "[-] Tentative de connexion à la base de donnée ["+ sys.argv[1]+"]")
35 db = MySQLdb.connect(sys.argv[1],"cyber","cyber","cybers")
36 print(Fore.BLUE + "[+] Connecté à la base de donnée")
37except:
38 print(Fore.RED + "[X] Impossible de se connecté à la base de donnée\n")
39 quit()
40
41cursor = db.cursor()
42try:
43 # Drop table if it already exist using execute() method.
44 cursor.execute("DROP TABLE IF EXISTS POSTES")
45 cursor.execute("DROP TABLE IF EXISTS UTILISATEUR")
46 # Create table as per requirement
47 sql_Postes = """CREATE TABLE POSTES (Adresse_Mac CHAR(250) NOT NULL, Adresse_IP CHAR(40), Nom_Poste CHAR(250), Etat CHAR(50), Date CHAR(50), Heure CHAR(50), OS CHAR(100), Kernel_Version CHAR(100))"""
48 sql_Utilisateur = """CREATE TABLE UTILISATEUR (User CHAR(250), Password CHAR(250), Statut CHAR(250))"""
49 cursor.execute(sql_Postes)
50 cursor.execute(sql_Utilisateur)
51except:
52 print(Fore.RED + "[X] Erreur Impossible de crée la base de donnée ou les tables")
53 quit()
54
55
56def Menu():
57 print(Fore.BLUE + "\n*=======================================================================*")
58 print(Fore.BLUE + "[1] Ajouter un Administrateur")
59 print(Fore.BLUE + "[2] Ajouter un Utilisateur")
60 print(Fore.BLUE + "[3] Dump de la base de donnée")
61 print(Fore.BLUE + "[4] Quitter\n")
62 choix = input(Fore.BLUE + "Choix =>")
63 if choix == "1":
64 AddAdmin()
65 if choix == "2":
66 AddUser()
67 if choix == "3":
68 DumpDB()
69 if choix == "4":
70 quit()
71 else:
72 Menu()
73
74def AddAdmin():
75 # Ajout de l'utilisateur Admin
76 User = input("Entrez un nom d'utilisateur :")
77 Password = input("Entrez un mot de passe :")
78 Statut = "Administrateur"
79 try:
80 sql_User = """INSERT INTO utilisateur(User, Password, Statut)VALUES ('{}', '{}', '{}')""".format(User, hashlib.md5(Password.encode('utf-8')).hexdigest(), Statut)
81 print(Fore.GREEN + "[+] L'utilisateur " + User + " à bien était crée dans le groupe Administrateur")
82 cursor.execute(sql_User)
83 db.commit()
84 Menu()
85 except:
86 print(Fore.RED + "[X] Erreur Impossible de crée l'utilisateur Administrateur")
87 quit()
88
89def AddUser():
90 # Ajout de l'utilisateur Admin
91 User = input("Entrez un nom d'utilisateur :")
92 Password = input("Entrez un mot de passe :")
93 Statut = "Utilisateur"
94 try:
95 sql_User = """INSERT INTO utilisateur(User, Password, Statut)VALUES ('{}', '{}', '{}')""".format(User, hashlib.md5(Password.encode('utf-8')).hexdigest(), Statut)
96 print(Fore.GREEN + "[+] L'utilisateur " + User + " à bien était crée dans le groupe Utilisateur")
97 cursor.execute(sql_User)
98 db.commit()
99 Menu()
100 except:
101 print(Fore.RED + "[X] Erreur Impossible de crée l'utilisateur " + User + " dans le groupe Utilisateur")
102 quit()
103
104
105def DumpDB():
106 print("1")
107 cursor.execute("SELECT VERSION()")
108 # Fetch a single row using fetchone() method.
109 data = cursor.fetchone()
110 print(Fore.BLUE + "\n[+] Version Base de donnée : {} ".format(data))
111 sql_SE = "SELECT * FROM POSTES"
112 try:
113 print("2")
114 # Execute the SQL command
115 cursor.execute(sql_SE)
116 # Fetch all the rows in a list of lists.
117 results = cursor.fetchall()
118 print(Fore.BLUE + "[+] Récupération des informations de la base de donnée ")
119 for row in results:
120 print("3")
121 Adresse_Mac = row[0]
122 Adresse_IP = row[1]
123 Nom_Poste = row[2]
124 Etat = row[3]
125 Date = row[4]
126 Heure = row[5]
127 OS = row[6]
128 Kernel_Version = row[7]
129 # Now print fetched result
130 print("\n*=======================================================================*\n")
131 print("Adresse Mac : {} \n\nAdresse IP : {}Nom Poste : {} \nEtat : {} \nDate : {} \nHeure : {} \nSystème : {} \nVersion Noyau : {}".format('Adresse_Mac', 'Adresse_IP', 'Nom_Poste','Etat','Date','Heure', 'OS', 'Kernel_Version'))
132 print("\n*=======================================================================*\n")
133 print(Fore.GREEN + "[+] Récupération des informations Terminée ")
134 except:
135 print(Fore.RED + "[X] Erreur: Impossible de récuperai les données de la base")
136 Menu()
137
138
139Menu()