Jalaluddin Khan

14 papers Journal 13Unranked 1
YearRankTypeTitle / Venue / Authors
2024 J jnl
Knowl. Inf. Syst.
Ghufran Ahmad Khan, Jalaluddin Khan, Taushif Anwar, Zaid Al-Huda, Bassoma Diallo, Naved Ahmad
2024 J jnl
IEEE Trans. Artif. Intell.
Ghufran Ahmad Khan, Jalaluddin Khan, Taushif Anwar, Zubair Ashraf, Muhammad Hafeez Javed, Bassoma Diallo
2023 J jnl
IEEE Access
Mohammad Ahmar Khan, Ghufran Ahmad Khan, Jalaluddin Khan, Taushif Anwar, Zubair Ashraf, Ibrahim Atoum, Naved Ahmad, Mohammad Shahid, Mohammad Ishrat, Abdulrahman Abdullah Alghamdi
2022 J jnl
IEEE Access
Mohammad Ahmar Khan, Ghufran Ahmad Khan, Jalaluddin Khan, Mohammad Rafeek Khan, Ibrahim Atoum, Naved Ahmad, Mohammad Shahid, Mohammad Ishrat, Abdulrahman Abdullah Alghamdi
2021 J jnl
IEEE Access
Amin Ul Haq, Jian Ping Li, Abdus Saboor, Jalaluddin Khan, Samad Wali, Sultan Ahmad, Amjad Ali, Ghufran Ahmad Khan, Wang Zhou
2021 J jnl
J. Intell. Fuzzy Syst.
Jalaluddin Khan, Jian Ping Li, Amin Ul Haq, Ghufran Ahmad Khan, Sultan Ahmad, Abdulrahman Abdullah Alghamdi, Noorbakhsh Amiri Golilarz
2020 J jnl
Sci. Program.
Mordecai F. Raji, Jianping Li, Amin Ul Haq, Victor Ejianya, Jalaluddin Khan, Asif Khan, Mudassir Khalil, Amjad Ali, Ghufran Ahmad Khan, Mohammad Shahid, Bilal Ahamad, Amit Yadav, Imran Memon
2020 J jnl
J. Intell. Fuzzy Syst.
Amin Ul Haq, Jianping Li, Muhammad Hammad Memon, Jalaluddin Khan, Salah Ud Din
2020 J jnl
IEEE Access
Jianping Li, Amin Ul Haq, Salah Ud Din, Jalaluddin Khan, Asif Khan, Abdus Saboor
2020 J jnl
Sensors
Amin Ul Haq, Jianping Li, Jalaluddin Khan, Muhammad Hammad Memon, Shah Nazir, Sultan Ahmad, Ghufran Ahmad Khan, Amjad Ali
2020 J jnl
J. Intell. Fuzzy Syst.
Amin Ul Haq, Jianping Li, Muhammad Hammad Memon, Jalaluddin Khan, Zafar Ali, Syed Zaheer Abbas, Shah Nazir
2020 J jnl
IEEE Access
Jalaluddin Khan, Jianping Li, Bilal Ahamad, Shadma Parveen, Amin Ul Haq, Ghufran Ahmad Khan, Arun Kumar Sangaiah
2019 J jnl
IEEE Access
Amin Ul Haq, Jian-Ping Li, Muhammad Hammad Memon, Jalaluddin Khan, Asad Malik, Tanvir Ahmad, Amjad Ali, Shah Nazir, Ijaz Ahad, Mohammad Shahid
2015 conf
FNC/MobiSPC
Jalaluddin Khan, Haider Abbas, Jalal Al-Muhtadi
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"