Envoyer des mails dans le passé

20 mars 2010 par Gaëtan Laisser une réponse »

Plop à tous …

Aujourd’hui, une astuce de « gros noob », le but est d’envoyer un mail à une date passée ou future, genre pour le rendu d’un devoir à 23h59m59s alors qu’on vient de le terminer à 2h42 du mat, tout en sachant que le prof ne le lira pas avant 7 ou 8 heures du mat’ … le truc totalement useless quoi, mais souvent on perd des points pour des trucs de ce genre, … (quoi ?? ça vous est jamais arrivé ?? bande de lèche-*** ….)

Les plus futés sauront qu’en modifiant la date de leur machine, on peut fausser les dates d’envoi (genre en reculant la date de deux jours, la plupart des mailers/logiciels de récupération de mails vont afficher le mail comme étant reçu il y a deux jours …).

Mais nous sommes informaticiens, et ce genre de méthode, c’est pour les noobs … nous on va coder un bon gros serveur SMTP pour envoyer des mails dans le temps xD…

En fait en python, ça consiste en 40 lignes de codes … (et encore … c’est crade comme d’hab ;) ).

L’utilisation du script suivant ce fait comme suit :

  1. ./nomDuScript 'adresse serveur smtp du fai' '25' "date d'envoi"

Ou, si l’on veut rajouter des faux headers (histoire d’expliquer le retard du mails, ou rajouter de faux relais …)

  1. ./nomDuScript 'adresse serveur smtp du fai' '25' "date d'envoi" '/chemin/du/fichier contenant/les/headers'

Un fichier d’exemples de (fake) headers à rajouter :

  1. Received: from [1.3.3.7] (helo=lol.kikoo.rox)
  2.       by leskikoolol.attaqu.ent with esmtp id m4573r-573417-00
  3.       for lolmaster@kikoo.rox; Sat, 20 mar 2010 01:02:03 +0000
  4. Received: from kikoo.lol.rox (kikoo.lol.rox [10.3.3.7])
  5.       by lol.kikoo.rox with ESMTP id f7O1Sci1337
  6.       for lolmaster@kikoo.rox; Sat, 20 Mar 2010 00:00:00 +0000

et l’exemple d’utilisation pour le header en question :

  1. ./nomDuScript 127.0.0.1 25 "Fri, 19 Mar 2010 23:59:58 +0000" headers

Qui permettra de faire croire à votre correspondant ici lolmaster@kikoo.rox :

  • que vous avez envoyé votre mail vendredi 19 mars 2010 à 23h59, par votre machine nommée « kikoo.lol.rox » à l’ip 10.3.3.7
  • que le mail a été reçu à minuit par le serveur smtp à l’ip 1.3.3.7 nommé « lol.kikoo.rox »
  • puis, que le mail a été relayé à 01h02 par le serveur smtp nommé « leskikoolol.attaqu.ent »

Ce qui expliquera au correspondant le temps de latence entre l’envoi du mail et sa réception. (Faudra bien sûr changer les infos pour coller à la réalité ^^)

Le script, qui créé un serveur SMTP sur le port 8025 (il faudra configurer votre client mail pour utiliser le serveur SMTP 127.0.0.1 sur le port 8025) :

#!/usr/bin/env python
  1.  
  2. from smtpd import PureProxy
  3. import asyncore
  4. import asynchat
  5. import smtplib
  6. import re
  7. import sys
  8.  
  9. class mySMTP (PureProxy):
  10.     def __init__(self,s,n,d,f=""):
  11.         self.date = d
  12.  self.serv = n
  13.  self.fich = f
  14.         PureProxy.__init__(self,s,None)
  15.  
  16.     def process_message (self, peer, mailfrom, rcpttos, data):
  17.  p = re.compile("Date: .*")
  18.  data = p.sub("Date: "+self.date,data)
  19.  if self.fich !="":
  20.             f = open(self.fich,'r')
  21.      t = f.read(1024)
  22.      f.close()
  23.      data = t + data
  24.      print "Message + header: "+data
  25.  smtpSender = smtplib.SMTP( self.serv[0], self.serv[1] )
  26.  smtpSender.sendmail( mailfrom, rcpttos, data )
  27.  smtpSender.quit()
  28.  return None
  29.  
  30. if __name__ == "__main__":
  31.     if len(sys.argv)<4:
  32.         print "Il manque des arguments : "+sys.argv[0]+" 'serveur smtp','port','date'[, 'fichier header']"
  33.         sys.exit(2)
  34.     if len(sys.argv) == 4:
  35.         serv = mySMTP (("127.0.0.1", 8025), (sys.argv[1],sys.argv[2]),sys.argv[3])
  36.     if len(sys.argv) == 5:
  37.         serv = mySMTP (("127.0.0.1", 8025), (sys.argv[1],sys.argv[2]),sys.argv[3],sys.argv[4])
  38.     try:
  39.         asyncore.loop ()
  40.     except KeyboardInterrupt:
  41.         pass

Amusez-vous bien ;)

Publicité

Laisser un commentaire