PrankBot est un outil développé en Java qui pour but d'envoyer des mails forgés (pranks) à des groupes de victimes.
Les groupes sont composés d'un expéditeur et de plusieurs destinataires. À l'exécution, le bot envoie à chaque destinataire du groupe un mail forgé de la part de l'expéditeur avec pour contenu un prank aléatoire tiré de la liste de pranks.
Le projet est issu du labo SMTP du cours HEIG-VD RES de 2021 (lien).
C'est la classe PrankBot qui manipule les autres classes selon les fichiers de config qui lui sont passés en arguments.
- Lire la configuration à l'aide de ConfigManager
- Créer la connexion à l'aide SMTPClient
- Initialiser le PrankGenerator
- Envoyer les pranks avec SMTPClient
Nous utilisons Picocli pour gérer l'interface en ligne de commandes.
Pour fonctionner, PrankBot a besoin de 3 fichiers de configurations.
Vous trouverez des exemples ici.
Si vous ne spécifiez aucun fichier de configuration, PrankBot cherchera les fichiers dans le dossier config.
L'option -d
permet de spécifier un dossier où chercher les 3 fichiers de config avec leur nom par défaut.
Le fichier config.properties contient les informations suivantes:
- smtpServerAddress: Adresse du serveur SMTP auquel envoyer les mails
- smtpServerPort: Port du serveur SMTP
- numberOfGroups: Nombre de groupes de victimes à créer. Le bot doit pouvoir générer des groupes de 3 personnes au minimum
Il est possible de spécifier un fichier avec l'option -c <filename>
Le fichier victimes.json contient la liste des victimes (mail + nom d'affichage) en format JSON
Il est possible de spécifier un fichier avec l'option -v <filename>
La liste des pranks pranks.json doit contenir au moins 1 prank. Les pranks envoyés seront aléatoires s'il y en a plusieurs dans la liste.
Il est possible de spécifier un fichier avec l'option -p <filename>
Afin de personnaliser les messages en fonction des émetteurs/destinataires, il est possible d'utiliser des variables dans les pranks.
Voici la liste de ces variables:
variable | valeur |
---|---|
%e_mail% | adresse email de l'expéditeur |
%e_name% | nom d'affichage de l'expéditeur |
%d_mail% | adresse email du destinataire |
%d_name% | nom d'affichage du destinataire |
Après avoir configuré les fichiers, il suffit d'exécuter le .jar de PrankBot avec les bonnes options de fichiers:
Une image Docker est à votre disposition pour mettre en place un serveur SMTP de test. Elle utilise MockMock avec les ports par défaut.
Instructions pour la déployer:
- Build l'image avec le dockerfile situé dans mock_server
docker build -t mock_smtp mock_server/
- Exécuter l'image
docker run -p 80:8282 -p 25:25 --rm mock_smtp
Le serveur MockMock devrait alors être accessible depuis l'hôte sur les ports 80 (HTTP) et 25 (SMTP).