J. Ramiro Martinez de Dios

30 papers A* 3A 3Journal 15Unranked 6
YearRankTypeTitle / Venue / Authors
2025 A conf
IROS
Raul Tapia, Abdalraheem A. Ijjeh, J. Ramiro Martinez de Dios, Aníbal Ollero
2025 J jnl
IEEE Trans. Robotics
Julio L. Paneque, J. Ramiro Martinez de Dios, Aníbal Ollero
2024 conf
IWINAC (2)
Javier Luna-Santamaria, Iván Gutierrez Rodríguez, J. Ramiro Martinez de Dios, Aníbal Ollero
2024 J jnl
IEEE Access
Barbara Arbanas Ferreira, Tamara Petrovic, Matko Orsag, J. Ramiro Martinez de Dios, Stjepan Bogdan
2024 J jnl
IEEE Robotics Autom. Lett.
Juan Pablo Rodríguez-Gómez, J. Ramiro Martinez de Dios, Aníbal Ollero, Guillermo Gallego
2021 J jnl
CoRR
Barbara Arbanas Ferreira, Tamara Petrovic, Matko Orsag, J. Ramiro Martinez de Dios, Stjepan Bogdan
2021 J jnl
CoRR
Juan Pablo Rodríguez-Gómez, Raul Tapia, Julio Lopez Paneque, Pedro Grau, Augusto Gómez Eguíluz, J. Ramiro Martinez de Dios, Aníbal Ollero
2018 J jnl
IEEE Robotics Autom. Mag.
Aníbal Ollero, Guillermo Heredia, Antonio Franchi, Gianluca Antonelli, Konstantin Kondak, Alberto Sanfeliu, Antidio Viguria, J. Ramiro Martinez de Dios, Francesco Pierri, Juan Cortés, Angel Santamaria-Navarro, Miguel Angel Trujillo, Ribin Balachandran, Juan Andrade-Cetto, Angel Rodriguez
2017 conf
ROBOT (2)
Julio L. Paneque, Arturo Torres-González, J. Ramiro Martinez de Dios, Juan Ramón Astorga Ramírez, Aníbal Ollero
2017 conf
ROBOT (2)
Francisco José Fernández Jiménez, J. Ramiro Martinez de Dios
2017 J jnl
Inf. Fusion
Alberto de San Bernabé, J. Ramiro Martinez de Dios, Aníbal Ollero
2016 J jnl
Unmanned Syst.
Arturo Torres-González, J. Ramiro Martinez de Dios, Antonio E. Jimenez-Cano, Aníbal Ollero
2015 book
Cooperative Robots and Sensor Networks
Anis Koubâa, J. Ramiro Martinez de Dios
2015 ch.
Advances in Social Media Analysis
David Alejo, Jose A. Cobano, Guillermo Heredia, J. Ramiro Martinez de Dios, Aníbal Ollero
2015 ch.
Advances in Social Media Analysis
Arturo Torres-González, J. Ramiro Martinez de Dios, Aníbal Ollero
2014 A* conf
ICRA
Arturo Torres-González, J. Ramiro Martinez de Dios, Aníbal Ollero
2013 conf
ROBOT (2)
Arturo Torres-González, J. Ramiro Martinez de Dios, Aníbal Ollero
2013 A conf
IROS
Alberto de San Bernabé, J. Ramiro Martinez de Dios, Aníbal Ollero
2012 A conf
IROS
Alberto de San Bernabé, J. Ramiro Martinez de Dios, Aníbal Ollero
2011 J jnl
J. Field Robotics
Iván Maza, Fernando Caballero, Jesús Capitán, J. Ramiro Martinez de Dios, Aníbal Ollero
2011 J jnl
J. Intell. Robotic Syst.
Jesús Iván Maza, Fernando Caballero, Jesús Capitán, J. Ramiro Martinez de Dios, Aníbal Ollero
2010 J jnl
J. Intell. Robotic Syst.
Jose A. Cobano, J. Ramiro Martinez de Dios, Roberto Conde, J. M. Sánchez-Matamoros, Aníbal Ollero
2010 A* conf
ICRA
Aníbal Ollero, Konstantin Kondak, E. Previnaire, Iván Maza, Fernando Caballero, Markus Bernard, J. Ramiro Martinez de Dios, Pedro José Marrón, Klaus Herrmann, Lodewijk van Hoesel, Jason Lepley, Eduardo de Andrés
2008 J jnl
Image Vis. Comput.
J. Ramiro Martinez de Dios, Begoña C. Arrue, Aníbal Ollero, Luis Merino, Francisco Gómez-Rodríguez
2006 J jnl
J. Field Robotics
Luis Merino, Fernando Caballero, J. Ramiro Martinez de Dios, Joaquin Ferruz, Aníbal Ollero
2005 A* conf
ICRA
Luis Merino, Fernando Caballero, J. Ramiro Martinez de Dios, Aníbal Ollero
2004 conf
ICIAR (1)
J. Ramiro Martinez de Dios, Aníbal Ollero
2004 conf
ICIAR (1)
J. Ramiro Martinez de Dios, Aníbal Ollero
2003 J jnl
Robotica
J. Ramiro Martinez de Dios, C. Serna, Aníbal Ollero
2000 J jnl
IEEE Intell. Syst.
Begoña C. Arrue, Aníbal Ollero, J. Ramiro Martinez de Dios
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"