Rafael Estepa

36 papers C 1Journal 25Unranked 10
YearRankTypeTitle / Venue / Authors
2025 J jnl
Cybersecur.
Jesús E. Díaz Verdejo, Rafael Estepa, Antonio Jose Estepa, Javier Muñoz-Calle, Germán Madinabeitia
2024 J jnl
Internet Things
Agustín Walabonso Lara Romero, Antonio Jose Estepa, Rafael Estepa, Jesús Esteban Díaz Verdejo, Vicente Mayor
2024 conf
EICC
Jesús Esteban Díaz Verdejo, Rafael Estepa, Antonio Estepa Alonso, Javier Muñoz-Calle
2024 J jnl
Comput. Commun.
Rafael Estepa, Mark Davis, Vicente Mayor, Antonio Jose Estepa
2023 J jnl
Comput. Secur.
Jesús Esteban Díaz Verdejo, Rafael Estepa, Antonio Jose Estepa Alonso, Germán Madinabeitia
2023 J jnl
Comput. Commun.
Vicente Mayor, Rafael Estepa, Antonio Jose Estepa
2023 J jnl
Internet Things
Juan A. Ternero, Vicente Mayor, Rafael Estepa, Antonio Jose Estepa, Germán Madinabeitia
2023 J jnl
Internet Things
Agustín Walabonso Lara Romero, Vicente Mayor, Rafael Estepa, Antonio Jose Estepa, Jesús Esteban Díaz Verdejo
2022 J jnl
Comput. Commun.
Vicente Mayor, Rafael Estepa, Antonio Jose Estepa Alonso, Germán Madinabeitia
2021 J jnl
IEEE Access
Rafael Estepa, Antonio Jose Estepa, Germán Madinabeitia, Ernesto García
2020 J jnl
Future Gener. Comput. Syst.
Jesús Esteban Díaz Verdejo, Antonio Jose Estepa, Rafael Estepa, Germán Madinabeitia, Francisco Javier Muñoz-Calle
2020 J jnl
Sensors
Vicente Mayor, Rafael Estepa, Antonio Jose Estepa, Germán Madinabeitia
2020 J jnl
IEEE Access
Rafael Estepa, Jesús Esteban Díaz Verdejo, Antonio Jose Estepa, Germán Madinabeitia
2020 J jnl
Comput. Commun.
Vicente Mayor, Rafael Estepa, Antonio Jose Estepa, Germán Madinabeitia
2019 J jnl
Wirel. Commun. Mob. Comput.
Vicente Mayor, Rafael Estepa, Antonio Jose Estepa, Germán Madinabeitia
2019 J jnl
IEEE Access
Antonio Jose Estepa Alonso, Rafael Estepa, Germán Madinabeitia, Juan M. Vozmediano
2017 J jnl
Netw. Protoc. Algorithms
Antonio Jose Estepa, Rafael Estepa, Vicente Mayor, Germán Madinabeitia, Mark Davis
2016 J jnl
Int. J. Hum. Comput. Stud.
Antonio Delgado, Antonio Jose Estepa, José Antonio Troyano Jiménez, Rafael Estepa
2014 J jnl
Netw. Protoc. Algorithms
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano, Pablo Carrillo
2014 J jnl
Wirel. Commun. Mob. Comput.
Juan Jiménez, Rafael Estepa, Antonio Jose Estepa, Francisco R. Rubio, Fabio Gómez-Estern
2011 J jnl
IEEE Commun. Lett.
Rafael Estepa, Antonio Jose Estepa, Thiago Cupertino, Juan M. Vozmediano, Germán Madinabeitia
2011 J jnl
Comput. Networks
Rafael Estepa, Antonio Jose Estepa, Thiago Cupertino
2008 J jnl
Telecommun. Syst.
Antonio Jose Estepa, Rafael Estepa, António Pacheco
2008 J jnl
Comput. Networks
Antonio Jose Estepa, Rafael Estepa
2008 conf
CADUI
Antonio Delgado, Antonio Jose Estepa, José A. Troyano, Rafael Estepa
2007 J jnl
IEEE Commun. Lett.
Antonio Jose Estepa, Rafael Estepa
2007 conf
WEBIST (2)
Antonio Delgado, Antonio Jose Estepa, Rafael Estepa
2006 conf
SIGMAP
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2006 conf
ICETE (Selected Papers)
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2006 conf
SIGMAP
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2004 J jnl
IEEE Commun. Lett.
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2004 conf
MIPS
Rafael Estepa, Juan M. Vozmediano, Antonio Jose Estepa
2003 conf
HSNMC
Rafael Estepa, Antonio Jose Estepa, Rafael Rivero, Juan M. Vozmediano
2003 conf
MIPS
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2002 C conf
ISCC
Antonio Jose Estepa, Rafael Estepa, Juan M. Vozmediano
2001 conf
ICN (2)
Rafael Estepa, Juan Leal, Juan A. Ternero, Juan M. Vozmediano
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"