Ignacio Mas

26 papers A* 2A 1B 1C 1Journal 16Unranked 5
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Juan Ignacio Giribet, Alejandro Simon Ghersin, Ignacio Mas
2025 J jnl
CoRR
Agustín Roca, Gastón I. Castro, Gabriel Torre, Leonardo J. Colombo, Ignacio Mas, Javier Pereira, Juan Ignacio Giribet
2025 J jnl
CoRR
Agustín Roca, Gabriel Torre, Juan Ignacio Giribet, Gastón I. Castro, Leonardo Colombo, Ignacio Mas, Javier Pereira
2025 conf
ICAR
Claudio D. Pose, Reurison Silva, Alejandro Simon Ghersin, Ignacio Mas, Juan Ignacio Giribet
2025 J jnl
IEEE Control. Syst. Lett.
Juan Francisco Presenza, Ignacio Mas, J. Ignacio Alvarez-Hamelin, Juan Ignacio Giribet
2025 J jnl
CoRR
Francisco Presenza, Ignacio Mas, J. Ignacio Alvarez-Hamelin, Juan Ignacio Giribet
2022 J jnl
IEEE Robotics Autom. Lett.
Claudio D. Pose, Juan Ignacio Giribet, Ignacio Mas
2022 C conf
ACC
Juan Francisco Presenza, J. Ignacio Alvarez-Hamelin, Ignacio Mas, Juan Ignacio Giribet
2021 J jnl
IEEE Robotics Autom. Lett.
Patricio Moreno, Juan Francisco Presenza, Ignacio Mas, Juan Ignacio Giribet
2021 J jnl
J. Frankl. Inst.
J. Barreiro-Gomez, Ignacio Mas, Juan Ignacio Giribet, Patricio Moreno, Carlos Ocampo-Martinez, Ricardo Salvador Sánchez Peña, Nicanor Quijano
2021 J jnl
IEEE Robotics Autom. Lett.
Juan Ignacio Giribet, Leonardo J. Colombo, Patricio Moreno, Ignacio Mas, Dimos V. Dimarogonas
2021 J jnl
Neurocomputing
Joaquín Filipic, Martín Biagini, Ignacio Mas, Claudio D. Pose, Juan Ignacio Giribet, Daniel R. Parisi
2021 J jnl
CoRR
Juan Francisco Presenza, J. Ignacio Alvarez-Hamelin, Ignacio Mas, Juan Ignacio Giribet
2020 A* conf
ICRA
Claudio D. Pose, Juan Ignacio Giribet, Ignacio Mas
2020 J jnl
Unmanned Syst.
Patricio Moreno, Santiago Esteva, Ignacio Mas, Juan Ignacio Giribet
2020 J jnl
Unmanned Syst.
Claudio D. Pose, Francisco Presenza, Ignacio Mas, Juan Ignacio Giribet
2019 conf
SysTol
Juan Ignacio Giribet, Claudio D. Pose, Ignacio Mas
2017 J jnl
J. Intell. Robotic Syst.
Ignacio Mas, Christopher Kitts
2016 conf
CDC
Julian Barreiro-Gomez, Ignacio Mas, Carlos Ocampo-Martinez, Ricardo Salvador Sánchez Peña, Nicanor Quijano
2014 J jnl
IEEE Access
Ignacio Mas, Christopher Kitts
2014 conf
ICC
James Kempf, Martin Körling, Stephan Baucke, Samy Touati, Victa McClelland, Ignacio Mas, Olof Backman
2009 A conf
IROS
Ignacio Mas, Steven Li, Jose Acain, Christopher Kitts
2008 B conf
WCNC
Gonzalo Camarillo, Ignacio Mas, Pekka Nikander
2008 A* conf
ICRA
Ignacio Mas, Ognjen Petrovic, Christopher Kitts
2008 conf
ROBIO
Ignacio Mas, Jose Acain, Ognjen Petrovic, Christopher Kitts
2008 J jnl
IEEE Commun. Mag.
Ignacio Mas, Viktor Berggren, Rittwik Jana, John Murray, Christopher W. Rice
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"