Jacques Hubert

24 papers B 2Journal 14Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Access
Francisco Javier López-Tiro, Vincent Estrade, Jacques Hubert, Daniel Flores-Araiza, Miguel González-Mendoza, Gilberto Ochoa-Ruiz, Christian Daul
2024 J jnl
Expert Syst. Appl.
Jorge Gonzalez-Zapata, Francisco Javier López-Tiro, Elias Villalvazo-Avila, Daniel Flores-Araiza, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul, Andres Mendez-Vazquez
2024 B conf
CBMS
Ruben Gonzalez-Perez, Francisco Javier López-Tiro, Iván Reyes-Amezcua, Luis Eduardo Falcón-Morales, Rosa-Maria Rodríguez-Guéant, Jacques Hubert, Michel Daudon, Gilberto Ochoa-Ruiz, Christian Daul
2024 J jnl
CoRR
Ruben Gonzalez-Perez, Francisco Javier López-Tiro, Iván Reyes-Amezcua, Eduardo Falcon-Morales, Rosa-Maria Rodríguez-Guéant, Jacques Hubert, Michel Daudon, Gilberto Ochoa-Ruiz, Christian Daul
2024 J jnl
IEEE Access
Francisco Javier López-Tiro, Vincent Estrade, Jacques Hubert, Daniel Flores-Araiza, Miguel González-Mendoza, Gilberto Ochoa, Christian Daul
2024 B conf
CBMS
Daniel Flores-Araiza, Armando Villegas-Jiménez, Francisco Javier López-Tiro, Miguel González-Mendoza, Rosa-Maria Rodríguez-Guéant, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul
2023 J jnl
CoRR
Jorge Gonzalez-Zapata, Francisco Javier López-Tiro, Elias Villalvazo-Avila, Daniel Flores-Araiza, Jacques Hubert, Andres Mendez-Vazquez, Gilberto Ochoa-Ruiz, Christian Daul
2023 conf
MICAI (2)
Francisco Javier López-Tiro, Daniel Flores-Araiza, Juan Pablo Betancur-Rengifo, Iván Reyes-Amezcua, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul
2023 conf
CVPR Workshops
Daniel Flores-Araiza, Francisco Javier López-Tiro, Jonathan El Beze, Jacques Hubert, Miguel González-Mendoza, Gilberto Ochoa-Ruiz, Christian Daul
2023 J jnl
CoRR
Daniel Flores-Araiza, Francisco Javier López-Tiro, Jonathan El Beze, Jacques Hubert, Miguel González-Mendoza, Gilberto Ochoa-Ruiz, Christian Daul
2023 conf
ISBI
Elias Villalvazo-Avila, Francisco Javier López-Tiro, Mariana Rizo, Jonathan El Beze, Jacques Hubert, Miguel González-Mendoza, Gilberto Ochoa-Ruiz, Christian Daul
2023 conf
ICCV (Workshops)
Francisco Javier López-Tiro, Elias Villalvazo-Avila, Juan Pablo Betancur-Rengifo, Iván Reyes-Amezcua, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul
2023 J jnl
CoRR
Francisco Javier López-Tiro, Elias Villalvazo-Avila, Juan Pablo Betancur-Rengifo, Jonathan El Beze, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul
2022 J jnl
CoRR
Francisco Javier López-Tiro, Juan Pablo Betancur-Rengifo, Arturo J. Ruiz-Sanchez, Iván Reyes-Amezcua, Jonathan El Beze, Jacques Hubert, Michel Daudon, Gilberto Ochoa-Ruiz, Christian Daul
2022 J jnl
CoRR
Elias Villalvazo-Avila, Francisco Javier López-Tiro, Daniel Flores-Araiza, Gilberto Ochoa-Ruiz, Jonathan El Beze, Jacques Hubert, Christian Daul
2022 J jnl
CoRR
Elias Villalvazo-Avila, Francisco Javier López-Tiro, Jonathan El Beze, Jacques Hubert, Miguel González-Mendoza, Gilberto Ochoa-Ruiz, Christian Daul
2022 J jnl
CoRR
Daniel Flores-Araiza, Francisco Javier López-Tiro, Elias Villalvazo-Avila, Jonathan El Beze, Jacques Hubert, Gilberto Ochoa-Ruiz, Christian Daul
2022 conf
MICAI (1)
Mauricio Mendez-Ruiz, Francisco Javier López-Tiro, Daniel Flores-Araiza, Jonathan El Beze, Gilberto Ochoa-Ruiz, Miguel González-Mendoza, Jacques Hubert, Andres Mendez-Vazquez, Christian Daul
2022 J jnl
CoRR
Mauricio Mendez-Ruiz, Francisco Javier López-Tiro, Jonathan El Beze, Vincent Estrade, Gilberto Ochoa-Ruiz, Jacques Hubert, Andres Mendez-Vazquez, Christian Daul
2022 J jnl
CoRR
Gilberto Ochoa-Ruiz, Vincent Estrade, Francisco Javier López-Tiro, Daniel Flores-Araiza, Jonathan El Beze, Dinh Hoan Trinh, Miguel González-Mendoza, Pascal Eschwege, Jacques Hubert, Christian Daul
2021 conf
EMBC
Francisco Javier López-Tiro, Andres Varelo, Oscar Hinojosa, Mauricio Mendez, Dinh Hoan Trinh, Jonathan El Beze, Jacques Hubert, Vincent Estrade, Miguel Gonzalez, Gilberto Ochoa, Christian Daul
2021 J jnl
CoRR
Francisco Javier López-Tiro, Andres Varela, Oscar Hinojosa, Mauricio Mendez, Dinh Hoan Trinh, Jonathan El Beze, Jacques Hubert, Vincent Estrade, Miguel Gonzalez, Gilberto Ochoa, Christian Daul
2020 conf
EMBC
Adriana Martínez, Dinh Hoan Trinh, Jonathan El Beze, Jacques Hubert, Pascal Eschwege, Vincent Estrade, Lina Maria Aguilar-Lobo, Christian Daul, Gilberto Ochoa
2010 conf
ISBI
Nedia Nouri, Denis Abraham, Jean-Marie Moureaux, Michel Dufaut, Jacques Hubert, Manuela Perez
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"