Ce projet est mon premier outil de cybersécurité développé en Python. L’idée est simple mais puissante : créer un mini scanner web capable d’envoyer une requête HTTP à une URL cible et d’analyser automatiquement le code de réponse renvoyé par le serveur.
En cybersécurité, comprendre comment un serveur réagit à une requête est fondamental. Chaque code de statut HTTP raconte quelque chose sur l’état du serveur, ses protections, et son comportement face à un visiteur inconnu. Ce projet m’a permis de mettre en pratique des notions théoriques vues en cours, dans un contexte concret et réaliste.
L’outil a été testé sur le domaine secureaweb.fr, avec un résultat très instructif : un code 403 Forbidden, qui indique que l’accès est explicitement refusé par le serveur.
Comprendre les requêtes HTTP
Avant d’expliquer le code, il est important de comprendre le contexte technique dans lequel ce projet s’inscrit. Lorsqu’un navigateur ou un programme Python accède à une page web, il envoie une requête HTTP au serveur. Le serveur traite cette requête et répond avec un code de statut à trois chiffres.
1xx — Informationnel
La requête est en cours de traitement. Ces codes sont rarement visibles par l’utilisateur final.
2xx — Succès
200 OK : La requête a réussi. Le serveur a bien répondu et la ressource est accessible normalement.
3xx — Redirection
Le client doit effectuer une action supplémentaire pour compléter la requête (redirection vers une autre URL).
4xx — Erreur client
403 Forbidden, 404 Not Found : Le serveur a compris la requête mais refuse ou ne peut pas y répondre.
5xx — Erreur serveur
Le serveur a rencontré une condition inattendue qui l’a empêché de satisfaire la requête.
</> Code Python
Explication détaillée du code
Voici le cœur du projet : un script Python concis, mais chargé de sens. Chaque ligne a son rôle dans la chaîne de reconnaissance web.
Importe la bibliothèque requests, outil incontournable pour effectuer des requêtes HTTP en Python. À installer via pip install requests.
02 – url = "..."
Définit la cible du scan : l’URL du site web à analyser. C’est ici qu’on indique quelle adresse interroger.
03 – requests.get(url)
Envoie une requête GET au serveur cible, exactement comme lorsqu’un navigateur demande une page web.
04 – status_code
Récupère et affiche le code de réponse HTTP renvoyé par le serveur. C’est le résultat clé du scan.
➤ Exécution
Étapes d’exécution du projet
📋 Création du script Python
J’ai créé un script Python dans l’éditeur Replit et écrit le code nécessaire pour envoyer une requête HTTP vers une URL précise.
▶️ Lancement du script
J’ai exécuté le programme en utilisant le bouton “Run” de Replit afin de lancer l’interprétation du code Python.
🌐Envoi de la requête HTTP
Le script utilise la méthode GET (requests.get) pour envoyer une requête vers le site ciblé et récupérer une réponse du serveur.
🔎Lecture du résultat
Le résultat est affiché dans la console sous forme de status code HTTP (ex : 403), ce qui permet d’analyser la réponse du serveur.
📊 Résultat
Résultat obtenu : Code 403 sur secureaweb.fr
Sortie du terminal
URL : https://secureaweb.fr
Status code : 403
Le script a bien fonctionné. En moins d’une seconde, il a envoyé une requête GET au serveur de secureaweb.fr et reçu une réponse claire : 403 Forbidden.
Que s’est-il passé exactement ?
Lorsque le script a interrogé secureaweb.fr, le serveur a reçu la requête, l’a analysée, puis a décidé de la refuser explicitement. Ce n’est pas une erreur du code Python le programme a parfaitement fonctionné.
Le code 403 est une réponse valide du serveur. Il signifie : « J’ai bien reçu ta demande, mais tu n’as pas le droit d’accéder à cette ressource. » Le serveur est donc en ligne, actif, et protégé.
✅ Script exécuté
Aucune erreur Python
✅ Serveur contacté
Réponse reçue
⚠️ Accès refusé
Code 403 retourné
📈 Analyse
Interprétation du code 403 en cybersécurité
Un code 403 n’est pas simplement une erreur technique c’est une information précieuse pour un analyste en cybersécurité. Voici ce qu’il révèle et comment l’interpréter dans un contexte professionnel.
🗄️Le serveur est actif
Contrairement à un timeout ou à une erreur de connexion, le 403 prouve que le serveur est en ligne et répond. La cible existe et est fonctionnelle.
🛡️Accès filtré ou protégé
Le serveur dispose d’une politique d’accès : il refuse les requêtes non autorisées. Cela peut indiquer un pare-feu applicatif (WAF), une liste blanche d’IP, ou une authentification requise.
🕵Reconnaissance passive réussie
En cybersécurité offensive, obtenir un 403 lors d’un test d’intrusion autorisé est une information de reconnaissance utile : la cible existe, réagit, et est protégée.
⚠️Différence avec 401
Le code 401 Unauthorized suggère qu’une authentification est possible. Le 403 Forbidden est plus définitif : l’accès est interdit, même avec des identifiants valides.
🎓 Conclusion
Bilan et apprentissages clés
Ce mini projet m’a offert bien plus qu’un simple exercice de code. Il m’a permis de connecter la théorie à la pratique, de comprendre comment les outils de cybersécurité fonctionnent réellement, et de développer une démarche analytique face aux résultats obtenus.
🐍 Python comme outil de sécurité
Quelques lignes suffisent pour créer un outil fonctionnel. Python est un langage de choix en cybersécurité grâce à sa simplicité et à ses bibliothèques puissantes.
🌐 HTTP, ce n’est pas abstrait
Les codes de statut HTTP ne sont plus de simples numéros dans un cours ce sont des indicateurs concrets du comportement d’un serveur face à une requête.
🔍 Lire un résultat, pas juste l’obtenir
En cybersécurité, savoir interpréter une réponse est aussi important que de l’obtenir. Le code 403 m’a appris à distinguer une erreur d’un résultat significatif.
⚖️ L’éthique avant tout
Même un outil aussi simple doit être utilisé de manière responsable. La légalité et le consentement sont les fondations de toute démarche en cybersécurité. J’ai donc fait l’expérience avec mon propre domaine.
Ce projet est un premier pas. La prochaine étape sera d‘améliorer le scanner pour tester plusieurs URLs en boucle, ajouter la gestion d’erreurs réseau, et interpréter automatiquement chaque code HTTP avec un message explicatif. La cybersécurité, c’est apprendre en faisant et ce rapport en est la preuve !