Carlos Donato

22 papers A 1B 2Journal 15Unranked 4
YearRankTypeTitle / Venue / Authors
2020 B conf
NOMS
Ruben Mennes, Jakob Struye, Carlos Donato, Steven Latré
2020 J jnl
Comput. Networks
Gines Garcia-Aviles, Carlos Donato, Marco Gramaglia, Pablo Serrano, Albert Banchs
2020 J jnl
IEEE Commun. Lett.
Pedro Heleno Isolani, Nelson Cardona, Carlos Donato, Guillermo A. Pérez, Johann M. Márquez-Barja, Lisandro Zambenedetti Granville, Steven Latré
2020 J jnl
IEEE Wirel. Commun.
Miguel Camelo, Ruben Mennes, Adnan Shahid, Jakob Struye, Carlos Donato, Irfan Jabandzic, Spilios Giannoulis, Farouk Mahfoudhi, Prasanthi Maddala, Ivan Seskar, Ingrid Moerman, Steven Latré
2020 J jnl
IEEE Trans. Netw. Serv. Manag.
Ruben Mennes, Jakob Struye, Carlos Donato, Miguel Camelo, Irfan Jabandzic, Spilios Giannoulis, Ingrid Moerman, Steven Latré
2020 conf
CCNC
Nina Slamnik-Krijestorac, Henrique Cesar Carvalho de Resende, Carlos Donato, Steven Latré, Roberto Riggio, Johann Marquez-Barja
2020 J jnl
J. Netw. Syst. Manag.
Tom De Schepper, Patrick Bosch, Jakob Struye, Carlos Donato, Jeroen Famaey, Steven Latré
2019 J jnl
IEEE Commun. Surv. Tutorials
Pedro Heleno Isolani, Maxim Claeys, Carlos Donato, Lisandro Zambenedetti Granville, Steven Latré
2019 conf
DySPAN
Spilios Giannoulis, Michael T. Mehari, Adnan Shahid, Dragoslav Stojadinovic, Maxim Claeys, Farouk Mahfoudhi, Wei Liu, Ivan Seskar, Steven Latré, Ingrid Moerman, Carlos Donato, Ruben Mennes, Felipe A. P. de Figueiredo, Irfan Jabandzic, Yorick De Bock, Miguel Camelo, Jakob Struye, Prasanthi Maddala
2019 B conf
IM
Bart Spinnewyn, Juan Felipe Botero, Carlos Donato, Steven Latré
2019 conf
SDS
Pedro Heleno Isolani, Nelson Cardona, Carlos Donato, Johann Marquez-Barja, Lisandro Zambenedetti Granville, Steven Latré
2018 J jnl
IEEE Trans. Netw. Serv. Manag.
Bart Spinnewyn, Pedro Heleno Isolani, Carlos Donato, Juan Felipe Botero, Steven Latré
2018 J jnl
Comput. Commun.
Oriol Font-Bach, Nikolaos G. Bartzoudis, Marco Miozzo, Carlos Donato, Pavel Harbanau, Manuel Requena-Esteso, David López Bueno, Pablo Serrano, Josep Mangues-Bafalluy, Miquel Payaró
2018 J jnl
Comput. Commun.
Iñaki Ucar, Carlos Donato, Pablo Serrano, Andres Garcia-Saavedra, Arturo Azcorra, Albert Banchs
2018 J jnl
IEEE Wirel. Commun.
Francesco Gringoli, Paul Patras, Carlos Donato, Pablo Serrano, Yan Grunenberger
2017 J jnl
CoRR
Iñaki Ucar, Carlos Donato, Pablo Serrano, Andres Garcia-Saavedra, Arturo Azcorra, Albert Banchs
2016 J jnl
Comput. Commun.
Jorge Ortín, Pablo Serrano, Carlos Donato
2016 J jnl
IEEE J. Sel. Areas Commun.
Jorge Ortín, Carlos Donato, Pablo Serrano, Albert Banchs
2016 A conf
MSWiM
Iñaki Ucar, Carlos Donato, Pablo Serrano, Andres Garcia-Saavedra, Arturo Azcorra, Albert Banchs
2016 J jnl
CoRR
Iñaki Ucar, Carlos Donato, Pablo Serrano, Andres Garcia-Saavedra, Arturo Azcorra, Albert Banchs
2015 J jnl
IEEE Netw.
Carlos Donato, Pablo Serrano, Antonio de la Oliva, Albert Banchs, Carlos Jesus Bernardos
2015 conf
SustainIT
Jorge Ortín, Pablo Serrano, Carlos Donato
redb/extractors/pe_extractor.py
← Index redb/extractors/pe_extractor.py python
import logging
from abc import ABCMeta, abstractmethod
import inspect

import magic
import pefile
from dotnetfile import DotNetPE

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


@abstractmethod
class PEExtractor(Extractor, metaclass=ABCMeta):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious
        )
        self.pe = pe if pe else self._generate_pefile_object()
        self.dotnet = None

    def _generate_pefile_object(self):
        pe = None
        try:
            pe = pefile.PE(self.filepath)
            if not pe:
                raise pefile.PEFormatError("Empty file?")
        except pefile.PEFormatError as e:
            self.log.error(f"Format error {self.hash.sha256} Full error : {e}")
        return pe

    def _generate_dotnetfile_object(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        dotnet = None
        error = None
        try:
            dotnet = DotNetPE(self.filepath)
            if not dotnet:
                raise Exception("Empty file?")
        except Exception as e:
            self.log.error(
                f"Format error dotnet file {self.hash.sha256} Full error : {e}"
            )
            error = e
        return dotnet, error

    def _check_dotnet(self):
        try:
            file_type = magic.from_buffer(self.binary)
            if ".Net" in file_type:
                return True
            for entry in self.pe.OPTIONAL_HEADER.DATA_DIRECTORY:
                # IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR is typically 14
                if (
                    entry.name == "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR"
                    and entry.Size > 0
                ):
                    return True
            return False
        except AttributeError as e:
            self.log.error(
                f"AttributeError error dotnet file {self.hash.sha256} Full error : {e}"
            )
            return False

    def _is_signed(self):
        address = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        if address == 0:
            return False
        return True

    def _has_overlay(self):
        return bool(self.pe.get_overlay())