Jack Fernando Bravo-Torres

31 papers B 2C 1Journal 9Unranked 18
YearRankTypeTitle / Venue / Authors
2022 conf
CSEDU (2)
Jack Fernando Bravo-Torres, María Dolores Fernández Pérez, Cinthya María Cevallos-Ludeña, Wilson Daniel Bravo-Torres, Esteban Fernando Ordóñez-Morales
2020 J jnl
IEEE Access
Luis F. Guerrero-Vasquez, Vladimir Espartaco Robles-Bykbaev, Martín López Nores, Jack Fernando Bravo-Torres, Henry J. Jara-Quito, Manuel A. Tapia-Vintimilla, José Juan Pazos-Arias, Alberto Gil-Solla
2019 J jnl
Comput. Appl. Eng. Educ.
Martín López Nores, Yolanda Blanco-Fernández, Jack Fernando Bravo-Torres, José Juan Pazos-Arias, Alberto Gil-Solla, Manuel Ramos Cabrer
2019 ch.
Influence and Behavior Analysis in Social Networks and Social Media
Paúl Esteban Vintimilla-Tapia, Jack Fernando Bravo-Torres, Pablo Leonidas Gallegos-Segovia, Esteban Fernando Ordóñez-Morales, Martín López Nores, Yolanda Blanco-Fernández
2018 J jnl
Ann. des Télécommunications
Jose Victor Saians-Vazquez, Martín López Nores, Yolanda Blanco-Fernández, Esteban Fernando Ordóñez-Morales, Jack Fernando Bravo-Torres, José Juan Pazos-Arias
2018 conf
CONIELECOMP
Jack Fernando Bravo-Torres, Paúl E. Vintimilla-Tapia, Pablo L. Gallegos-Segovia, Wilson Daniel Bravo-Torres, Jaime L. Astudillo-Ortiz, Cinthya María Cevallos-Ludeña
2018 J jnl
Sensors
Jose Victor Saians-Vazquez, Esteban Fernando Ordóñez-Morales, Martín López Nores, Yolanda Blanco-Fernández, Jack Fernando Bravo-Torres, José Juan Pazos-Arias, Alberto Gil-Solla, Manuel Ramos Cabrer
2018 conf
IOV
Esteban Fernando Ordóñez-Morales, Martín López Nores, Yolanda Blanco-Fernández, Efrén P. Reinoso-Mendoza, Jack Fernando Bravo-Torres, José Juan Pazos-Arias
2017 conf
CONIELECOMP
Andres Leonardo Ortega-Ortega, Jack Fernando Bravo-Torres
2017 B conf
ASONAM
Paúl E. Vintimilla-Tapia, Jack Fernando Bravo-Torres, Pablo L. Gallegos-Segovia, Esteban Fernando Ordóñez-Morales, Martín López Nores, Yolanda Blanco-Fernández
2016 conf
FiCloud
Esteban Fernando Ordóñez-Morales, Jack Fernando Bravo-Torres, Yolanda Blanco-Fernández, Martín López Nores, Jose Victor Saians-Vazquez, José Juan Pazos-Arias
2016 conf
LATINCOM
Esteban Fernando Ordóñez-Morales, Victor Saians-Vazquez, Jack Fernando Bravo-Torres, Yolanda Blanco-Fernández, Martín López Nores
2016 conf
CSEDU (1)
Jack Fernando Bravo-Torres, Vladimir Espartaco Robles-Bykbaev, Martín López Nores, Esteban Fernando Ordóñez-Morales, Yolanda Blanco-Fernández, Alberto Gil-Solla
2016 J jnl
IEEE Trans. Veh. Technol.
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Manuel Ramos Cabrer, Alberto Gil-Solla
2016 J jnl
Inf. Technol. Control.
Jack Fernando Bravo-Torres, Yolanda Blanco-Fernández, Martín López Nores, José Juan Pazos-Arias, Manuel Ramos Cabrer, Alberto Gil-Solla
2015 conf
VTC Spring
Jack Fernando Bravo-Torres, Martín López Nores, Jose Victor Saians-Vazquez, Yolanda Blanco-Fernández, José Juan Pazos-Arias
2015 J jnl
J. Netw. Comput. Appl.
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Manuel Ramos Cabrer, Alberto Gil-Solla
2015 B conf
IWCMC
Jack Fernando Bravo-Torres, Jose Victor Saians-Vazquez, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias
2015 conf
RNDM@WMNC
Jose Victor Saians-Vazquez, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Jack Fernando Bravo-Torres
2015 conf
EUROCON
Esteban Fernando Ordóñez-Morales, Jack Fernando Bravo-Torres, Jose Victor Saians-Vazquez, Yolanda Blanco-Fernández, Martín López Nores, José Juan Pazos-Arias
2015 conf
WorldCIST (1)
Esteban Fernando Ordóñez-Morales, Yolanda Blanco-Fernández, Martín López Nores, Jack Fernando Bravo-Torres, José Juan Pazos-Arias, Manuel Ramos Cabrer
2015 J jnl
J. Comput. Sci.
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Esteban Fernando Ordóñez-Morales
2014 conf
ICIST
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias
2014 conf
ICCVE
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Alberto Gil-Solla, Manuel Ramos Cabrer
2014 conf
ICC
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias, Esteban Fernando Ordóñez-Morales
2014 conf
FGCT
Jack Fernando Bravo-Torres, Esteban Fernando Ordóñez-Morales, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias
2013 conf
FGCT
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias
2012 C conf
ICCE
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, Sandra Servia Rodríguez, Jorge García Duque
2012 J jnl
IEEE Pervasive Comput.
Igor Pernek, Mostafa Abdulla Uddin, Jack Fernando Bravo-Torres
2012 conf
COMM
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández
2012 conf
VTC Fall
Jack Fernando Bravo-Torres, Martín López Nores, Yolanda Blanco-Fernández, José Juan Pazos-Arias
redb/extractor_registry.py
← Index redb/extractor_registry.py python
"""
Extractor registry with lazy loading by file type.

Groups extractors by file type (pe, elf, macho, apk) and only imports
the relevant group when that file type is first encountered. This avoids
loading heavy dependencies (pefile, lief, androguard, etc.) into workers
that don't need them.
"""
import importlib
import logging

logger = logging.getLogger(__name__)

# Registry: group name -> list of (module_path, class_names)
_REGISTRY = {
    "pe": [
        ("redb.extractors.pe_extractors", [
            "PEFeaturesExtractor",
            "PEImportExtractor",
            "PEResourceExtractor",
            "PEOverlayExtractor",
            "PESectionExtractor",
            "PESignatureExtractor",
            "PEExtraFindings",
            "PEInconstistencyTestsExtractor",
            "PEDotNetExtractor",
        ]),
    ],
    "elf": [
        ("redb.extractors.elf_extractors", [
            "ELFFeaturesExtractor",
            "ELFSegmentExtractor",
            "ELFSectionExtractor",
            "ELFDependencyExtractor",
            "ELFSymbolExtractor",
            "ELFImportExtractor",
            "ELFExportExtractor",
            "ELFRelocationExtractor",
            "ELFNotesExtractor",
        ]),
    ],
    "macho": [
        ("redb.extractors.macho_extractors", [
            "MachOFeaturesExtractor",
            "MachOSegmentExtractor",
            "MachOImportExtractor",
            "MachOExportExtractor",
            "MachODylibExtractor",
            "MachOSignatureExtractor",
        ]),
    ],
    "apk": [
        ("redb.extractors.apk_extractors", [
            "APKFeaturesExtractor",
            "APKManifestExtractor",
            "APKPermissionsExtractor",
            "APKSignatureExtractor",
            "APKDexExtractor",
            "APKResourceExtractor",
            "APKNativeLibExtractor",
            "APKInconsistencyTestsExtractor",
        ]),
        ("redb.extractors.decompiler.DecompileAPK", [
            "DecompileAPK",
        ]),
    ],
    "js": [
        ("redb.extractors.js_extractors", [
            "JSFeaturesExtractor",
            "JSSuspiciousAPIsExtractor",
            "JSStringsExtractor",
            "JSDeobfuscationExtractor",
            "JSContentExtractor",
        ]),
    ],
}

# Map filetype labels (from Magika) to registry group names
FILETYPE_TO_GROUP = {
    "pebin": "pe",
    "elf": "elf",
    "macho": "macho",
    "apk": "apk",
    "javascript": "js",
}

# Cache: group name -> {class_name: class}
_group_cache = {}


def _load_group(group_name):
    """Import all extractors for a group. Cached after first call."""
    if group_name in _group_cache:
        return _group_cache[group_name]

    logger.debug(f"Loading extractor group: {group_name}")

    # Suppress androguard logging before importing APK extractors
    if group_name == "apk":
        from loguru import logger as loguru_logger
        loguru_logger.disable("androguard")

    classes = {}
    for module_path, class_names in _REGISTRY[group_name]:
        mod = importlib.import_module(module_path)
        for name in class_names:
            classes[name] = getattr(mod, name)

    _group_cache[group_name] = classes
    return classes


def get_filetype_modules(filetype):
    """Get the list of format-specific extractor classes for a filetype.

    Returns only analysis extractors (excludes decompilers like DecompileAPK).
    """
    group = FILETYPE_TO_GROUP.get(filetype)
    if not group:
        return []
    classes = _load_group(group)
    return [cls for name, cls in classes.items() if not name.startswith("Decompile")]


def get_extractor_class(name):
    """Look up a single extractor class by name across all groups.

    Checks cached groups first, then loads groups on demand.
    """
    # Check already-loaded groups first
    for group_classes in _group_cache.values():
        if name in group_classes:
            return group_classes[name]

    # Search all groups (triggers lazy loading)
    for group_name in _REGISTRY:
        classes = _load_group(group_name)
        if name in classes:
            return classes[name]

    return None