Ofelia Cervantes

25 papers B 1Journal 9Unranked 14
YearRankTypeTitle / Venue / Authors
2020 J jnl
ISPRS Int. J. Geo Inf.
Zeinab Ebrahimpour, Wanggen Wan, José Luis Velázquez García, Ofelia Cervantes, Li Hou
2019 J jnl
J. Intell. Fuzzy Syst.
Esteban Castillo, Ofelia Cervantes, Darnes Vilariño
2019 J jnl
ISPRS Int. J. Geo Inf.
Zeinab Ebrahimpour, Wanggen Wan, Ofelia Cervantes, Tianhang Luo, Hidayat Ullah
2018 J jnl
Int. J. Hum. Comput. Stud.
Yazmín Magallanes, J. Alfredo Sánchez, Ofelia Cervantes, Wanggen Wan
2018 J jnl
J. Intell. Fuzzy Syst.
Esteban Castillo, Ofelia Cervantes, Darnes Vilariño
2018 ch.
Encyclopedia of Social Network Analysis and Mining. 2nd Ed.
Christophe Thovex, Bénédicte Le Grand, Ofelia Cervantes, J. Alfredo Sánchez, Francky Trichet
2018 J jnl
ISPRS Int. J. Geo Inf.
Muhammad Rizwan, Wanggen Wan, Ofelia Cervantes, Luc Gwiazdzinski
2017 conf
CONIELECOMP
María Auxilio Medina Nieto, J. Alfredo Sánchez, Ofelia Cervantes, Antonio Benítez, Jorge de la Calleja
2017 conf
CLIHC
Omar Valdiviezo, J. Alfredo Sánchez, Ofelia Cervantes
2016 conf
SemEval@NAACL-HLT
Esteban Castillo, Ofelia Cervantes, Darnes Vilariño, David Báez
2015 conf
S4SC@ISWC
Ofelia Cervantes, Francisco Gutiérrez, Ernesto Gutiérrez, J. Alfredo Sánchez, Muhammad Rizwan, Wanggen Wan
2015 conf
CLIHC
J. Alfredo Sánchez, Lizbeth Peralta-Malváez, Ofelia Cervantes, Wanggen Wan
2015 J jnl
J. Ambient Intell. Smart Environ.
J. Alfredo Sánchez, Ximena Cortés, Oleg Starostenko, Ofelia Cervantes, Wanggen Wan
2015 conf
CONIELECOMP
Esteban Castillo, Darnes Vilariño Ayala, Ofelia Cervantes, David Pinto
2015 conf
CLIHC
Ofelia Cervantes, Francisco Gutiérrez, Ernesto Gutiérrez, Esteban Castillo, J. Alfredo Sánchez, Wanggen Wan
2015 conf
MCPR
Ernesto Gutiérrez, Ofelia Cervantes, J. M. David Báez-López, J. Alfredo Sánchez
2015 conf
SemEval@NAACL-HLT
Esteban Castillo, Ofelia Cervantes, Darnes Vilariño, David Báez, J. Alfredo Sánchez
2015 J jnl
Res. Comput. Sci.
Lizbeth Peralta-Malváez, J. Alfredo Sánchez, Ofelia Cervantes
2014 B conf
Intelligent Environments (Workshops)
J. Alfredo Sánchez, Oleg Starostenko, Paula Medina, Ofelia Cervantes, Wanggen Wan
2014 conf
CLEF (Working Notes)
Esteban Castillo, Ofelia Cervantes, Darnes Vilariño Ayala, David Pinto, Saúl León
2011 conf
IHC+CLIHC (Companion)
Salvador Fuentes, J. Alfredo Sánchez, Osvaldo Huerta, Ofelia Cervantes
2011 conf
IHC+CLIHC
Osvaldo Huerta, J. Alfredo Sánchez, Salvador Fuentes, Ofelia Cervantes
2011 conf
JCDL
J. Alfredo Sánchez, Ofelia Cervantes, Alfredo Ramos, María Auxilio Medina Nieto, Juan Carlos Lavariega, Eric Balam
2008 J jnl
Intell. Data Anal.
Michel Charest, Sylvain Delisle, Ofelia Cervantes, Yanfen Shen
2006 conf
DEXA Workshops
Michel Charest, Sylvain Delisle, Ofelia Cervantes, Yanfen Shen
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"