Mah-Rukh Fida

27 papers A* 2A 1B 4C 1Misc 1Journal 11Unranked 6
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Networks
Mah-Rukh Fida, Azza H. Ahmed
2025 J jnl
IEEE Access
Mah-Rukh Fida, Azza H. Ahmed, Ameer Shakayb Arsalaan
2025 J jnl
IEEE Trans. Veh. Technol.
Ameer Shakayb Arsalaan, Mah-Rukh Fida, Hung X. Nguyen
2024 J jnl
Sensors
Andrés F. Ocampo, Mah-Rukh Fida, Ahmed Elmokashfi, Haakon Bryhni
2024 J jnl
IEEE Trans. Mob. Comput.
Mah-Rukh Fida, Azza H. Ahmed, Thomas Dreibholz, Andrés F. Ocampo, Ahmed Elmokashfi, Foivos Michelinakis
2024 J jnl
IEEE Trans. Mob. Comput.
Mah-Rukh Fida, Marie Roald, Evrim Acar, Ahmed Elmokashfi
2023 J jnl
IEEE Trans. Netw. Serv. Manag.
Andrés F. Ocampo, Mah-Rukh Fida, Juan Felipe Botero, Ahmed Elmokashfi, Haakon Bryhni
2023 B conf
NOMS
Andrés F. Ocampo, Mah-Rukh Fida, Juan Felipe Botero, Ahmed Elmokashfi, Haakon Bryhni
2022 B conf
LCN
Thomas Dreibholz, Mah-Rukh Fida, Azza H. Ahmed, Andrés F. Ocampo, Foivos Michelinakis
2022 J jnl
IEEE Trans. Netw. Serv. Manag.
Mah-Rukh Fida, Andrés F. Ocampo, Ahmed Elmokashfi
2021 J jnl
CoRR
Ahmed Elmokashfi, Alfred Arouna, Ioana Livadariu, Mah-Rukh Fida, Amund Kvalbein, Anas Saeed Al-Selwi, Thomas Dreibholz, Haakon Bryhni
2021 conf
WONS
Ameer Shakayb Arsalaan, Hung Nguyen, Mah-Rukh Fida
2021 J jnl
Ad Hoc Networks
Ameer Shakayb Arsalaan, Hung Nguyen, Andrew Coyle, Mah-Rukh Fida
2020 B conf
CNSM
Andrés F. Ocampo, Mah-Rukh Fida, Ahmed Elmokashfi, Haakon Bryhni
2019 A conf
Internet Measurement Conference
Mah-Rukh Fida, Evrim Acar, Ahmed Elmokashfi
2019 C conf
ICTD
Mah-Rukh Fida, Mahesh K. Marina
2019
Mah-Rukh Fida
2019 A* conf
WWW
Mohammad Rajiullah, Andra Lutu, Ali Safari Khatouni, Mah-Rukh Fida, Marco Mellia, Anna Brunström, Özgü Alay, Stefan Alfredsson, Vincenzo Mancuso
2018 B conf
CNSM
Mah-Rukh Fida, Mahesh K. Marina
2017 conf
WiNTECH
Mah-Rukh Fida, Konstantinos Kousias, Andra Lutu, Mohammad Rajiullah, Özgü Alay, Anna Brunström, Antonios Argyriou
2017 conf
WiNTECH
Mah-Rukh Fida, Konstantinos Kousias, Andra Lutu, Mohammad Rajiullah, Özgü Alay, Anna Brunström, Antonios Argyriou
2017 A* conf
INFOCOM
Mah-Rukh Fida, Andra Lutu, Mahesh K. Marina, Ozgu Alay
2015 J jnl
Int. J. Distributed Sens. Networks
Muhammad Ali, Mah-Rukh Fida, Ameer Shakayb Arsalaan, Awais Adnan
2015 conf
C2B(I)D@SIGCOMM
Massimiliano Molinari, Mah-Rukh Fida, Mahesh K. Marina, Antonio Pescapè
2011 Misc conf
FIT
Mah-Rukh Fida, Tabinda Salam, Ameer Shakayb Arsalaan
2011 conf
ITNG
Mah-Rukh Fida, Muhammad Ali, Awais Adnan, Ameer Shakayb Arsalaan
2011 conf
ITNG
Tabinda Salam, Muhammad Ali, Mah-Rukh Fida
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"