Vincenzo Gattulli

38 papers B 1C 3Journal 14Unranked 20
YearRankTypeTitle / Venue / Authors
2025 B conf
IJCNN
Vincenzo Gattulli, Donato Impedovo
2025 conf
MetroXRAINE
Stefania Bello, Vincenzo Gattulli, Alessia Monaco
2025 conf
WWDD@IS-EUD
Valentina Antoniol, Fabiana Battista, Paolo Buono, Danilo Caivano, Gabriella Calvano, Giuseppe Campesi, Giuseppe Cascione, Antonietta Curci, Marco de Gemmis, Vincenzo Gattulli, Roberto La Scala, Rosa Scardigno, Annita Larissa Sciacovelli, Alessandro Senaldi, Patrizia Sorianello, Vincenzo Tamburrano
2025 J jnl
SN Comput. Sci.
Vincenzo Gattulli, Donato Impedovo, Antonio Piccinno, Giuseppe Pirlo
2025 conf
WWDD@IS-EUD
Stefania Bello, Vittoria Claudia De Nicolò, Vincenzo Gattulli, Donato Impedovo
2025 J jnl
Pattern Anal. Appl.
Vincenzo Dentamaro, Vincenzo Gattulli, Donato Impedovo
2025 conf
COL-SAI
Valentina Antoniol, Vita Santa Barletta, Fabiana Battista, Paolo Buono, Danilo Caivano, Giuseppe Campesi, Giuseppe Cascione, Antonietta Curci, Marco de Gemmis, Vincenzo Gattulli, Rosa Scardigno, Annita Larissa Sciacovelli, Patrizia Sorianello, Vincenzo Tamburrano
2025 conf
Ital-IA
Giulia Orrù, Guido Colaiacovo, Sara Concas, Antonio Galli, Vincenzo Gattulli, Michela Gravina, Stefano Marrone, Marco Micheletto, Wanda Nocerino, Angela Procaccino, Giovanni Puglisi, Lucia Sarcinella, Enrico Santoro, Grazia Terrone, Alessandro Valenti, Donatella Curtotti, Donato Impedovo, Gian Luca Marcialis, Carlo Sansone
2025 conf
MetroXRAINE
Stefania Bello, Vincenzo Gattulli, Donato Impedovo
2024 conf
IHTC
Donato Impedovo, Vincenzo Gattulli, Lucia Sarcinella, Davide Veneto, Giuseppe Satalino, Anna Balenzano, Francesco P. Lovergine, Cinzia Albertini, Davide Palmisano, Francesco Mattia, Sergio Ruggieri, Pasquale Garofalo, Michele Rinaldi, Vito Iacobellis, Andrea Gioia, Luigi Nardella, Michele Di Cataldo, Nicoletta Noviello, Rocchina Guarini, Maria Virelli, Paolo Sacco, Deodato Tapete
2024 conf
HCAIep
Vincenzo Gattulli, Donato Impedovo, Alessia Monaco, Lucia Sarcinella
2024 conf
Ital-IA
Giulia Orrù, Vincenzo Gattulli, Guido Colaiacovo, Stefano Marrone, Giovanni Puglisi, Lucia Sarcinella, Grazia Terrone, Donatella Curtotti, Donato Impedovo, Gian Luca Marcialis, Carlo Sansone
2024 J jnl
Multim. Tools Appl.
Vito Nicola Convertini, Vincenzo Gattulli, Donato Impedovo, Grazia Terrone
2024 J jnl
Sensors
Marianna Crognale, Cecilia Rinaldi, Francesco Potenza, Vincenzo Gattulli, Andrea Colarieti, Fabio Franchi
2024 C conf
ICPRAM
Vincenzo Gattulli, Lucia Sarcinella
2024 J jnl
Expert Syst. Appl.
Vincenzo Dentamaro, Vincenzo Gattulli, Donato Impedovo, Fabio Manca
2023 conf
WorldCIST (4)
Vincenzo Gattulli, Donato Impedovo, Lucia Sarcinella
2023 J jnl
Sensors
Stefano Anastasia, Enrique García-Macías, Filippo Ubertini, Vincenzo Gattulli, Salvador Ivorra
2023 J jnl
Inf.
Giulia Orrù, Antonio Galli, Vincenzo Gattulli, Michela Gravina, Marco Micheletto, Stefano Marrone, Wanda Nocerino, Angela Procaccino, Grazia Terrone, Donatella Curtotti, Donato Impedovo, Gian Luca Marcialis, Carlo Sansone
2023 conf
WAMWB@MobileHCI
Francesco Castro, Vincenzo Dentamaro, Vincenzo Gattulli, Donato Impedovo
2023 C conf
ICPRAM
Vincenzo Gattulli, Donato Impedovo, Tonino Palmisano, Lucia Sarcinella
2023 conf
DSTNDS
Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo, Gianfranco Semeraro
2023 conf
Ital-IA
Giulia Orrù, Antonio Galli, Vincenzo Gattulli, Michela Gravina, Stefano Marrone, Marco Micheletto, Angela Procaccino, Wanda Nocerino, Grazia Terrone, Donatella Curtotti, Donato Impedovo, Gian Luca Marcialis, Carlo Sansone
2023 conf
BESC
Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo
2022 conf
BigMM
Michela Chimienti, Ivan Danzi, Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo, Davide Veneto
2022 C conf
ICPRAM
Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo, Lucia Sarcinella
2022 conf
IGS
Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo, Gianfranco Semeraro
2022 conf
S+SSPR
Vincenzo Dentamaro, Vincenzo Gattulli, Paolo Giglio, Donato Impedovo, Giuseppe Pirlo
2022 conf
WIVACE
Berardina De Carolis, Vincenzo Gattulli, Donato Impedovo, Giuseppe Pirlo
2021 J jnl
Pattern Recognit. Lett.
Donato Impedovo, Vincenzo Dentamaro, Giacomo Abbattista, Vincenzo Gattulli, Giuseppe Pirlo
2021 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Donato Impedovo, Giacomo Abbattista, Vito Nicola Convertini, Vincenzo Gattulli, Giuseppe Pirlo, Lucia Sarcinella
2020 J jnl
J. Optim. Theory Appl.
Patrizia Trovalusci, Giulio Maier, Vincenzo Gattulli
2020 conf
EAIS
Vincenzo Dentamaro, Donato Impedovo, Giuseppe Pirlo, Giacomo Abbattista, Vincenzo Gattulli
2020 J jnl
J. Optim. Theory Appl.
Francesco Smarra, Giovanni Domenico Di Girolamo, Vincenzo Gattulli, Fabio Graziosi, Alessandro D'Innocenzo
2016 conf
ARK
Erika Ottaviano, Vincenzo Gattulli, Francesco Potenza
2014 J jnl
Comput. Aided Civ. Infrastructure Eng.
Dora Foti, Vincenzo Gattulli, Francesco Potenza
2012 J jnl
Int. J. Distributed Sens. Networks
Fabio Federici, Fabio Graziosi, Marco Faccio, Andrea Colarieti, Vincenzo Gattulli, Marco Lepidi, Francesco Potenza
2001 J jnl
J. Frankl. Inst.
Vincenzo Gattulli, Franco Di Fabio, Angelo Luongo
redb/extractors/pe_extractors/pe_imports.py
← Index redb/extractors/pe_extractors/pe_imports.py python
import inspect
from typing import Any, List, Tuple
from datetime import datetime, timezone

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEImport


class PEImportExtractor(PEExtractor):

    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,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.PE_IMPORT.value

    def _extract_imports(self):
        self.log.debug(inspect.currentframe().f_code.co_name)

        imports_symbols = []
        imports_lib = []
        imports_total = 0
        # pe_import = None
        try:
            directory_entry_import = getattr(self.pe, "DIRECTORY_ENTRY_IMPORT", [])
            imports_total = len(directory_entry_import)
            for entry in directory_entry_import:
                symbols = []
                tmp_import = {}
                libname = entry.dll.decode() if entry.dll else ""
                imports_lib.append(libname)
                # replace . with _ to avoid issues with elastic
                # entryname = entryname.replace(".", "_")
                for symbol in entry.imports:
                    if symbol.name:
                        symbols.append(symbol.name.decode())
                # imports_symbols[entryname] = symbols
                tmp_import[libname] = symbols
                imports_symbols.append(tmp_import)
            return PEImport(
                pe_imports_total=imports_total,
                pe_import_libraryName=imports_lib if imports_lib else None,
                pe_import_functions=imports_symbols if imports_symbols else None,
            )
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
        return pe_import

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            return self._extract_imports()
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            imports = self.extract()
            if (
                imports is None
                or imports.pe_imports_total == 0
                or (
                    imports.pe_import_libraryName is None
                    and imports.pe_import_functions is None
                )
            ):
                return None

            # Flatten the data - one row per function import
            data = []
            current_time = datetime.now(timezone.utc)

            for lib_funcs in imports.pe_import_functions:
                for lib, funcs in lib_funcs.items():
                    for func in funcs:
                        data.append(
                            [
                                self.sha256,  # sha256
                                self.md5,  # md5
                                self.sha1,  # sha1
                                lib,  # library_name
                                func,  # function_name
                                current_time,  # analysis_date
                            ]
                        )

            column_names = [
                "sha256",
                "md5",
                "sha1",
                "library_name",
                "function_name",
                "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)",
                "FixedString(32)",
                "FixedString(40)",
                "LowCardinality(Nullable(String))",
                "LowCardinality(Nullable(String))",
                "DateTime64(3, 'UTC')",
            ]

            if not data:
                return None

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_pe_imports"