Rafael Malach

31 papers B 1Journal 25Unranked 4
YearRankTypeTitle / Venue / Authors
2025 J jnl
PLoS Comput. Biol.
Dovi Yellin, Noam Siegel, Rafael Malach, Oren Shriki
2020 J jnl
NeuroImage
Aviva Berkovich-Ohana, Niv Noy, Michal Harel, Edna Furman-Haran, Amos Arieli, Rafael Malach
2019 ch.
Brain-Computer Interface Research (7)
Ori Cohen, Dana Doron, Moshe Koppel, Rafael Malach, Doron Friedman
2018 B conf
IJCNN
Ori Cohen, Rafael Malach, Moshe Koppel, Doron Friedman
2018 J jnl
NeuroImage
Rotem Broday-Dvir, Shany Grossman, Edna Furman-Haran, Rafael Malach
2017 conf
NER
Ori Cohen, Dana Doron, Moshe Koppel, Rafael Malach, Doron Friedman
2017 conf
GBCIC
Ori Cohen, François Keith, Moshe Koppel, Abderrahmane Kheddar, Rafael Malach, Doron Friedman
2016 J jnl
NeuroImage
Aviva Berkovich-Ohana, Michal Harel, Avital Hahamy-Dubossarsky, Amos Arieli, Rafael Malach
2016 J jnl
NeuroImage
Meir Meshulam, Rafael Malach
2015 J jnl
NeuroImage
Hagar Goldberg, Andrea Christensen, Tamar Flash, Martin A. Giese, Rafael Malach
2015 J jnl
NeuroImage
Dov Yellin, Aviva Berkovich-Ohana, Rafael Malach
2014 J jnl
Brain Connect.
Avital Hahamy-Dubossarsky, Vince D. Calhoun, Godfrey D. Pearlson, Michal Harel, Nachum Stern, Fanny Attar, Rafael Malach, Roy Salomon
2014 J jnl
NeuroImage
Hagar Goldberg, Son Preminger, Rafael Malach
2014 J jnl
Presence Teleoperators Virtual Environ.
Ori Cohen, Sébastien Druon, Sebastien Lengagne, Avi Mendelsohn, Rafael Malach, Abderrahmane Kheddar, Doron Friedman
2013 J jnl
Neural Networks
Eran Privman, Rafael Malach, Yehezkel Yeshurun
2013 J jnl
NeuroImage
Sharon Gilaie-Dotan, Avital Hahamy-Dubossarsky, Yuval Nir, Aviva Berkovich-Ohana, Shlomo Bentin, Rafael Malach
2012 J jnl
NeuroImage
Rafael Malach
2011 J jnl
NeuroImage
Michal Ramot, Meytal Wilf, Hagar Goldberg, Tali Weiss, Leon Y. Deouell, Rafael Malach
2011 J jnl
NeuroImage
Son Preminger, Tal Harmelech, Rafael Malach
2010 J jnl
NeuroImage
Sharon Gilaie-Dotan, Hagar Gelbard-Sagiv, Rafael Malach
2008 J jnl
J. Cogn. Neurosci.
Yulia Lerner, Boris Epshtein, Shimon Ullman, Rafael Malach
2008 J jnl
NeuroImage
Sharon Gilaie-Dotan, Yuval Nir, Rafael Malach
2007 J jnl
NeuroImage
Ruth Heller, Yulia Golland, Rafael Malach, Yoav Benjamini
2007 conf
MICCAI (1)
Polina Golland, Yulia Golland, Rafael Malach
2006 J jnl
NeuroImage
Yulia Lerner, Talma Hendler, Rafael Malach, Michal Harel, H. Leiba, C. Stolovitch, Pazit Pianka
2006 J jnl
NeuroImage
Yuval Nir, Uri Hasson, Ifat Levy, Yehezkel Yeshurun, Rafael Malach
2005 J jnl
J. Cogn. Neurosci.
Galia Avidan, Uri Hasson, Rafael Malach, Marlene Behrmann
2004 J jnl
NeuroImage
Yulia Lerner, Michal Harel, Rafael Malach
2003 J jnl
NeuroImage
Talma Hendler, Pia Rotshtein, Yaara Yeshurun, Tal Weizmann, Itamar Kahn, Dafna Ben-Bashat, Rafael Malach, Avi Bleich
2003 J jnl
NeuroImage
Galia Avidan, Ifat Levy, Talma Hendler, Ehud Zohary, Rafael Malach
1994 conf
NIPS
Kalanit Grill-Spector, Shimon Edelman, Rafael Malach
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"