Rafael Tolosana-Calasanz

58 papers B 4C 3Misc 3Journal 25Unranked 22
YearRankTypeTitle / Venue / Authors
2025 conf
DIGHUM
Andrea Hrckova, Jennifer Renoux, Rafael Tolosana-Calasanz, Daniela Chudá, Martin Tamajka, Jakub Simko
2025 J jnl
IEEE Trans. Parallel Distributed Syst.
Omer F. Rana, Josef Spillner, Stephen Leak, Gerald F. Lofstead II, Rafael Tolosana-Calasanz
2025 J jnl
CoRR
Kate Keahey, Marc Richardson, Rafael Tolosana-Calasanz, Sascha Hunold, Jay F. Lofstead, Tanu Malik, Christian Pérez
2025 J jnl
WIREs Data. Mining. Knowl. Discov.
Kwok-Pan Chun, Thanti Octavianti, Nilay Dogulu, Hristos Tyralis, Georgia Papacharalampous, Ryan Rowberry, Pingyu Fan, Mark Everard, Maria Francesch-Huidobro, Wellington Migliari, David M. Hannah, John Travis Marshall, Rafael Tolosana-Calasanz, Chad Staddon, Ida Ansharyani, Bastien Dieppois, Todd R. Lewis, Juli Ponce, Silvia Ibrean, Tiago Miguel Ferreira, Chinkie Peliño-Golle, Ye Mu, Manuel Davila Delgado, Elizabeth Silvestre Espinoza, Martin Keulertz, Deepak Gopinath, Cheng Li
2024 J jnl
CoRR
Andrea Hrckova, Jennifer Renoux, Rafael Tolosana-Calasanz, Daniela Chudá, Martin Tamajka, Jakub Simko
2024 J jnl
CoRR
Víctor Medel Gracia, Rafael Tolosana-Calasanz, José Ángel Bañares, Unai Arronategui, Omer F. Rana
2024 J jnl
CoRR
Rafael Tolosana-Calasanz, José Ángel Bañares, José Manuel Colom
2024 J jnl
CoRR
Víctor Medel Gracia, Unai Arronategui, Omer F. Rana, José Ángel Bañares, Rafael Tolosana-Calasanz
2024 J jnl
CoRR
Kwok-Pan Chun, Thanti Octavianti, Nilay Dogulu, Hristos Tyralis, Georgia Papacharalampous, Ryan Rowberry, Pingyu Fan, Mark Everard, Maria Francesch-Huidobro, Wellington Migliari, David M. Hannah, John Travis Marshall, Rafael Tolosana-Calasanz, Chad Staddon, Ida Ansharyani, Bastien Dieppois, Todd R. Lewis, Juli Ponce, Silvia Ibrean, Tiago Miguel Ferreira, Chinkie Peliño-Golle, Ye Mu, Manuel Delgado, Elizabeth Silvestre Espinoza, Martin Keulertz, Deepak Gopinath, Cheng Li
2023 J jnl
IEEE Access
Victor Medel Gracia, Unai Arronategui, Omer F. Rana, José Ángel Bañares, Rafael Tolosana-Calasanz
2021 conf
GECON
Rafael Tolosana-Calasanz, Gabriel G. Castañé, José A. Bañares, Omer F. Rana
2019 conf
UCC Companion
Luiz Fernando Bittencourt, Bruno Richard Schulze, Rafael Tolosana-Calasanz
2019 J jnl
ACM Trans. Internet Techn.
Ricardo J. Rodríguez, Rafael Tolosana-Calasanz, Omer F. Rana
2018 J jnl
Comput. Electr. Eng.
Víctor Medel Gracia, Rafael Tolosana-Calasanz, José Ángel Bañares, Unai Arronategui, Omer F. Rana
2018 J jnl
Future Gener. Comput. Syst.
Rafael Tolosana-Calasanz, José Ángel Bañares, José Manuel Colom
2017 conf
GECON
Víctor Medel Gracia, Carlos Tolón, Unai Arronategui, Rafael Tolosana-Calasanz, José Ángel Bañares, Omer F. Rana
2017 J jnl
Concurr. Comput. Pract. Exp.
Rafael Tolosana-Calasanz, Javier Diaz Montes, Omer F. Rana, Manish Parashar, Erotokritos Xydas, Charalampos E. Marmaras, Panagiotis Papadopoulos, Liana Cipcigan
2017 J jnl
IEEE Trans. Parallel Distributed Syst.
Rafael Tolosana-Calasanz, Javier Diaz Montes, Omer F. Rana, Manish Parashar
2017 conf
UCC (Companion")
Rafael Tolosana-Calasanz, Luiz Fernando Bittencourt, Bruno Schulze, Andrey Brito, Seán Murphy
2016 Misc conf
UCC
Rafael Tolosana-Calasanz, Javier Diaz Montes, Luiz F. Bittencourt, Omer F. Rana, Manish Parashar
2016 J jnl
Comput. Electr. Eng.
Rafael Tolosana-Calasanz, Luiz Fernando Bittencourt, Fatos Xhafa
2016 J jnl
Future Gener. Comput. Syst.
Rafael Tolosana-Calasanz, José Ángel Bañares, Congduc Pham, Omer F. Rana
2015 conf
GECON
Alberto Merino, Rafael Tolosana-Calasanz, José Ángel Bañares, José Manuel Colom
2015 J jnl
Sustain. Comput. Informatics Syst.
Danielo Goncalves Gomes, Rafael Tolosana-Calasanz, Nazim Agoulmine
2015 J jnl
Comput. Electr. Eng.
Danielo Goncalves Gomes, Luiz Fernando Bittencourt, Rafael Tolosana-Calasanz
2015 J jnl
Comput. Electr. Eng.
Danielo Goncalves Gomes, Rodrigo N. Calheiros, Rafael Tolosana-Calasanz
2015 conf
KES-AMSTA
Rafael Tolosana-Calasanz, José Ángel Bañares, José Manuel Colom
2014 Misc conf
UCC
Marcio R. M. Assis, Luiz F. Bittencourt, Rafael Tolosana-Calasanz
2014 conf
PNSE @ Petri Nets
José Ángel Bañares, Rafael Tolosana-Calasanz, Fernando Tricas, Unai Arronategui, Javier Celaya, José Manuel Colom
2014 B conf
CCGRID
Rafael Tolosana-Calasanz, José Ángel Bañares, Omer F. Rana, Congduc Pham, Erotokritos Xydas, Charalampos E. Marmaras, Panagiotis Papadopoulos, Liana Cipcigan
2014 conf
ICCAC
Rafael Tolosana-Calasanz, Javier Diaz Montes, Omer F. Rana, Manish Parashar
2014 J jnl
Comput. Electr. Eng.
Danielo Goncalves Gomes, Rodrigo N. Calheiros, Rafael Tolosana-Calasanz
2014 conf
GECON
Rafael Tolosana-Calasanz, José Ángel Bañares, José Manuel Colom
2013 B conf
CCGRID
Rafael Tolosana-Calasanz, José Ángel Bañares, Liana Cipcigan, Omer F. Rana, Panagiotis Papadopoulos, Congduc Pham
2013 Misc conf
UCC
Gayathri Nadarajan, Cheng-Lin Yang, Yun-Heh Chen-Burger, Rafael Tolosana-Calasanz, Omer F. Rana
2013 C conf
DeSE
Thar Baker, Yanik Ngoko, Rafael Tolosana-Calasanz, Omer F. Rana, Martin Randles
2013 conf
GECON
José Ángel Bañares, Omer F. Rana, Rafael Tolosana-Calasanz, Congduc Pham
2013 conf
GECON
Thar Baker, Omer F. Rana, Radu Calinescu, Rafael Tolosana-Calasanz, José Ángel Bañares
2012 B conf
CCGRID
Ricardo J. Rodríguez, Rafael Tolosana-Calasanz, Omer F. Rana
2012 B conf
CCGRID
Rafael Tolosana-Calasanz, José Ángel Bañares, Congduc Pham, Omer F. Rana
2012 J jnl
J. Comput. Syst. Sci.
Rafael Tolosana-Calasanz, José Ángel Bañares, Congduc Pham, Omer F. Rana
2012 conf
KES-AMSTA
Ricardo J. Rodríguez, Rafael Tolosana-Calasanz, Omer F. Rana
2012 ed.
MCG@Middleware
Bruno Schulze, Rafael Tolosana-Calasanz, Luiz F. Bittencourt
2012 C conf
ISPA
Rafael Tolosana-Calasanz, José Ángel Bañares, Congduc Pham, Omer F. Rana
2012 conf
GECON
Rafael Tolosana-Calasanz, José Ángel Bañares, Congduc Pham, Omer F. Rana
2011 J jnl
Concurr. Comput. Pract. Exp.
Rafael Tolosana-Calasanz, José A. Bañares, Omer F. Rana
2011 conf
WORKS@SC
Rafael Tolosana-Calasanz, Marco Lackovic, Omer F. Rana, José A. Bañares, Domenico Talia
2011 conf
KES-AMSTA
Rafael Tolosana-Calasanz, José A. Bañares, Omer F. Rana
2010 conf
CSE
Marco Lackovic, Domenico Talia, Rafael Tolosana-Calasanz, José A. Bañares, Omer F. Rana
2010 J jnl
Concurr. Comput. Pract. Exp.
Rafael Tolosana-Calasanz, José A. Bañares, Omer F. Rana, Pedro Álvarez, Joaquin Ezpeleta, Andreas Hoheisel
2010 J jnl
J. Comput. Syst. Sci.
Rafael Tolosana-Calasanz, José Ángel Bañares, Pedro Álvarez, Joaquín Ezpeleta, Omer F. Rana
2008 conf
CBSE
Rafael Tolosana-Calasanz, Omer F. Rana, José A. Bañares
2008 conf
MGC
Rafael Tolosana-Calasanz, José A. Bañares, Pedro Álvarez, Joaquin Ezpeleta, Omer F. Rana
2008 C conf
ICIW
Rafael Tolosana-Calasanz, José A. Bañares, Pedro Álvarez, Joaquin Ezpeleta
2007 conf
OTM Conferences (2)
Rafael Tolosana-Calasanz, José A. Bañares, Pedro Álvarez, Joaquin Ezpeleta
2006 conf
ECDL
Rafael Tolosana-Calasanz, José Antonio Álvarez-Robles, Javier Lacasta, Javier Nogueras-Iso, Pedro R. Muro-Medrano, F. Javier Zarazaga-Soria
2006 J jnl
Int. J. Metadata Semant. Ontologies
Rafael Tolosana-Calasanz, Javier Nogueras-Iso, Rubén Béjar, Pedro R. Muro-Medrano, F. Javier Zarazaga-Soria
2005 conf
Dublin Core Conference
David Portolés-Rodríguez, Rafael Tolosana-Calasanz, Javier Nogueras-Iso, Rodolfo Rioja, Pedro R. Muro-Medrano, F. Javier Zarazaga-Soria
redb/extractors/macho_extractors/macho_dylibs.py
← Index redb/extractors/macho_extractors/macho_dylibs.py python
import hashlib
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachODylib


class MachODylibExtractor(MachOExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        macho=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            macho,
        )
        self.elastic_index = self.index_prefix + "-macho_dylibs"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_dylibs(self):
        """Extract dynamic library information from all architectures in the MachO binary."""
        self.log.debug(inspect.currentframe().f_code.co_name)
        dylibs = []

        if not self.macho:
            return dylibs

        try:
            # Get architectures using new API (already parsed in base class)
            architectures = self.macho.get_architectures()
            if not architectures:
                return dylibs

            # Process each architecture
            for arch_name in architectures:
                # Get dylib commands using new API with architecture parameter
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Extract dylib commands for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        # Create dylib dataclass with architecture info
                        macho_dylib = MachODylib(
                            dylib_name=dylib_name,
                            dylib_timestamp=dylib_cmd.get('dylib_timestamp', 0),
                            dylib_current_version=dylib_cmd.get('dylib_current_version', 0),
                            dylib_compat_version=dylib_cmd.get('dylib_compat_version', 0),
                        )
                        # Add architecture info to the dylib
                        macho_dylib.architecture = arch_name
                        dylibs.append(macho_dylib)

                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name} in {self.hash.sha256}: {e}'
                        )
                        continue

            return dylibs

        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return dylibs

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            dylibs = self._extract_dylibs()
            return dylibs
        except Exception as e:
            self.log.error(f"Error extracting MachO dylibs: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get dylib commands for this architecture
                dylib_commands = self.macho.get_dylib_commands(arch=arch_name)
                if not dylib_commands:
                    continue

                # Process each dylib for this architecture
                for dylib_cmd in dylib_commands:
                    try:
                        dylib_name = dylib_cmd.get('dylib_name', 'Unknown')
                        if isinstance(dylib_name, bytes):
                            dylib_name = dylib_name.decode('utf-8', errors='replace')

                        data.append([
                            arch_sha256,                          # sha256 (architecture-specific)
                            dylib_name,                           # dylib_name
                            dylib_cmd.get('dylib_timestamp', 0), # dylib_timestamp
                            dylib_cmd.get('dylib_current_version', 0), # dylib_current_version
                            dylib_cmd.get('dylib_compat_version', 0),  # dylib_compat_version
                            current_time,                         # analysis_date
                        ])
                    except Exception as e:
                        self.log.warning(
                            f'Unable to process dylib "{dylib_cmd.get("dylib_name", "Unknown")}" for architecture {arch_name}: {e}'
                        )
                        continue

            column_names = [
                'sha256',
                'dylib_name', 'dylib_timestamp', 'dylib_current_version',
                'dylib_compat_version', 'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'String', 'UInt32', 'UInt32',
                'UInt32', 'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

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