Vincent Jugnon

16 papers Journal 13Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Gauthier Miralles, Loïc Le Folgoc, Vincent Jugnon, Pietro Gori
2025 J jnl
CoRR
Gonzalo Iñaki Quintana, Laurence Vancamberg, Vincent Jugnon, Agnès Desolneux, Mathilde Mougeot
2024 J jnl
CoRR
Gonzalo Iñaki Quintana, Laurence Vancamberg, Vincent Jugnon, Mathilde Mougeot, Agnès Desolneux
2024 conf
ISBI
Gonzalo Iñaki Quintana, Vincent Jugnon, Laurence Vancamberg, Agnès Desolneux, Mathilde Mougeot
2022 J jnl
CoRR
Pierre-Louis Antonsanti, Thomas Benseghir, Vincent Jugnon, Mario Ghosn, Perrine Chassat, Irène Kaltenmark, Joan Glaunès
2021 conf
IPMI
Pierre-Louis Antonsanti, Joan Glaunès, Thomas Benseghir, Vincent Jugnon, Irène Kaltenmark
2021 J jnl
CoRR
Pierre-Louis Antonsanti, Joan Glaunès, Thomas Benseghir, Vincent Jugnon, Irène Kaltenmark
2020 conf
MICCAI (3)
Pierre-Louis Antonsanti, Thomas Benseghir, Vincent Jugnon, Joan Glaunès
2020 J jnl
CoRR
Pierre-Louis Antonsanti, Thomas Benseghir, Vincent Jugnon, Joan Glaunès
2017 J jnl
IEEE Trans. Computational Imaging
Laurent Demanet, Vincent Jugnon
2013 J jnl
CoRR
Laurent Demanet, Vincent Jugnon
2012 J jnl
SIAM J. Numer. Anal.
Habib Ammari, Elie Bretin, Josselin Garnier, Vincent Jugnon
2012 J jnl
SIAM J. Control. Optim.
Habib Ammari, Josselin Garnier, Vincent Jugnon, Hyeonbae Kang
2011 J jnl
SIAM J. Appl. Math.
Habib Ammari, Emmanuel Bossy, Vincent Jugnon, Hyeonbae Kang
2011 J jnl
SIAM J. Imaging Sci.
Habib Ammari, Mark Asch, Lili Guadarrama Bustos, Vincent Jugnon, Hyeonbae Kang
2010 J jnl
SIAM Rev.
Habib Ammari, Emmanuel Bossy, Vincent Jugnon, Hyeonbae Kang
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"