Rafael del-Hoyo-Alonso

25 papers C 3Misc 1Journal 5Unranked 15
YearRankTypeTitle / Venue / Authors
2025 J jnl
Artif. Intell. Law
José Félix Muñoz-Soro, Rafael del-Hoyo-Alonso, Rosa Montañés, Francisco José Lacueva-Pérez
2025 conf
SEPLN-PD
Jorge Borque-Benedí, Carlos Tellería, Paula Peña-Larena, Rafael del-Hoyo-Alonso
2025 J jnl
Comput. Electron. Agric.
Francisco José Lacueva-Pérez, Rafael del-Hoyo-Alonso, Gorka Labata Lezaun, Juan José Barriuso Vargas, Sergio Ilarri
2025 conf
SEPLN-PD
Rosa María Montañes-Salas, Natalia Sisamón Dolader, Paula Peña-Larena, Rafael del-Hoyo-Alonso
2025 ed.
SEPLN-PD
Rosa M. Montañés Salas, María del Carmen Rodríguez Hernández, Rafael del-Hoyo-Alonso, Paula Peña-Larena
2024 C conf
MoMM
María del Carmen Rodríguez-Hernández, Sergio Ilarri, Marcos Caballero, Raquel Trillo Lado, Ramón Hermoso, Rafael del-Hoyo-Alonso
2024 conf
SEPLN (Projects and Demonstrations)
Paula Peña-Larena, María del Carmen Rodríguez-Hernández, Luis García-Garcés, Rosa María Montañés-Salas, Rafael del-Hoyo-Alonso
2024 conf
SEPLN Posters
Rosa María Montañés-Salas, Sergio Gracia-Borobia, María de la Vega Rodrigálvarez-Chamarro, Angel Borque-Fernando, Patricia A. Guerrero-Ochoa, Alejandro Camón-Fernández, Jorge Alfaro-Torres, Isabel Marquina-Ibáñez, Sofía Hakim-Alonso, Luis Mariano Esteban, Rafael del-Hoyo-Alonso
2023 conf
CONVERSATIONS
Rafael del-Hoyo-Alonso, Vega Rodrigálvarez-Chamarro, Jorge Vea-Murguía, Iñigo Zubizarreta, Julián Moyano-Collado
2023 J jnl
Symmetry
Rocío Aznar-Gimeno, Luis Mariano Esteban, Gerardo Sanz, Rafael del-Hoyo-Alonso
2023 conf
SEPLN (Projects and Demonstrations)
Rosa María Montañes-Salas, Paula Peña-Larena, María del Carmen Rodríguez-Hernández, Luis García-Garcés, Pablo Pérez-Benedí, Sergio Mayo-Macías, Enrique Meléndez-Estrada, Rafael del-Hoyo-Alonso, José Luis Galar-Gimeno
2022 conf
SMM4H@COLING
Rosa María Montañés-Salas, Irene López-Bosque, Luis García-Garcés, Rafael del-Hoyo-Alonso
2022 conf
IberLEF@SEPLN
Rosa María Montañes-Salas, Rafael del-Hoyo-Alonso, Paula Peña-Larena
2022 J jnl
IEEE Internet Comput.
Francisco José Lacueva-Pérez, Setia Hermawati, Pedro Amoraga, Ricardo Salillas-Martínez, Rafael del-Hoyo-Alonso, Glyn Lawson
2021 J jnl
Entropy
Rocío Aznar-Gimeno, Gorka Labata Lezaun, Ana Adell-Lamora, David Abadía-Gallego, Rafael del-Hoyo-Alonso, Carlos González Muñoz
2020 C conf
AICCSA
María del Carmen Rodríguez-Hernández, Rafael del-Hoyo-Alonso, Sergio Ilarri, Rosa María Montañés-Salas, Sergio Sabroso-Lasa
2020 conf
ICCTA
María del Carmen Rodríguez-Hernández, María de la Vega Rodrigálvarez-Chamarro, Jorge I. Vea-Murguia Merck, Ángel Esteban Ballano, Marta María Arguedas Lafuente, Rafael del-Hoyo-Alonso
2020 C conf
WEBIST
Francisco José Lacueva-Pérez, Sergio Ilarri, Juan José Barriuso Vargas, Gorka Labata Lezaun, Rafael del-Hoyo-Alonso
2019 conf
IberLEF@SEPLN
Rosa María Montañes-Salas, Rafael del-Hoyo-Alonso, Rocío Aznar-Gimeno
2018 conf
CERI
Rocío Aznar-Gimeno, María del Carmen Rodríguez-Hernández, Rafael del-Hoyo-Alonso, Sergio Ilarri
2015 conf
TASS@SEPLN
Rafael del-Hoyo-Alonso, María de la Vega Rodrigalvarez-Chamorro, Jorge Vea-Murguía, Rosa María Montañes-Salas
2010 conf
MobiMedia
Rafael del-Hoyo-Alonso, Miguel Ángel Gracia Bandrés, María Pilar Marín Yus, Isabel Ordás Arnal, Jesús Alonso López, Jorge Vallejo Galarza, Stephen Garvey, Amir Eliaz, Diego Besprosvan, Pilar Fernández de Alarcón Azón, Diego Romero San Martín
2007 Misc conf
IWANN
Rafael del-Hoyo-Alonso, Pilar Fernández-de-Alarcón, Juan-José Navamuel-Castillo, Nicolás J. Medrano-Marqués, Bonifacio Martín-del-Brío, Julián Fernández-Navajas, David Abadía-Gallego
2003 conf
IWANN (1)
Rafael del-Hoyo-Alonso, J. David Buldain Pérez, Álvaro Marco
2001 conf
IWANN (2)
Nicolás J. Medrano-Marqués, Rafael del-Hoyo-Alonso, Bonifacio Martín-del-Brío
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

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

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

            column_type_names = [
                'String', 'String', 'String', 'Nullable(String)',
                'Array(FixedString(64))', 'Array(LowCardinality(String))', 'Array(LowCardinality(String))',
                'Nullable(UInt8)', 'Nullable(String)', 'String',
                'UInt64', 'Float64', 'LowCardinality(String)',
                'LowCardinality(String)', 'LowCardinality(String)',
                'DateTime64(3, \'UTC\')',
                'DateTime64(3, \'UTC\')'
            ]

            return data, column_names, column_type_names

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