Carmen Lacave

31 papers B 2Journal 19Unranked 10
YearRankTypeTitle / Venue / Authors
2026 J jnl
SoftwareX
Yoel Arroyo, Ana I. Molina, Carmen Lacave, Miguel Ángel Redondo Duque
2025 J jnl
J. Syst. Softw.
Ana I. Molina, Crescencio Bravo, Jesús Gallardo, Carmen Lacave, Miguel A. Redondo
2025 J jnl
Univers. Access Inf. Soc.
Katherine Valencia, Patricia Hernández del Mazo, Ana Isabel Molina, Carmen Lacave, Cristian Rusu, Federico Botella
2025 J jnl
Univers. Access Inf. Soc.
Ana I. Molina, Yoel Arroyo, Carmen Lacave, Miguel A. Redondo, Crescencio Bravo, Manuel Ortega
2025 J jnl
Behav. Inf. Technol.
Christian Xavier Navarro-Cota, Ana I. Molina, Miguel A. Redondo, Carmen Lacave
2025 J jnl
Multim. Tools Appl.
Ana I. Molina, Yoel Arroyo, Carmen Lacave
2025 J jnl
IEEE Access
José Lara, Carmen Lacave, Ana I. Molina
2024 J jnl
IEEE Trans. Educ.
Christian Xavier Navarro-Cota, Ana I. Molina, Miguel A. Redondo, Carmen Lacave
2021 J jnl
Multim. Tools Appl.
Santiago Schez-Sobrino, María Ángeles García, Carmen Lacave, Ana I. Molina, Carlos Glez-Morcillo, David Vallejo, Miguel A. Redondo
2021 conf
TEEM
Carmen Lacave, Ana I. Molina, Alicia García-Holgado, Carina S. González-González
2020 conf
ICEIS (Revised Selected Papers)
Cristian Gómez-Portes, Carmen Lacave, Ana I. Molina, David Vallejo, Santiago Schez-Sobrino
2020 J jnl
Comput. Educ.
Carmen Lacave, J. Ángel Velázquez-Iturbide, Maximiliano Paredes-Velasco, Ana I. Molina
2020 B conf
Intelligent Environments (Workshops)
Cristian Gómez-Portes, David Vallejo, Ana I. Molina, Carmen Lacave
2020 conf
SIIE
Ana Isabel Molina, Carmen Lacave
2020 conf
ICEIS (2)
Cristian Gómez-Portes, Carmen Lacave, Ana I. Molina, David Vallejo, Santiago Sánchez-Sobrino
2020 conf
SIIE
Ramón Hervás, Iván González-Díaz, Jesús Fontecha, Ana I. Molina, Manuel A. Serrano, Carmen Lacave, Tania Mondéjar
2019 conf
TEEM
Santiago Schez-Sobrino, María Ángeles García, Cristian Gómez-Portes, David Vallejo, Ana I. Molina, Carmen Lacave, Carlos Glez-Morcillo, Javier Albusac, Miguel A. Redondo
2019 conf
UCAmI
Yoel Arroyo, Ana I. Molina, Miguel A. Redondo, Jesús Gallardo, Carmen Lacave
2018 J jnl
IEEE Trans. Educ.
Carmen Lacave, Ana I. Molina, Miguel A. Redondo
2018 J jnl
Br. J. Educ. Technol.
Ana I. Molina, Yoel Arroyo, Carmen Lacave, Miguel A. Redondo
2018 J jnl
Behav. Inf. Technol.
Carmen Lacave, Ana I. Molina, José A. Cruz-Lemus
2018 J jnl
Comput. Appl. Eng. Educ.
Yoel Arroyo, Ana I. Molina, Carmen Lacave, Miguel A. Redondo, Manuel Ortega
2017 conf
Interacción
Manuel Ortega, Miguel A. Redondo, Ana I. Molina, Crescencio Bravo, Carmen Lacave, Yoel Arroyo, Santiago Sánchez-Sobrino, María Ángeles García, César A. Collazos, Javier Alejandro Jimenez Toledo, Huizilopoztli Luna-García, J. Ángel Velázquez-Iturbide, Raúl Abad Gómez-Pastrana
2014 J jnl
Comput. Hum. Behav.
Ana I. Molina, Miguel A. Redondo, Carmen Lacave, Manuel Ortega
2007 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Carmen Lacave, Manuel Luque, Francisco Javier Díez
2006 conf
SGAI Conf. (Applications)
Rafael Duque, Crescencio Bravo, Carmen Lacave
2006 J jnl
Knowl. Based Syst.
Carmen Lacave, Agnieszka Onisko, Francisco Javier Díez
2004 J jnl
Knowl. Eng. Rev.
Carmen Lacave, Francisco Javier Díez
2003 B conf
KES
Carmen Lacave, Francisco Javier Díez
2002 J jnl
Knowl. Eng. Rev.
Carmen Lacave, Francisco Javier Díez
2000 conf
ISMDA
Carmen Lacave, Roberto Atienza, Francisco Javier Díez
redb/extractors/pe_extractors/pe_overlay.py
← Index redb/extractors/pe_extractors/pe_overlay.py python
from hashlib import md5, sha1, sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika

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


class PEOverlayExtractor(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_overlay"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_pe_overlay(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        overlay = self.pe.get_overlay()
        if overlay:
            return PEOverlay(
                _id=sha256(overlay).hexdigest(),
                overlay_size=len(overlay),
                overlay_entropy=self.calculate_entropy(overlay),
                overlay_offset=self.pe.get_overlay_data_start_offset(),
                overlay_mimetype=magic.from_buffer(overlay, mime=True),
                overlay_type=magic.from_buffer(overlay),
                overlay_magika=Magika().identify_bytes(overlay).output.ct_label,
                overlay_sha256=sha256(overlay).hexdigest(),
                overlay_sha1=sha1(overlay).hexdigest(),
                overlay_md5=md5(overlay).hexdigest(),
            )
        return None

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            overlay = self._extract_pe_overlay()
            # self.export_to_elastic([overlay])  # Let the exporters handle this
            return overlay
        except Exception as e:
            self.log.error(f"Error extracting PE overlay: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            overlay = self.extract()
            if overlay is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            data.append([
                self.sha256,              # sha256
                self.md5,                 # md5
                self.sha1,                # sha1
                overlay.overlay_size,     # overlay_size
                overlay.overlay_entropy,  # overlay_entropy
                overlay.overlay_offset,   # overlay_offset
                overlay.overlay_mimetype, # overlay_mimetype
                overlay.overlay_type,     # overlay_type
                overlay.overlay_magika,   # overlay_magika
                overlay.overlay_sha256,   # overlay_sha256
                overlay.overlay_sha1,     # overlay_sha1
                overlay.overlay_md5,      # overlay_md5
                current_time             # analysis_date
            ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'overlay_size', 'overlay_entropy',
                'overlay_offset', 'overlay_mimetype', 'overlay_type', 'overlay_magika',
                'overlay_sha256', 'overlay_sha1', 'overlay_md5',
                'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'UInt64', 'Float64', 'UInt64',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)',
                'FixedString(64)', 'FixedString(40)', 'FixedString(32)',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

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