feat: Semaine 9
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user