def examinar(self): print("carpeta : ", self.carpeta + self.archivo_mbox) mbox = mailbox.mbox(self.carpeta + self.archivo_mbox) i = 1 data = [] buscadores = [EtiquetaFormularioHTML(),Dominio(),Link(),JavaScript(),ActionWord(), Paypal(), Bank(),Account(), Reenvio(), URL(),IPEnURL(),Multipart(), ArrobaEnURL(), ArchivoAdjunto(), ContenidoHTML(), Gmail(), Outlook(),Flash(),Hexadecimal(),LinkImage()] for mensaje in mbox: caracteristicas = {} total = 0 datos = utilidades.getDatos_Dict(mensaje) for dato in datos: total +=len(re.sub(r'\s+','',dato["datos"])) if total < 1: print("correo vacio: " + utilidades.getDatos(mensaje)) continue for buscador in buscadores: caracteristicas[buscador.getBuscadorTitulo()] = buscador.getBuscador(mensaje) caracteristicas["Phishy"] = self.phishing data.append(caracteristicas) return data
def getBuscador(self, mensaje): super(Outlook, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() if re.search("outlook", correo): return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(EtiquetaFormularioHTML, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() retorno = re.compile(r'<\s?\/?\s?form\s?>', re.IGNORECASE).search(correo) != None if retorno == constantes.VERDADERO: return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(Link, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() retorno = re.compile(r'<a[^>]+href=\'(.*?)\'[^>]*>(.*)?</a>', re.IGNORECASE).search(correo) != None if retorno == constantes.VERDADERO: return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(Dominio, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() retorno = re.compile(constantes.URLREGEX, re.IGNORECASE).search(correo) != None if retorno == constantes.VERDADERO: return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(Hexadecimal, self).getBuscador(mensaje) cadena = utilidades.getDatos(mensaje).lower() retorno = re.compile(constantes.HEXADECIMALREGEX, re.IGNORECASE).search(cadena) != None if retorno == constantes.VERDADERO: return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(Reenvio, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() resultado = re.findall("forwarded message", correo) if len(resultado) >= 2: return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self,mensaje): super(Flash,self).getBuscador(mensaje) datos = utilidades.getDatos(mensaje).lower() swf = re.compile(constantes.FLASH_LINKED_CONTENT, re.IGNORECASE).findall(datos) flash = re.compile(constantes.FLASH_OBJECT, re.IGNORECASE).search(datos) if (swf != None and len(swf) >0) or \ (flash != None): return constantes.VERDADERO else: return constantes.FALSO
def getBuscador(self, mensaje): super(ActionWord, self).getBuscador(mensaje) correo = utilidades.getDatos(mensaje).lower() retorno = 0 for palabra in constantes.PALABRAS: if re.search(palabra, correo): retorno += 1 #return retorno if retorno > 0: return constantes.VERDADERO else: return constantes.FALSO