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 :
-
./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 …)
-
./nomDuScript 'adresse serveur smtp du fai' '25' "date d'envoi" '/chemin/du/fichier contenant/les/headers'
Un fichier d’exemples de (fake) headers à rajouter :
-
Received: from [1.3.3.7] (helo=lol.kikoo.rox)
-
by leskikoolol.attaqu.ent with esmtp id m4573r-573417-00
-
for lolmaster@kikoo.rox; Sat, 20 mar 2010 01:02:03 +0000
-
Received: from kikoo.lol.rox (kikoo.lol.rox [10.3.3.7])
-
by lol.kikoo.rox with ESMTP id f7O1Sci1337
-
for lolmaster@kikoo.rox; Sat, 20 Mar 2010 00:00:00 +0000
et l’exemple d’utilisation pour le header en question :
-
./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) :
-
-
from smtpd import PureProxy
-
import asyncore
-
import asynchat
-
import smtplib
-
import re
-
import sys
-
-
class mySMTP (PureProxy):
-
def __init__(self,s,n,d,f=""):
-
self.date = d
-
self.serv = n
-
self.fich = f
-
PureProxy.__init__(self,s,None)
-
-
def process_message (self, peer, mailfrom, rcpttos, data):
-
p = re.compile("Date: .*")
-
data = p.sub("Date: "+self.date,data)
-
if self.fich !="":
-
f = open(self.fich,'r')
-
t = f.read(1024)
-
f.close()
-
data = t + data
-
print "Message + header: "+data
-
smtpSender = smtplib.SMTP( self.serv[0], self.serv[1] )
-
smtpSender.sendmail( mailfrom, rcpttos, data )
-
smtpSender.quit()
-
return None
-
-
if __name__ == "__main__":
-
if len(sys.argv)<4:
-
print "Il manque des arguments : "+sys.argv[0]+" 'serveur smtp','port','date'[, 'fichier header']"
-
sys.exit(2)
-
if len(sys.argv) == 4:
-
serv = mySMTP (("127.0.0.1", 8025), (sys.argv[1],sys.argv[2]),sys.argv[3])
-
if len(sys.argv) == 5:
-
serv = mySMTP (("127.0.0.1", 8025), (sys.argv[1],sys.argv[2]),sys.argv[3],sys.argv[4])
-
try:
-
asyncore.loop ()
-
except KeyboardInterrupt:
-
pass
Amusez-vous bien
