Ralf-Peter Mundani

44 papers C 6Misc 9Journal 22Unranked 6
YearRankTypeTitle / Venue / Authors
2025 conf
VISIGRAPP (1): GRAPP, HUCAPP, IVAPP
Michael Burch, Raphael Brunold, Ralf-Peter Mundani
2024 J jnl
CoRR
Himmet Kaplan, Ralf-Peter Mundani, Heiko Rölke, Albert Weichselbraun, Martin Tschudy
2023 conf
ICEIS (1)
Himmet Kaplan, Ralf-Peter Mundani, Heiko Rölke, Albert Weichselbraun
2023 J jnl
CoRR
Himmet Kaplan, Ralf-Peter Mundani, Heiko Rölke, Albert Weichselbraun
2023 conf
ICEIS (Revised Selected Papers 1)
Himmet Kaplan, Ralf-Peter Mundani, Heiko Rölke, Albert Weichselbraun, Martin Tschudy
2021 C conf
ISPDC
Christoph Ertl, Ralf-Peter Mundani
2020 J jnl
Inf. Wiss. Prax.
Ralf-Peter Mundani
2019 J jnl
J. Comput. Civ. Eng.
Bobby Minola Ginting, Ralf-Peter Mundani
2018 J jnl
CoRR
Jovana Knezevic, Ralf-Peter Mundani, Ernst Rank
2018 J jnl
CoRR
Ralf-Peter Mundani, Jérôme Frisch, Vasco Varduhn, Ernst Rank
2018 J jnl
CoRR
Atanas Atanasov, Hans-Joachim Bungartz, Jérôme Frisch, Miriam Mehl, Ralf-Peter Mundani, Ernst Rank, Christoph van Treeck
2018 J jnl
CoRR
Christoph Ertl, Jérôme Frisch, Ralf-Peter Mundani
2018 J jnl
CoRR
Ralf-Peter Mundani, Alexander Düster, Jovana Knezevic, Andreas Niggl, Ernst Rank
2018 J jnl
CoRR
Christoph Ertl, Ralf-Peter Mundani, Ernst Rank
2018 J jnl
CoRR
Ralf-Peter Mundani, Marko Ljucovic, Ernst Rank
2018 J jnl
CoRR
Nevena Perovic, Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2018 J jnl
CoRR
Jérôme Frisch, Ralf-Peter Mundani
2018 J jnl
CoRR
John N. Jomo, Nils Zander, Mohamed Elhaddad, Ali Özcan, Stefan Kollmannsberger, Ralf-Peter Mundani, Ernst Rank
2017 C ed.
ISPDC
Radu Prodan, Florin Pop, Ralf-Peter Mundani
2017 J jnl
Concurr. Comput. Pract. Exp.
Christoph Ertl, Jérôme Frisch, Ralf-Peter Mundani
2017 Misc conf
SYNASC
Christoph Ertl, Ralf-Peter Mundani
2017 J jnl
Adv. Eng. Softw.
Nevena Perovic, Jérôme Frisch, Amgad Salama, Shuyu Sun, Ernst Rank, Ralf-Peter Mundani
2017 J jnl
Comput. Math. Appl.
John N. Jomo, Nils Zander, Mohamed Elhaddad, Ali Özcan, Stefan Kollmannsberger, Ralf-Peter Mundani, Ernst Rank
2016 C conf
ISPDC
Christoph Ertl, Jérôme Frisch, Ralf-Peter Mundani
2015 J jnl
Adv. Eng. Softw.
Ralf-Peter Mundani, Jérôme Frisch, Vasco Varduhn, Ernst Rank
2015 J jnl
Comput.
Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank, Christoph van Treeck
2015 Misc conf
SYNASC
Jérôme Frisch, Ralf-Peter Mundani
2014 J jnl
Scalable Comput. Pract. Exp.
Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2014 J jnl
Adv. Eng. Informatics
Horst Steuer, Matthias Flurl, Andreas Donaubauer, Ralf-Peter Mundani, Thomas H. Kolbe, Ernst Rank
2014 Misc conf
SYNASC
Nevena Perovic, Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2014 J jnl
Adv. Eng. Informatics
André Borrmann, Matthias Flurl, Javier Ramos Jubierre, Ralf-Peter Mundani, Ernst Rank
2013 Misc conf
SYNASC
Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2012 C ed.
ISPDC
Michael Bader, Hans-Joachim Bungartz, Dan Grigoras, Miriam Mehl, Ralf-Peter Mundani, Rodica Potolea
2012 C conf
ISPDC
Vasco Varduhn, Ralf-Peter Mundani, Ernst Rank
2012 C conf
ISPDC
Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2012 conf
PARA
Jovana Knezevic, Ralf-Peter Mundani, Ernst Rank
2012 Misc conf
SYNASC
Jérôme Frisch, Ruiping Gao, Ralf-Peter Mundani, Chien-Ming Wang, Ernst Rank
2011 Misc conf
SYNASC
Jérôme Frisch, Ralf-Peter Mundani, Ernst Rank
2009 conf
PVM/MPI
Ralf-Peter Mundani, Alexander Düster, Jovana Knezevic, Andreas Niggl, Ernst Rank
2006 Misc conf
PSC
Srihari Narasimhan, Ralf-Peter Mundani, Hans-Joachim Bungartz
2006
Ralf-Peter Mundani
2005 conf
PVM/MPI
Ralf-Peter Mundani, Ioan Lucian Muntean, Hans-Joachim Bungartz, Andreas Niggl, Ernst Rank
2005 Misc conf
International Conference on Computational Science (2)
Martin Bernreuther, Markus Brenk, Hans-Joachim Bungartz, Ralf-Peter Mundani, Ioan Lucian Muntean
2002 Misc conf
International Conference on Computational Science (3)
Michael Bader, Hans-Joachim Bungartz, Anton Frank, Ralf-Peter Mundani
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

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

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

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

            return data, column_names, column_type_names

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