Ultima modifica:
ho realizzato uno script che è in grado di fare un analisi di una email allo scopo di estrapolare delle informazioni per verificare l'autenticità, questo script funziona ma ho bisogno di inserirlo sotto una definizione per richiamarlo da un menu
quindi ho proceduto in questo modo:
quando avvio il codice non parte nulla, non da alcun segno di vita.
Solo dopo mi sono reso conto che avevo dimenticato di chiudere con
mailinfo()
Python:
import re, email
#eml = input("Inserisci il percorso del file: ")
f = open("Re.eml", "r")# sostituire "Re.eml" con eml
msg = email.message_from_file(f)
f.close()
headers = email.message_from_string(msg.as_string())
infomail={
"message-id":"",
"spf-record":False,
"dkim-record":False,
"dmarc-record":False,
"spoofed":False,
"ip-address":"",
"sender-client":"",
"spoofed-mail":"",
"dt":"",
"content-type":"",
"subject":""
}
for h in headers.items():
#ID Messaggio
if h[0].lower()=="message-id":
infomail["message-id"]=h[1]
#Server da dove è stata inviata l'email
if h[0].lower()=="received":
infomail["sender-client"]=h[1]
#Autenticazione rilevata dal server di posta
if h[0].lower()=="authentication-results":
if(re.search("spf=pass",h[1])):
infomail["spf-record"]=True;
if(re.search("dkim=pass",h[1])):
infomail["dkim-record"]=True
if(re.search("dmarc=pass",h[1])):
infomail["dmarc-record"]=True
if(re.search("does not designate",h[1])):
infomail["spoofed"]=True
if(re.search(r"(\d{1,3}\.){3}\d{1,3}", h[1])):
ip=re.search(r"(\d{1,3}\.){3}\d{1,3}", h[1])
infomail["ip-address"]=str(ip.group())
if h[0].lower()=="reply-to":
infomail["spoofed-mail"]=h[1]
if h[0].lower()=="date":
infomail["dt"]=h[1]
if h[0].lower()=="content-type":
infomail["content-type"]=h[1]
if h[0].lower()=="subject":
infomail["subject"]=h[1]
print("\n=========================Risultato=========================\n")
print("[+] ID Messaggio: "+infomail["message-id"])
if(infomail["spf-record"]):
print("[+] SPF Records: PASS")
else:
print("[+] SPF Records: FAIL")
if(infomail["dkim-record"]):
print("[+] DKIM: PASS")
else:
print("[+] DKIM: FAIL")
if(infomail["dmarc-record"]):
print("[+] DMARC: PASS")
else:
print("[+] DMARC: FAIL")
if(infomail["spoofed"] and (not infomail["spf-record"]) and (not infomail["dkim-record"]) and (not infomail["dmarc-record"])):
print("[+] L'E-mail è contraffatta")
print("[+] E-mail: " + infomail["spoofed-mail"])
print("[+] Indirizzo IP: " + infomail["ip-address"])
else:
print("[+] L'E-mail è autentica")
print("[+] IP-Address: " + infomail["ip-address"])
print("[+] Provider: " + infomail["sender-client"])
print("[+] Tipo di contenuto: " + infomail["content-type"])
print("[+] Data e Ora: " + infomail["dt"])
print("[+] Oggetto: " + infomail["subject"]+"\n\n")
Python:
import re, email
def mailinfo():
#eml = input("Inserisci il percorso del file: ")
f = open("Re.eml", "r")# sostituire "Re.eml" con eml
msg = email.message_from_file(f)
f.close()
headers = email.message_from_string(msg.as_string())
infomail={
"message-id":"",
"spf-record":False,
"dkim-record":False,
"dmarc-record":False,
"spoofed":False,
"ip-address":"",
"sender-client":"",
"spoofed-mail":"",
"dt":"",
"content-type":"",
"subject":""
}
for h in headers.items():
#ID Messaggio
if h[0].lower()=="message-id":
infomail["message-id"]=h[1]
#Server da dove è stata inviata l'email
if h[0].lower()=="received":
infomail["sender-client"]=h[1]
#Autenticazione rilevata dal server di posta
if h[0].lower()=="authentication-results":
if(re.search("spf=pass",h[1])):
infomail["spf-record"]=True;
if(re.search("dkim=pass",h[1])):
infomail["dkim-record"]=True
if(re.search("dmarc=pass",h[1])):
infomail["dmarc-record"]=True
if(re.search("does not designate",h[1])):
infomail["spoofed"]=True
if(re.search(r"(\d{1,3}\.){3}\d{1,3}", h[1])):
ip=re.search(r"(\d{1,3}\.){3}\d{1,3}", h[1])
infomail["ip-address"]=str(ip.group())
if h[0].lower()=="reply-to":
infomail["spoofed-mail"]=h[1]
if h[0].lower()=="date":
infomail["dt"]=h[1]
if h[0].lower()=="content-type":
infomail["content-type"]=h[1]
if h[0].lower()=="subject":
infomail["subject"]=h[1]
print("\n=========================Risultato=========================\n")
print("[+] ID Messaggio: "+infomail["message-id"])
if(infomail["spf-record"]):
print("[+] SPF Records: PASS")
else:
print("[+] SPF Records: FAIL")
if(infomail["dkim-record"]):
print("[+] DKIM: PASS")
else:
print("[+] DKIM: FAIL")
if(infomail["dmarc-record"]):
print("[+] DMARC: PASS")
else:
print("[+] DMARC: FAIL")
if(infomail["spoofed"] and (not infomail["spf-record"]) and (not infomail["dkim-record"]) and (not infomail["dmarc-record"])):
print("[+] L'E-mail è contraffatta")
print("[+] E-mail: " + infomail["spoofed-mail"])
print("[+] Indirizzo IP: " + infomail["ip-address"])
else:
print("[+] L'E-mail è autentica")
print("[+] IP-Address: " + infomail["ip-address"])
print("[+] Provider: " + infomail["sender-client"])
print("[+] Tipo di contenuto: " + infomail["content-type"])
print("[+] Data e Ora: " + infomail["dt"])
print("[+] Oggetto: " + infomail["subject"]+"\n\n")
Solo dopo mi sono reso conto che avevo dimenticato di chiudere con
mailinfo()