Otilia Kocsis

40 papers A 1B 2C 3Misc 3Journal 9Unranked 21
YearRankTypeTitle / Venue / Authors
2025 conf
IISA
Otilia Kocsis, Eva de Lera, Diana Fehr, Pille Runnel, Camilla Marini, Poppy Oikonomou, Angeliki Barakli
2024 conf
EGOVIS
Otilia Kocsis, Eva de Lera, Michael A. Bedek, Maria Zangl, Radu Colt, Veronika Sausová, Lucia Birasova
2021 C conf
IJCCI
Giorgos Papoulias, Otilia Kocsis, Konstantinos Moustakas
2021 conf
SEEDA-CECNSM
Sotiris Alexiou, Elias Dritsas, Otilia Kocsis, Konstantinos Moustakas, Nikos Fakotakis
2021 conf
LION
Elias Dritsas, Nikos Fazakis, Otilia Kocsis, Nikos Fakotakis, Konstantinos Moustakas
2021 C conf
IJCCI
Nikos Fazakis, Elias Dritsas, Otilia Kocsis, Nikos Fakotakis, Konstantinos Moustakas
2021 J jnl
IEEE Access
Nikos Fazakis, Otilia Kocsis, Elias Dritsas, Sotiris Alexiou, Nikos Fakotakis, Konstantinos Moustakas
2021 conf
IISA
Elias Dritsas, Nikos Fazakis, Otilia Kocsis, Konstantinos Moustakas, Nikos Fakotakis
2021 C conf
IJCCI
Ioannis Konstantoulas, Otilia Kocsis, Elias Dritsas, Nikos Fakotakis, Konstantinos Moustakas
2020 conf
BIBM
Ioannis Konstantoulas, Otilia Kocsis, Nikos Fakotakis, Konstantinos Moustakas
2020 conf
PETRA
Sotiris Alexiou, Nikos Fazakis, Otilia Kocsis, Nikos Fakotakis, Konstantinos Moustakas
2019 conf
AmI (Workshops/Posters)
Dimitrios Amaxilatis, Nikos Tsironis, Charalampos Vassiliou, Otilia Kocsis, André Pardal, Gregg C. Vanderheiden, Harm op den Akker
2019 conf
PETRA
Otilia Kocsis, Konstantinos Moustakas, Nikos Fakotakis, Hermie J. Hermens, Miriam Cabrita, Tom Ziemke, Rita Kovordányi
2019 J jnl
Univers. Access Inf. Soc.
Helen C. Leligou, Athanasoulis Panagiotis, Gianna Tsakou, Gregg C. Vanderheiden, Katerina Touliou, Otilia Kocsis, Nikos Katevas
2019 conf
PETRA
Otilia Kocsis
2019 J jnl
ERCIM News
Otilia Kocsis, Nikos Fakotakis, Konstantinos Moustakas
2019 conf
PETRA
Otilia Kocsis, Konstantinos Moustakas, Nikos Fakotakis, Charalampos Vassiliou, Androniki Toska, Gregg C. Vanderheiden, Achilleas Stergiou, Dimitrios Amaxilatis, André Pardal, João Quintas, Hermie J. Hermens, Miriam Cabrita, Carina Dantas, Sonja Hansen, Tom Ziemke, Valentina Tageo, Paula Dougan
2018 conf
SETN
Gerasimos Arvanitis, Otilia Kocsis, Aris S. Lalos, Stavros Nousias, Konstantinos Moustakas, Nikos Fakotakis
2018 conf
SETN
Aggeliki Anastasiou, Otilia Kocsis, Konstantinos Moustakas
2018 conf
BRAINS/WS-AFFIN@AmI
Otilia Kocsis, Aris S. Lalos, Gerasimos Arvanitis, Konstantinos Moustakas
2017 conf
SPECOM
Otilia Kocsis, Basilis Kladis, Anastasios Tsopanoglou, Nikos Fakotakis
2017 conf
AAATE Conf.
Helen-Catherine Leligou, Athanasoulis Panagiotis, Gianna Tsakou, Gregg C. Vanderheiden, Otilia Kocsis, Nikos Katevas
2016 conf
SSCI
Otilia Kocsis, Gregg C. Vanderheiden, Ignacio Peinado, Eva de Lera, Lukas Smirek, Gottfried Zimmermann, Till Riedel, Nadia Fendrich
2012 J jnl
Expert Syst. Appl.
Theodoros Kostoulas, Iosif Mporas, Otilia Kocsis, Todor Ganchev, Nikos Katsaounos, Juan J. Santamaría, Susana Jiménez-Murcia, Fernando Fernández-Aranda, Nikos Fakotakis
2012 B conf
ICTAI
Iosif Mporas, Todor Ganchev, Otilia Kocsis, Nikos Fakotakis, Olaf Jahn, Klaus Riede, Karl-L. Schuchmann
2011 J jnl
Signal Process.
Iosif Mporas, Todor Ganchev, Otilia Kocsis, Nikos Fakotakis
2011 Misc conf
ICASSP
Iosif Mporas, Todor Ganchev, Otilia Kocsis, Nikos Fakotakis
2010 J jnl
Expert Syst. Appl.
Iosif Mporas, Otilia Kocsis, Todor Ganchev, Nikos Fakotakis
2010 J jnl
Int. J. Artif. Intell. Tools
Iosif Mporas, Todor Ganchev, Otilia Kocsis, Nikos Fakotakis
2010 B conf
LREC
Theodoros Kostoulas, Otilia Kocsis, Todor Ganchev, Fernando Fernández-Aranda, Juan J. Santamaría, Susana Jiménez-Murcia, Maher Ben Moussa, Nadia Magnenat-Thalmann, Nikos Fakotakis
2009 conf
DPS
Iosif Mporas, Otilia Kocsis, Todor Ganchev, Nikos Fakotakis
2009 Misc conf
AIAI
Otilia Kocsis, Todor Ganchev, Iosif Mporas, George Papadopoulos, Nikos Fakotakis
2009 Misc conf
AIAI
Iosif Mporas, Todor Ganchev, Otilia Kocsis, Nikos Fakotakis
2009 ch.
Annual Review of Cybertherapy and Telemedicine
Susana Jiménez-Murcia, Fernando Fernández-Aranda, Elias Kalapanidas, Dimitri Konstantas, Todor Ganchev, Otilia Kocsis, Tony Lam, Juan J. Santamaría, Thierry Raguin, Christian Breiteneder, Hannes Kaufmann, Costas Davarakis
2007 conf
User Modeling
Elena Vildjiounaite, Otilia Kocsis, Vesa Kyllönen, Basilis Kladis
2006 J jnl
Speech Commun.
Luis Fernando D'Haro, Ricardo de Córdoba, Javier Ferreiros, Stefan W. Hamerich, Volker Schless, Basilis Kladis, Volker Schubert, Otilia Kocsis, Stefan Igel, José Manuel Pardo
2004 conf
SIGDIAL Workshop
Stefan W. Hamerich, Volker Schubert, Volker Schless, Ricardo de Córdoba, José M. Pardo, Luis Fernando D'Haro, Basilis Kladis, Otilia Kocsis, Stefan Igel
2004 A conf
INTERSPEECH
Stefan W. Hamerich, Volker Schless, Basilis Kladis, Volker Schubert, Otilia Kocsis, Stefan Igel, Ricardo de Córdoba, Luis Fernando D'Haro, José Manuel Pardo
2003 J jnl
Comput. Methods Programs Biomed.
Otilia Kocsis, Lena Costaridou, George J. Mandellos, Dimitris K. Lymberopoulos, George Panayiotakis
2002 conf
DSP
Otilia Kocsis, Lena Costaridou, L. Varaki, Eleni A. Likaki, Christina Kalogeropoulou, George Panayiotakis
redb/extractors/macho_extractors/macho_exports.py
← Index redb/extractors/macho_extractors/macho_exports.py python
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 MachOExport


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

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

    def _extract_exports(self, arch_name=None):
        """Extract export information from the MachO binary for a specific architecture."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get exported symbols using new API for specific architecture
            exported_symbols = self.macho.get_exported_symbols(arch=arch_name)

            # Extract all exported symbols (may be empty for some binaries)
            # Handle None or empty dict
            if not exported_symbols:
                exported_symbols = {}
            all_symbols = []
            for dylib_name, symbols in exported_symbols.items():
                # Process symbol names
                for symbol in symbols:
                    if isinstance(symbol, bytes):
                        symbol = symbol.decode('utf-8', errors='replace')
                    all_symbols.append(symbol)

            # Create export dataclass
            macho_export = MachOExport(
                macho_exports_total=len(all_symbols),
                macho_export_symbols=all_symbols  # Empty list is fine, but None is not allowed for Array type
            )

            return macho_export

        except Exception as e:
            self.log.error(f"Error extracting MachO exports for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Get architectures (macho is already parsed in base class)
            architectures = self.macho.get_architectures()
            if len(architectures) > 1:
                # FAT binary - return list of exports for each architecture
                results = []
                for arch_name in architectures:
                    exports = self._extract_exports(arch_name)
                    if exports:
                        exports.arch_identifier = arch_name
                        results.append(exports)
                return results
            else:
                # Single architecture - return single result
                return self._extract_exports(architectures[0] if architectures else None)
        except Exception as e:
            self.log.error(f"Error extracting MachO exports: {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 exports for this architecture
                macho_export = self._extract_exports(arch_name)
                if not macho_export:
                    continue

                data.append([
                    arch_sha256,                          # sha256 (arch-specific)
                    macho_export.macho_exports_total,     # macho_exports_total
                    macho_export.macho_export_symbols,    # macho_export_symbols (keep as array!)
                    current_time,                         # analysis_date
                ])

            column_names = [
                'sha256',
                'macho_exports_total', 'macho_export_symbols',
                'analysis_date'
            ]

            if not data:
                return None

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

            return (data, column_names, column_type_names)

        return None

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