feat: Semaine 9

This commit is contained in:
gauvainboiche
2026-05-15 16:24:56 +02:00
parent 3315cb2336
commit ce1f0e513a
108 changed files with 3150 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
import argparse
import time
### Générer adresse IP
import random
import socket
import struct
def ip_address():
return socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
### Fin du bloc de l'addresse IP
parser = argparse.ArgumentParser(prog="NetInfo", description= "Outil réseau")
parser.add_argument("-v", "--verbose", action="store_true", help="Mode verbeux")
subparsers = parser.add_subparsers(dest="commande", help="Commande à exécuter")
# parent_parser = argparse.ArgumentParser(add_help=False)
# parent_parser.add_argument("-v", "--verbose", action="store_true", help="Mode verbeux")
scan_parser = subparsers.add_parser("scan", help="Scan d'un hôte")
scan_parser.add_argument("host", default="192.168.1.1", help="Adresse IP de l'hôte cible")
scan_parser.add_argument("-p", "--ports", default=[80], nargs= "+", type= int)
whois_parser = subparsers.add_parser("whois", help="Ping sur un hôte")
whois_parser.add_argument("domain", help="Domaine désiré pour les informations")
args = parser.parse_args()
def net_info(fonction):
def internal_wrapper(args):
if args.verbose:
print(f"[DEBUG] Lancement de la commande...")
start_time = time.perf_counter()
result = fonction(args)
print(f"[DEBUG] Commande terminée.")
print(f"[DEBUG] Commande exécutée en {time.perf_counter() - start_time} secondes.")
return result
return fonction(args)
return internal_wrapper
@net_info
def scan(args):
print(f"Scan de l'hôte: {args.host}")
results = []
for port in args.ports:
status = "ouvert" if port % 2 == 0 else "fermé"
results.append(f"Port {port}: {status}")
print(f"Port {port}: {status}")
return results
@net_info
def whois(args):
print(f"WHOIS pour {args.domain}")
print(f"\
IP : {ip_address()}\n\
Registrar : Exemple\n\
Expirattion : Bientôt\n\
")
if args.commande == "scan":
scan(args)
elif args.commande == "whois":
whois(args)