Configuration d'un serveur SMTP avec réponse retardée
Dans cette étape, nous allons configurer un simple serveur SMTP avec une réponse retardée en utilisant Python. Cela nous permettra de simuler un serveur SMTP lent ou peu fiable, ce qui est utile pour tester la capacité d'Hydra à gérer de tels scénarios.
Tout d'abord, créons un script Python nommé delayed_smtp.py
dans le répertoire ~/project
. Ce script écoutera les connexions SMTP et introduira un délai avant de répondre.
nano ~/project/delayed_smtp.py
Maintenant, collez le code Python suivant dans le fichier delayed_smtp.py
:
import smtpd
import asyncore
import time
import sys
class DelayedSMTPServer(smtpd.SMTPServer):
def process_message(self, peer, mailfrom, rcpttos, data, **kwargs):
print('Receiving message from:', peer)
print('From:', mailfrom)
print('To:', rcpttos)
print('Message length:', len(data))
print('Waiting for 5 seconds...')
sys.stdout.flush()
time.sleep(5) ## Simulate a delay
print('Done waiting!')
sys.stdout.flush()
return '250 Message accepted for delivery'
def run():
port = 1025
server = DelayedSMTPServer(('0.0.0.0', port), None)
print(f"Starting SMTP server on port {port}")
sys.stdout.flush()
asyncore.loop()
if __name__ == '__main__':
run()
Ce script définit un serveur SMTP personnalisé qui introduit un délai de 5 secondes avant d'acquitter la réception d'un e-mail. Il écoute sur le port 1025.
Enregistrez le fichier et quittez nano
.
Maintenant, exécutons le script en arrière-plan. Nous utiliserons la commande nohup
pour nous assurer que le script continue de s'exécuter même après avoir fermé le terminal. Nous redirigerons également la sortie vers un fichier nommé delayed_smtp.log
afin de pouvoir surveiller son activité.
nohup python3 ~/project/delayed_smtp.py > ~/project/delayed_smtp.log 2>&1 &
Cette commande lance le script delayed_smtp.py
en arrière-plan. Vous pouvez vérifier le fichier delayed_smtp.log
pour voir la sortie du serveur.
Pour vérifier que le serveur est en cours d'exécution, vous pouvez utiliser netstat
ou ss
pour vérifier si le port 1025 est en écoute.
netstat -tulnp | grep 1025
Vous devriez voir une sortie similaire à celle-ci :
tcp 0 0 0.0.0.0:1025 0.0.0.0:* LISTEN <PID>/python3
Cela confirme que le serveur SMTP est en cours d'exécution et écoute sur le port 1025. Notez que <PID>
sera remplacé par l'identifiant de processus réel du script Python.
Maintenant que nous avons un serveur SMTP avec réponse retardée en cours d'exécution, nous pouvons l'utiliser pour tester les performances d'Hydra dans des conditions réseau défavorables.