Rafael Murrieta-Cid

99 papers A* 14A 12C 5Journal 57Unranked 11
YearRankTypeTitle / Venue / Authors
2026 J jnl
Adv. Robotics
Emmanuel Antonio, Israel Becerra, Rafael Murrieta-Cid
2025 J jnl
Intell. Serv. Robotics
Luis E. Ruiz-Fernandez, Javier Ruiz-León, David Gómez-Gutiérrez, Rafael Murrieta-Cid
2025 conf
MCPR
Jorge Gutiérrez, Luis Enrique Sucar, Rafael Murrieta-Cid, Israel Becerra, Gabriel Omar Flores-Aquino
2025 J jnl
Inteligencia Artif.
Gabriel Aguilar, Israel Becerra, Rafael Murrieta-Cid
2024 J jnl
J. Intell. Transp. Syst.
Rafael Peralta, Israel Becerra, Ubaldo Ruiz, Rafael Murrieta-Cid
2024 J jnl
IEEE Trans. Robotics
Emmanuel Antonio Cuevas, Israel Becerra, Rafael Murrieta-Cid
2024 J jnl
J. Frankl. Inst.
Edgar A. Martínez, Rafael Murrieta-Cid, Héctor M. Becerra, Israel Becerra
2024 J jnl
Inteligencia Artif.
José Eleazar Peralta-López, Emmanuel Antonio Cuevas, Israel Becerra, Alejandro Israel Barranco-Gutiérrez, Rafael Murrieta-Cid
2024 J jnl
IFAC J. Syst. Control.
Eliezer Lozano, Israel Becerra, Ubaldo Ruiz, Rafael Murrieta-Cid
2023 J jnl
IEEE Robotics Autom. Lett.
Gonzalo Palomares, Israel Becerra, Rafael Murrieta-Cid
2023 J jnl
CoRR
Katherine J. Mimnaugh, Evan G. Center, Markku Suomalainen, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Timo Ojala, Steven M. LaValle, Kara D. Federmeier
2023 J jnl
IEEE Trans. Vis. Comput. Graph.
Katherine J. Mimnaugh, Evan G. Center, Markku Suomalainen, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Timo Ojala, Steven M. LaValle, Kara D. Federmeier
2023 J jnl
Robotics Auton. Syst.
Ramses Reyes, Israel Becerra, Rafael Murrieta-Cid, Seth Hutchinson
2022 J jnl
Auton. Robots
Eliezer Lozano, Israel Becerra, Ubaldo Ruiz, Luis Bravo, Rafael Murrieta-Cid
2022 J jnl
J. Intell. Robotic Syst.
Heikel Yervilla-Herrera, Israel Becerra, Rafael Murrieta-Cid, Luis Enrique Sucar, Eduardo F. Morales
2022 J jnl
IEEE Robotics Autom. Lett.
Richard Arteaga, Emmanuel Antonio Cuevas, Israel Becerra, Rafael Murrieta-Cid
2022 J jnl
IEEE Trans. Robotics
Israel Becerra, Heikel Yervilla-Herrera, Emmanuel Antonio Cuevas, Rafael Murrieta-Cid
2022 J jnl
J. Frankl. Inst.
David Cardona, Israel Becerra, Rafael Murrieta-Cid
2022 J jnl
IEEE Robotics Autom. Lett.
Eliezer Lozano, Ubaldo Ruiz, Israel Becerra, Rafael Murrieta-Cid
2021 J jnl
Intell. Serv. Robotics
Eduardo F. Morales, Rafael Murrieta-Cid, Israel Becerra, Marco A. Esquivel-Basaldua
2021 A conf
IROS
Katherine J. Mimnaugh, Markku Suomalainen, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Steven M. LaValle
2021 J jnl
CoRR
Katherine J. Mimnaugh, Markku Suomalainen, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Steven M. LaValle
2021 conf
EuroXR
Markku Suomalainen, Katherine J. Mimnaugh, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Steven M. LaValle
2021 J jnl
CoRR
Markku Suomalainen, Katherine J. Mimnaugh, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Steven M. LaValle
2021 J jnl
CoRR
Katherine J. Mimnaugh, Markku Suomalainen, Israel Becerra, Eliezer Lozano, Rafael Murrieta-Cid, Steven M. LaValle
2021 J jnl
CoRR
Juan Irving Vasquez-Gomez, David Ernesto Troncoso Romero, Israel Becerra, Luis Enrique Sucar, Rafael Murrieta-Cid
2021 J jnl
Mach. Vis. Appl.
Juan Irving Vasquez-Gomez, David Ernesto Troncoso Romero, Israel Becerra, Luis Enrique Sucar, Rafael Murrieta-Cid
2021 J jnl
IEEE Robotics Autom. Lett.
Javier Antonio Gonzalez-Trejo, Diego Alberto Mercado-Ravell, Israel Becerra, Rafael Murrieta-Cid
2021 J jnl
CoRR
Javier Antonio Gonzalez-Trejo, Diego Alberto Mercado-Ravell, Israel Becerra, Rafael Murrieta-Cid
2021 J jnl
J. Frankl. Inst.
Vladimir Macias, Israel Becerra, Edgar A. Martínez, Rafael Murrieta-Cid, Héctor M. Becerra
2020 J jnl
J. Frankl. Inst.
Luis Bravo, Ubaldo Ruiz, Rafael Murrieta-Cid
2020 J jnl
Int. J. Control
Ramses Reyes, Rafael Murrieta-Cid
2020 J jnl
CoRR
Israel Becerra, Markku Suomalainen, Eliezer Lozano, Katherine J. Mimnaugh, Rafael Murrieta-Cid, Steven M. LaValle
2020 J jnl
IEEE Robotics Autom. Lett.
Israel Becerra, Markku Suomalainen, Eliezer Lozano, Katherine J. Mimnaugh, Rafael Murrieta-Cid, Steven M. LaValle
2019 J jnl
J. Intell. Robotic Syst.
Gabriel Aguilar, Luis Bravo, Ubaldo Ruiz, Rafael Murrieta-Cid, Edgar Chávez
2019 J jnl
Auton. Robots
Edgar A. Martínez, Guillermo Laguna, Rafael Murrieta-Cid, Héctor M. Becerra, Rigoberto Lopez-Padilla, Steven M. LaValle
2019 J jnl
Computación y Sistemas
Rigoberto Lopez-Padilla, Rafael Murrieta-Cid
2019 J jnl
Intell. Serv. Robotics
Heikel Yervilla-Herrera, Juan Irving Vasquez-Gomez, Rafael Murrieta-Cid, Israel Becerra, Luis Enrique Sucar
2018 J jnl
J. Intell. Robotic Syst.
Hugo Carlos, Jean-Bernard Hayet, Rafael Murrieta-Cid
2018 C conf
WAFR
Israel Becerra, Heikel Yervilla-Herrera, Rafael Murrieta-Cid
2018 J jnl
Autom.
Vladimir Macias, Israel Becerra, Rafael Murrieta-Cid, Héctor M. Becerra, Seth Hutchinson
2018 J jnl
J. Intell. Robotic Syst.
Rigoberto Lopez-Padilla, Rafael Murrieta-Cid, Israel Becerra, Guillermo Laguna, Steven M. LaValle
2018 A* conf
ICRA
Hugo Carlos, Jean-Bernard Hayet, Rafael Murrieta-Cid
2017 A conf
IROS
Luis Bravo, Ubaldo Ruiz, Rafael Murrieta-Cid, Gabriel Aguilar, Edgar Chávez
2017 J jnl
Auton. Robots
Juan Irving Vasquez-Gomez, Luis Enrique Sucar, Rafael Murrieta-Cid
2016 J jnl
Int. J. Control
Ubaldo Ruiz, Rafael Murrieta-Cid
2016 J jnl
Auton. Robots
Israel Becerra, Rafael Murrieta-Cid, Raúl Monroy, Seth Hutchinson, Jean-Paul Laumond
2016 J jnl
Int. J. Robotics Res.
Israel Becerra, Luis M. Valentín-Coronado, Rafael Murrieta-Cid, Jean-Claude Latombe
2016 C conf
RoboCup
Ramon Izquierdo-Cordova, Eduardo F. Morales, Luis Enrique Sucar, Rafael Murrieta-Cid
2015 J jnl
Int. J. Control
David Jacobo, Ubaldo Ruiz, Rafael Murrieta-Cid, Héctor M. Becerra, José L. Marroquín
2015 A* conf
ICRA
Israel Becerra, Vladimir Macias, Rafael Murrieta-Cid
2015 J jnl
Computación y Sistemas
Judith León Espinoza, Rafael Murrieta-Cid
2014 A* conf
ICRA
Israel Becerra, Luis M. Valentín-Coronado, Rafael Murrieta-Cid, Jean-Claude Latombe
2014 A* conf
ICRA
Guillermo Laguna, Rafael Murrieta-Cid, Héctor M. Becerra, Rigoberto Lopez-Padilla, Steven M. LaValle
2014 J jnl
Robotics Auton. Syst.
Jean-Bernard Hayet, Hugo Carlos, Claudia Esteves, Rafael Murrieta-Cid
2014 J jnl
Adv. Robotics
Luis Valentin, Rafael Murrieta-Cid, Lourdes Muñoz-Gómez, Rigoberto Lopez-Padilla, Moises Alencastre-Miranda
2014 J jnl
Int. J. Appl. Math. Comput. Sci.
Ubaldo Ruiz, José L. Marroquín, Rafael Murrieta-Cid
2014 A conf
IROS
Juan Irving Vasquez-Gomez, Luis Enrique Sucar, Rafael Murrieta-Cid
2013 conf
CRV
Juan Irving Vasquez-Gomez, Luis Enrique Sucar, Rafael Murrieta-Cid
2013 J jnl
IEEE Trans. Robotics
Ubaldo Ruiz, Rafael Murrieta-Cid, José L. Marroquín
2012 A* conf
ICRA
Ubaldo Ruiz, Rafael Murrieta-Cid
2012 C conf
WAFR
Rigoberto Lopez-Padilla, Rafael Murrieta-Cid, Steven M. LaValle
2011 A* conf
ICRA
Lourdes Muñoz-Gómez, Moises Alencastre-Miranda, Rigoberto Lopez-Padilla, Rafael Murrieta-Cid
2011 J jnl
Adv. Robotics
Judith León Espinoza, Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2011 A conf
IROS
Judith León Espinoza, Rafael Murrieta-Cid
2011 J jnl
Auton. Robots
Rafael Murrieta-Cid, Ubaldo Ruiz, José L. Marroquín, Jean-Paul Laumond, Seth Hutchinson
2010 conf
IBERAMIA
Judith León Espinoza, Rafael Murrieta-Cid
2010 A* conf
ICRA
Israel Becerra, Rafael Murrieta-Cid, Raúl Monroy
2009 J jnl
Adv. Robotics
Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2008 A* conf
ICRA
Rafael Murrieta-Cid, Raúl Monroy, Seth Hutchinson, Jean-Paul Laumond
2008 C conf
WAFR
Jean-Bernard Hayet, Claudia Esteves, Rafael Murrieta-Cid
2008 conf
MICAI
Alejandro Sarmiento, Judith León Espinoza, Rafael Murrieta-Cid, Seth Hutchinson
2007 J jnl
IEEE Trans. Robotics
Benjamín Tovar, Rafael Murrieta-Cid, Steven M. LaValle
2007 J jnl
IEEE Trans. Robotics
Sourabh Bhattacharya, Rafael Murrieta-Cid, Seth Hutchinson
2007 conf
MICAI
Rafael Murrieta-Cid, Jean-Bernard Hayet
2007 J jnl
Int. J. Robotics Res.
Rafael Murrieta-Cid, Teja Muppirala, Alejandro Sarmiento, Sourabh Bhattacharya, Seth Hutchinson
2006 conf
MICAI
Rafael Murrieta-Cid, Raúl Monroy
2006 J jnl
Robotics Auton. Syst.
Benjamín Tovar, Lourdes Muñoz-Gómez, Rafael Murrieta-Cid, Moises Alencastre-Miranda, Raúl Monroy, Seth Hutchinson
2005 conf
MICAI
Rafael Murrieta-Cid, Alejandro Sarmiento, Teja Muppirala, Seth Hutchinson, Raúl Monroy, Moises Alencastre-Miranda, Lourdes Muñoz-Gómez, Ricardo Swain Oropeza
2005 A* conf
ICRA
Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2005 J jnl
Auton. Robots
Rafael Murrieta-Cid, Benjamín Tovar, Seth Hutchinson
2005 A conf
IROS
Rafael Murrieta-Cid, Lourdes Muñoz-Gómez, Moises Alencastre-Miranda, Alejandro Sarmiento, Stephen Kloder, Seth Hutchinson, Florent Lamiraux, Jean-Paul Laumond
2005 A* conf
ICRA
Teja Muppirala, Rafael Murrieta-Cid, Seth Hutchinson
2004 conf
IBERAMIA
Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2004 A* conf
ICRA
Rafael Murrieta-Cid, Alejandro Sarmiento, Sourabh Bhattacharya, Seth Hutchinson
2004 A conf
IROS
Sourabh Bhattacharya, Rafael Murrieta-Cid, Seth Hutchinson
2004 A conf
IROS
Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2003 A conf
IROS
Alejandro Sarmiento, Rafael Murrieta-Cid, Seth Hutchinson
2003 A conf
IROS
Benjamín Tovar, Steven M. LaValle, Rafael Murrieta-Cid
2003 A conf
IROS
Rafael Murrieta-Cid, Alejandro Sarmiento, Seth Hutchinson
2003 A* conf
ICRA
Benjamín Tovar, Steven M. LaValle, Rafael Murrieta-Cid
2002 A* conf
ICRA
Rafael Murrieta-Cid, Héctor H. González-Baños, Benjamín Tovar
2002 conf
MICAI
Rafael Murrieta-Cid, Carlos Parra, Michel Devy, Benjamín Tovar, Claudia Esteves
2002 A* conf
ICRA
Rafael Murrieta-Cid, Carlos Parra, Michel Devy, Benjamín Tovar, Claudia Esteves
2002 A conf
IROS
Benjamín Tovar, Rafael Murrieta-Cid, Claudia Esteves
2002 J jnl
Auton. Robots
Rafael Murrieta-Cid, Carlos Parra, Michel Devy
1999 C conf
ICVS
Carlos Parra, Rafael Murrieta-Cid, Michel Devy, Maurice Briot
1999 conf
ISER
Nicolas Vandapel, Stewart J. Moorehead, William Whittaker, Raja Chatila, Rafael Murrieta-Cid
1998 A conf
IROS
Rafael Murrieta-Cid, Maurice Briot, Nicolas Vandapel
redb/extractors/js_extractor.py
← Index redb/extractors/js_extractor.py python
import logging
import re
from abc import ABCMeta, abstractmethod

from redb.extractors.extractor import Extractor
from redb.extractors.js_extractors.js_context import JSContext, _text_entropy

logger = logging.getLogger(__name__)

# ESM is recognised by line-anchored `import ... from "..."` / bare side-effect
# `import "..."` / top-level `export ...`. Anchored at line start to avoid
# matching the substring inside string literals or comments.
_ESM_PATTERN = re.compile(
    r'(?m)^\s*(?:'
    r'import\s+[^;\n]*?\bfrom\s+[\'"]'
    r'|import\s+[\'"][^\'"]+[\'"]'
    r'|export\s+(?:default\b|\{|\*|const\b|let\b|var\b|function\b|class\b|async\b)'
    r')'
)


@abstractmethod
class JSExtractor(Extractor, metaclass=ABCMeta):
    """Base class for JavaScript file extractors.

    Every JSExtractor reads its raw materials (bytes / decoded source / line
    list / scan_source results / pyjsparser AST / text entropy) from a shared
    `JSContext`. When workers.py drives the JS pipeline it builds one context
    per sample and threads it into every extractor via `context=`. When tests
    or other callers instantiate an extractor directly, the constructor builds
    a fresh context from `(filepath, source=...)`.

    All historical instance attributes (`self.binary`, `self.js_source`,
    `self.lines`) and helpers (`self._decode_source`, `self._parse_ast`,
    `self._calculate_text_entropy`) are preserved as thin delegators so
    existing extractor code keeps working unchanged.
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        known_benign=False,
        known_malicious=False,
        source=None,
        context=None,
    ):
        if context is None:
            context = JSContext.from_path(filepath, log=log, source=source)
        elif source is not None and context.source != source:
            log.warning(
                "JSExtractor received both `source=` and `context=` with "
                "differing source; ignoring source kwarg"
            )
        self._context = context

        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            known_benign=known_benign,
            known_malicious=known_malicious,
        )

    @property
    def binary(self):
        return self._context.raw_bytes

    @property
    def js_source(self):
        return self._context.source

    @property
    def lines(self):
        return self._context.lines

    def _decode_source(self):
        """Back-compat shim — the context already decoded once at construction.

        Kept so any external caller using the historical method name keeps
        working without touching the underlying bytes again.
        """
        return self._context.source

    def _parse_ast(self):
        """Return the shared pyjsparser AST (or None if unavailable)."""
        return self._context.ast

    def _calculate_text_entropy(self, text):
        """Shannon text entropy for `text`.

        When `text` is the context's own source we read the cached value;
        otherwise we compute fresh. JSStringsExtractor calls this on arbitrary
        decoded substrings, so the fresh-compute path must remain available.
        """
        if text is self._context.source:
            return self._context.text_entropy
        return _text_entropy(text)

    def _detect_environment(self):
        """Detect the target JS runtime environment."""
        src = self.js_source
        if not src:
            return "unknown"

        # WScript/WSH indicators
        wscript_patterns = [
            'WScript.', 'WSH.', 'ActiveXObject', 'Scripting.FileSystemObject',
            'WScript.Shell', 'ADODB.Stream',
        ]
        for p in wscript_patterns:
            if p in src:
                return "wscript"

        # Browser-extension APIs — checked before generic browser/worker because
        # `chrome.*` and `browser.runtime` are distinctive of MV2/MV3 extensions
        extension_patterns = [
            'chrome.runtime', 'chrome.tabs', 'chrome.storage',
            'chrome.webRequest', 'browser.runtime', 'browser.tabs',
        ]
        for p in extension_patterns:
            if p in src:
                return "browser_extension"

        # Service / Web Workers — worker-only APIs that don't appear in regular
        # browser pages (a generic browser script would use `window.` or
        # `document.`, never `self.importScripts` or `caches.match`)
        worker_patterns = [
            "self.addEventListener('fetch'", 'self.addEventListener("fetch"',
            'self.importScripts', 'self.skipWaiting',
            'caches.match', 'caches.open',
        ]
        for p in worker_patterns:
            if p in src:
                return "service_worker"

        # Deno runtime
        if 'Deno.' in src:
            return "deno"

        # Node.js indicators
        node_patterns = [
            'require(', 'module.exports', 'process.env', '__dirname',
            '__filename', 'Buffer.', 'child_process',
        ]
        for p in node_patterns:
            if p in src:
                return "node"

        # Browser indicators
        browser_patterns = [
            'document.', 'window.', 'navigator.', 'localStorage',
            'sessionStorage', 'XMLHttpRequest', 'addEventListener',
        ]
        for p in browser_patterns:
            if p in src:
                return "browser"

        return "unknown"

    def _detect_script_type(self):
        """Detect the script type/format."""
        src = self.js_source
        if not src:
            return "unknown"

        stripped = src.lstrip()

        # JScript.Encode payload — must be checked first since the encoded
        # body can't be classified any other way
        if stripped.startswith('#@~^'):
            return "jse"

        # WSF / HTA live in the first few KB of an HTML-ish wrapper
        head_lower = stripped[:4096].lower()

        # Windows Script File — XML wrapper around one or more <script> blocks
        if ('<job' in head_lower or '<package' in head_lower) and '<script' in head_lower:
            return "wsf"

        # HTML Application — distinct from generic embedded_html because HTAs
        # run under mshta.exe with full WSH/ActiveX access
        if '<hta:application' in head_lower or 'application/hta' in head_lower:
            return "hta"

        if stripped.startswith('<!') or stripped.startswith('<html') or '<script' in stripped[:2000]:
            return "embedded_html"

        if 'WScript.' in src or 'WSH.' in src:
            return "wscript"

        if _ESM_PATTERN.search(src):
            return "esm"

        if 'require(' in src or 'module.exports' in src:
            return "node_module"

        return "standalone"