Magdalene Marinaki

82 papers A 2B 4Misc 1Journal 45Unranked 25
YearRankTypeTitle / Venue / Authors
2025 J jnl
Ann. Math. Artif. Intell.
Themistoklis Stamadianos, Nikolaos A. Kyriakakis, Magdalene Marinaki, Yannis Marinakis
2025 conf
ICDSST
Ioannis Kypsidis, Magdalene Marinaki, Yannis Marinakis
2024 conf
LOD (1)
Maria Tsiftsoglou, Magdalene Marinaki, Yannis Marinakis
2024 J jnl
Oper. Res.
Themistoklis Stamadianos, Andromachi Taxidou, Magdalene Marinaki, Yannis Marinakis
2023 J jnl
Comput. Ind. Eng.
Nikolaos A. Kyriakakis, Stylianos Aronis, Magdalene Marinaki, Yannis Marinakis
2023 J jnl
Intell. Syst. Appl.
Magdalene Marinaki, Andromachi Taxidou, Yannis Marinakis
2023 J jnl
Oper. Res. Forum
Themistoklis Stamadianos, Nikolaos A. Kyriakakis, Magdalene Marinaki, Yannis Marinakis
2022 conf
LOD (2)
Nikolaos A. Kyriakakis, Themistoklis Stamadianos, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2022 conf
ICDSST
Themistoklis Stamadianos, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2022 conf
LION
Themistoklis Stamadianos, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2022 J jnl
Eur. J. Oper. Res.
Nikolaos A. Kyriakakis, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2022 J jnl
Comput. Ind. Eng.
Nikolaos A. Kyriakakis, Ioannis Sevastopoulos, Magdalene Marinaki, Yannis Marinakis
2022 J jnl
Swarm Evol. Comput.
Dimitra Trachanatzi, Manousos Rigakis, Magdalene Marinaki, Yannis Marinakis
2021 J jnl
Comput. Oper. Res.
Nikolaos A. Kyriakakis, Magdalene Marinaki, Yannis Marinakis
2021 J jnl
Ann. Math. Artif. Intell.
Nikolaos F. Matsatsinis, Magdalene Marinaki, Yannis Marinakis, Panos M. Pardalos
2021 J jnl
Swarm Evol. Comput.
Nikolaos A. Kyriakakis, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2021 J jnl
Knowl. Based Syst.
Manousos Rigakis, Dimitra Trachanatzi, Magdalene Marinaki, Yannis Marinakis
2020 conf
LOD (1)
Emmanouela Rapanaki, Iraklis-Dimitrios Psychas, Magdalene Marinaki, Nikolaos F. Matsatsinis, Yannis Marinakis
2020 J jnl
Swarm Evol. Comput.
Dimitra Trachanatzi, Manousos Rigakis, Magdalene Marinaki, Yannis Marinakis
2020 J jnl
Expert Syst. Appl.
Dimitra Trachanatzi, Manousos Rigakis, Magdalene Marinaki, Yannis Marinakis
2020 J jnl
Soft Comput.
Dimitra Trachanatzi, Manousos Rigakis, Magdalene Marinaki, Yannis Marinakis, Nikolaos F. Matsatsinis
2019 conf
LION
Eleftherios Tsakirakis, Magdalene Marinaki, Yannis Marinakis
2019 ch.
Business and Consumer Analytics: New Ideas
Dimitra Trachanatzi, Eleftherios Tsakirakis, Magdalene Marinaki, Yannis Marinakis, Nikolaos F. Matsatsinis
2019 conf
LION
Dimitra Trachanatzi, Manousos Rigakis, Andromachi Taxidou, Magdalene Marinaki, Yannis Marinakis, Nikolaos F. Matsatsinis
2019 J jnl
Inf. Sci.
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2019 J jnl
Appl. Soft Comput.
Eleftherios Tsakirakis, Magdalene Marinaki, Yannis Marinakis, Nikolaos F. Matsatsinis
2019 conf
LOD
Yannis Marinakis, Magdalene Marinaki
2019 conf
LION
Emmanouela Rapanaki, Iraklis-Dimitrios Psychas, Magdalene Marinaki, Yannis Marinakis
2018 conf
LOD
Emmanouela Rapanaki, Iraklis-Dimitrios Psychas, Magdalene Marinaki, Yannis Marinakis, Athanasios Migdalas
2018 conf
ICVNS
Andromachi Taxidou, Ioannis Karafyllidis, Magdalene Marinaki, Yannis Marinakis, Athanasios Migdalas
2018 ch.
Handbook of Heuristics
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2017 conf
MOD
Manousos Rigakis, Dimitra Trachanatzi, Magdalene Marinaki, Yannis Marinakis
2017 J jnl
Appl. Soft Comput.
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2016 J jnl
Expert Syst. Appl.
Magdalene Marinaki, Yannis Marinakis
2016 conf
EvoApplications (1)
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2016 J jnl
Int. J. Mach. Learn. Cybern.
Magdalene Marinaki, Yannis Marinakis
2016 J jnl
Ann. Math. Artif. Intell.
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2016 conf
SSCI
Nikolaos Makrymanolakis, Magdalene Marinaki, Yannis Marinakis
2015 conf
MCO (2)
Yannis Marinakis, Michael Politis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2015 conf
EMO (1)
Iraklis-Dimitrios Psychas, Magdalene Marinaki, Yannis Marinakis
2015 J jnl
Memetic Comput.
Magdalene Marinaki, Yannis Marinakis
2015 J jnl
Soft Comput.
Yannis Marinakis, Magdalene Marinaki
2014 J jnl
Swarm Evol. Comput.
Yannis Marinakis, Magdalene Marinaki
2014 conf
LION
Yannis Marinakis, Magdalene Marinaki, Athanasios Migdalas
2013 conf
Hybrid Metaheuristics
Yannis Marinakis, Magdalene Marinaki
2013 conf
NICSO
Magdalene Marinaki, Yannis Marinakis
2013 B conf
EvoCOP
Yannis Marinakis, Magdalene Marinaki
2013 A conf
GECCO
Yannis Marinakis, Magdalene Marinaki
2013 J jnl
Appl. Soft Comput.
Yannis Marinakis, Georgia-Roumbini Iordanidou, Magdalene Marinaki
2013 J jnl
Soft Comput.
Yannis Marinakis, Magdalene Marinaki
2012 conf
ANTS
Yannis Marinakis, Magdalene Marinaki
2011 A conf
GECCO
Yannis Marinakis, Magdalene Marinaki
2011 J jnl
Ann. Oper. Res.
Yannis Marinakis, Magdalene Marinaki, Michael Doumpos, Nikolaos F. Matsatsinis, Constantin Zopounidis
2011 J jnl
Int. J. Appl. Metaheuristic Comput.
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis, Constantin Zopounidis
2011 J jnl
Inf. Sci.
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias
2011 J jnl
Expert Syst. Appl.
Magdalene Marinaki, Yannis Marinakis, Georgios E. Stavroulakis
2010 conf
NICSO
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2010 J jnl
Comput. Oper. Res.
Yannis Marinakis, Magdalene Marinaki
2010 J jnl
Expert Syst. Appl.
Yannis Marinakis, Magdalene Marinaki
2010 J jnl
Eng. Appl. Artif. Intell.
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias
2010 J jnl
Appl. Soft Comput.
Magdalene Marinaki, Yannis Marinakis, Constantin Zopounidis
2010 J jnl
Nat. Comput.
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias
2009 Misc conf
HAIS
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2009 B conf
IEEE Congress on Evolutionary Computation
Yannis Marinakis, Magdalene Marinaki
2009 J jnl
Eur. J. Oper. Res.
Michael Doumpos, Yannis Marinakis, Magdalene Marinaki, Constantin Zopounidis
2009 J jnl
Expert Syst. Appl.
Yannis Marinakis, Magdalene Marinaki, Michael Doumpos, Constantin Zopounidis
2009 J jnl
Oper. Res.
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis, Constantin Zopounidis
2009 ch.
Encyclopedia of Optimization
Magdalene Marinaki
2009 J jnl
Expert Syst. J. Knowl. Eng.
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias, Jan Jantzen, Beth Bjerregaard
2009 ch.
Encyclopedia of Optimization
Magdalene Marinaki
2008 B conf
DaWaK
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2008 conf
ICEIS (2)
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis, Constantin Zopounidis
2008 J jnl
J. Math. Model. Algorithms
Yannis Marinakis, Magdalene Marinaki
2008 J jnl
Optim. Lett.
Magdalene Marinaki, Yannis Marinakis, Michael Doumpos, Nikolaos F. Matsatsinis, Constantin Zopounidis
2008 J jnl
Oper. Res.
Yannis Marinakis, Magdalene Marinaki, Michael Doumpos, Nikolaos F. Matsatsinis, Constantin Zopounidis
2008 J jnl
Int. J. Bus. Intell. Data Min.
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2008 J jnl
J. Glob. Optim.
Yannis Marinakis, Magdalene Marinaki, Michael Doumpos, Nikolaos F. Matsatsinis, Constantin Zopounidis
2008 J jnl
Expert Syst. Appl.
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias
2007 conf
LION
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2007 B conf
DaWaK
Yannis Marinakis, Magdalene Marinaki, Nikolaos F. Matsatsinis
2007 ch.
NICSO
Yannis Marinakis, Magdalene Marinaki, Georgios Dounias
2003 conf
ECC
Magdalene Marinaki, Markos Papageorgiou
redb/extractors/pe_extractors/pe_resources.py
← Index redb/extractors/pe_extractors/pe_resources.py python
from hashlib import sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika
import pefile
from pefile import UnicodeStringWrapperPostProcessor

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


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

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

    def _extract_resources(self):
        """
        Returns:
        resources: a list of dictionaries, one per each resources type found.
                    each dictionary the key represents the name of the content,
                    which is the value itself.
                    Empty list if no resources present.
        """
        self.log.debug(inspect.currentframe().f_code.co_name)
        resources_list = []
        try:
            if hasattr(self.pe, "DIRECTORY_ENTRY_RESOURCE"):
                for resource_type in self.pe.DIRECTORY_ENTRY_RESOURCE.entries:
                    # if resource_type.name is not None:
                    #     name = resource_type.name
                    # else:
                    #     name = pefile.RESOURCE_TYPE.get(resource_type.struct.Id)
                    # if not name:
                    #     name = resource_type.struct.Id
                    name = (
                        resource_type.name
                        if resource_type.name is not None
                        else pefile.RESOURCE_TYPE.get(resource_type.struct.Id)
                    )
                    if isinstance(name, UnicodeStringWrapperPostProcessor):
                        name = name.decode()
                    try:
                        if hasattr(resource_type, "directory"):
                            for resource_id in resource_type.directory.entries:
                                if hasattr(resource_id, "directory"):
                                    for resource_lang in resource_id.directory.entries:
                                        rsrc_data = self.pe.get_data(
                                            resource_lang.data.struct.OffsetToData,
                                            resource_lang.data.struct.Size,
                                        )
                                        file_type = magic.from_buffer(rsrc_data)
                                        magik = Magika().identify_bytes(rsrc_data).output.label

                                        rsrc_entropy = (
                                            "%.2f"
                                            % pefile.SectionStructure.entropy_H(
                                                self.pe, rsrc_data
                                            )
                                        )
                                        rsrc_sha256 = sha256(rsrc_data).hexdigest()
                                        lang = pefile.LANG.get(
                                            resource_lang.data.lang, "*unknown*"
                                        )
                                        sublang = pefile.get_sublang_name_for_lang(
                                            resource_lang.data.lang,
                                            resource_lang.data.sublang,
                                        )
                                        pe_resource = PEResource(
                                            _id=rsrc_sha256,
                                            resource_type=name,
                                            resource_entropy=rsrc_entropy,
                                            resource_sha256=rsrc_sha256,
                                            resource_filetype=file_type,
                                            resource_magika=magik,
                                            resource_language=lang,
                                            resource_rva=resource_lang.data.struct.OffsetToData,
                                            resource_size=resource_lang.data.struct.Size,
                                            resource_sub_lang=sublang,
                                        )
                                        resources_list.append(pe_resource)
                    except Exception as e:
                        self.log.warning(
                            f"Continue after Error in {self.hash.sha256}: {resource_type.name} "
                            f"Exception: {e}",
                            stack_info=True,
                        )
                        # resources_list.append({f"{e} - {resource_type.name}"})
                        continue
        except Exception as e:
            self.log.exception(
                f"Extract exports error {self.hash.sha256} Exception: {e}"
            )
        self.log.debug(f"Resource list {resources_list}")
        return resources_list

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            resources = self._extract_resources()
            # self.export_to_elastic(resources)  # Let the exporters handle this
            return resources
        except Exception as e:
            self.log.error(f"Extract resources error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            resources = self.extract()
            if resources is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            for resource in resources:
                data.append([
                    self.sha256,                    # sha256
                    self.md5,                       # md5
                    self.sha1,                      # sha1
                    resource.resource_type,         # resource_type
                    resource.resource_entropy,      # resource_entropy
                    resource.resource_sha256,       # resource_sha256
                    resource.resource_filetype,     # resource_filetype
                    resource.resource_magika,       # resource_magika
                    resource.resource_language,     # resource_language
                    resource.resource_sub_lang,     # resource_sub_lang
                    resource.resource_size,         # resource_size
                    resource.resource_rva,          # resource_rva
                    current_time                    # analysis_date
                ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'resource_type', 'resource_entropy',
                'resource_sha256', 'resource_filetype', 'resource_magika',
                'resource_language', 'resource_sub_lang', 'resource_size',
                'resource_rva', 'analysis_date'
            ]
            
            if not data:
                return None

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

            return (data, column_names, column_type_names)

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