Hamzeh Eyal Salman

24 papers B 1C 4Misc 1Journal 14Unranked 3
YearRankTypeTitle / Venue / Authors
2025 conf
DSA
Abdelhak-Djamel Seriai, Hamzeh Eyal Salman, Anfel Selmadji, Rahina Oumarou Mahamane
2024 J jnl
CoRR
Romina Eramo, Hamzeh Eyal Salman, Matteo Spezialetti, Darko Stern, Pierre Quinton, Antonio Cicchetti
2024 J jnl
J. Comput. Lang.
Hamzeh Eyal Salman
2023 ch.
Handbook of Re-Engineering Software Intensive Systems into Software Product Lines
Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Christophe Dony
2023 J jnl
Inf. Softw. Technol.
Hamzeh Eyal Salman
2023 J jnl
IEEE Access
Zakarea Alshara, Hamzeh Eyal Salman, Anas Shatnawi, Abdelhak-Djamel Seriai
2023 J jnl
IEEE Access
Zakarea Alshara, Anas Shatnawi, Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Maad Shatnawi
2022 J jnl
Inf.
Hamzeh Eyal Salman, Zakarea Alshara, Abdelhak-Djamel Seriai
2022 J jnl
CoRR
Ra'Fat Al-Msie'deen, Anas H. Blasi, Hamzeh Eyal Salman, Saqer Saleh Alja'afreh, Ahmad Abadleh, Mohammed A. Alsuwaiket, Awni Hammouri, Asmaa Jameel Al-Nawaiseh, Wafa Tarawneh, Suleyman A. Al-Showarah
2022 J jnl
CoRR
Ra'Fat Al-Msie'deen, Hamzeh Eyal Salman, Anas H. Blasi, Mohammed A. Alsuwaiket
2021 J jnl
Inf. Softw. Technol.
Hamzeh Eyal Salman
2019 J jnl
Big Data
Haneen Arafat Abu Alfeilat, Ahmad B. A. Hassanat, Omar Lasassmeh, Ahmad S. Tarawneh, Mahmoud Bashir Alhasanat, Hamzeh Eyal Salman, V. B. Surya Prasath
2018 J jnl
Int. J. Comput. Appl. Technol.
Hamzeh Eyal Salman
2018 J jnl
Inf.
Hamzeh Eyal Salman, Mustafa Hammad, Abdelhak-Djamel Seriai, Ahed Al-Sbou
2017 J jnl
J. Syst. Softw.
Hamzeh Eyal Salman
2016 C conf
SEKE
Hamzeh Eyal Salman, Abdelhak Seriai
2015 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Christophe Dony
2014 C conf
SEKE
Hamzeh Eyal Salman, Abdelhak Seriai, Christophe Dony
2014 C conf
SEKE
Hamzeh Eyal Salman, Abdelhak Seriai, Christophe Dony
2013 B conf
ICSR
Ra'Fat Al-Msie'deen, Abdelhak Seriai, Marianne Huchard, Christelle Urtado, Sylvain Vauttier, Hamzeh Eyal Salman
2013 conf
EUROMICRO-SEAA
Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Christophe Dony
2013 Misc conf
IRI
Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Christophe Dony
2013 C conf
SEKE
Ra'Fat Al-Msie'deen, Abdelhak-Djamel Seriai, Marianne Huchard, Christelle Urtado, Sylvain Vauttier, Hamzeh Eyal Salman
2012 conf
VARY@MoDELS
Hamzeh Eyal Salman, Abdelhak-Djamel Seriai, Christophe Dony, Ra'Fat Al-Msie'deen
redb/extractors/js_extractors/js_content.py
← Index redb/extractors/js_extractors/js_content.py python
"""Persists raw + normalised text into the generic `code_text_content` table.

Reads the raw source and the deobfuscation result directly from the shared
JSContext so no extra compute happens here — both values are computed once
per sample (the source at JSContext construction, the deobfuscation lazily
on first access) and reused by any extractor that needs them.

`text_normalized` is left NULL when the deobfuscation pass produced no
output, so analysts can distinguish "we tried and got nothing" from
"normalisation succeeded".
"""

import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor


class JSContentExtractor(JSExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False, source=None, context=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, source, context=context,
        )
        self.content_row = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def extract(self):
        src = self.js_source
        if not src:
            return None

        deobfuscated, normalizer_used = self._context.deobfuscated

        self.content_row = {
            "content_type": self._context.content_type,
            "text_raw": src,
            "text_normalized": deobfuscated,  # may be None
            "normalizer_used": normalizer_used,  # may be None
        }
        return self.content_row

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type != "ClickHouseExporter":
            return None
        if not self.content_row:
            return None

        r = self.content_row
        data = [[
            self.sha256,
            r["content_type"],
            r["text_raw"],
            r["text_normalized"],
            r["normalizer_used"],
            datetime.now(timezone.utc),
        ]]

        column_names = [
            "sha256",
            "content_type",
            "text_raw",
            "text_normalized",
            "normalizer_used",
            "analysis_date",
        ]

        column_type_names = [
            "FixedString(64)",
            "LowCardinality(String)",
            "String",
            "Nullable(String)",
            "Nullable(String)",
            "DateTime64(3, 'UTC')",
        ]

        return (data, column_names, column_type_names)

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