Vaishnavi Nattar Ranganathan

28 papers A* 2A 2C 1Misc 5Journal 10Unranked 8
YearRankTypeTitle / Venue / Authors
2026 conf
CHI Extended Abstracts
Minghui Zhao, Judith Amores, Vaishnavi Nattar Ranganathan, Xiaofan Jiang, Bodhi Priyantha
2026 Misc conf
HotMobile
Jacqueline M. Schellberg, Suraj Jog, Vaishnavi Nattar Ranganathan, Krishna Chintalapudi, Bodhi Priyantha, Bhuvana Krishnaswamy
2026 Misc conf
HotMobile
Nazish Naeem, Peder A. Olsen, Vaishnavi Nattar Ranganathan
2025 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Yoganand Biradavolu, Jian Ding, Bhuvana Krishnaswamy, Leandros Tassiulas, Vaishnavi Nattar Ranganathan
2025 Misc conf
HotMobile
Angela Busheska, Vikram Iyer, Bruno Silva, Peder A. Olsen, Ranveer Chandra, Vaishnavi Nattar Ranganathan
2025 J jnl
CoRR
Angela Busheska, Vikram Iyer, Bruno Silva, Peder A. Olsen, Ranveer Chandra, Vaishnavi Nattar Ranganathan
2024 J jnl
GetMobile Mob. Comput. Commun.
Nakul Garg, Nirupam Roy, Ranveer Chandra, Vaishnavi Nattar Ranganathan
2024 conf
RFID
Dilushi Piumwardane, Madhushanka Padmal, Vaishnavi Nattar Ranganathan, Kasun Hewage, Christian Rohner, Thiemo Voigt
2023 J jnl
CoRR
Alex Cabral, Vaishnavi Nattar Ranganathan, Jim Waldo
2023 A* conf
MobiCom
Dilushi Piumwardane, Madhushanka Padmal, Kasun Hewage, Vaishnavi Nattar Ranganathan, Thiemo Voigt
2022 conf
IPSN
Madeleine I. G. Daepp, Alex Cabral, Vaishnavi Nattar Ranganathan, Vikram Iyer, Scott Counts, Paul Johns, Asta Roseway, Charlie Catlett, Gavin Jancke, Darren Gehring, Chuck Needham, Curtis von Veh, Tracy Tran, Lex Story, Gabriele D'Amone, Bichlien H. Nguyen
2022 conf
RFID
Dilushi Piumwardane, Madhushanka Padmal, Vaishnavi Nattar Ranganathan, Christian Rohner, Thiemo Voigt
2022 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Yaman Sangar, Yoganand Biradavolu, Kai Pederson, Vaishnavi Nattar Ranganathan, Bhuvana Krishnaswamy
2022 J jnl
IEEE Internet Things Mag.
Vaishnavi Nattar Ranganathan, Peeyush Kumar, Upinder Kaur, Sarah H. Q. Li, Tusher Chakraborty, Ranveer Chandra
2022 Misc conf
SenSys
Ali Saffari, Vikram Iyer, Zerina Kapetanovic, Vaishnavi Nattar Ranganathan
2022 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Jingxian Wang, Vaishnavi Nattar Ranganathan, Jonathan Lester, Swarun Kumar
2021 A conf
Conference on Designing Interactive Systems
Mikayla Buford, Vaishnavi Nattar Ranganathan, Asta Roseway, Teddy Seyed
2021 Misc conf
HotNets
Nofel Yaseen, Behnaz Arzani, Krishna Chintalapudi, Vaishnavi Nattar Ranganathan, Felipe Vieira Frujeri, Kevin Hsieh, Daniel S. Berger, Vincent Liu, Srikanth Kandula
2021 J jnl
CoRR
Nofel Yaseen, Behnaz Arzani, Krishna Chintalapudi, Vaishnavi Nattar Ranganathan, Felipe Vieira Frujeri, Kevin Hsieh, Daniel S. Berger, Vincent Liu, Srikanth Kandula
2021 A* conf
MobiCom
Sagar Jha, Youjie Li, Shadi A. Noghabi, Vaishnavi Nattar Ranganathan, Peeyush Kumar, Andrew Nelson, Michael Toelle, Sudipta N. Sinha, Ranveer Chandra, Anirudh Badam
2019 conf
NER
Vaishnavi Nattar Ranganathan, Jared Nakahara, Soshi Samejima, Nicholas Tolley, Abed Khorasani, Chet T. Moritz, Joshua R. Smith
2018 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Vaishnavi Nattar Ranganathan, Sidhant Gupta, Jonathan Lester, Joshua R. Smith, Desney S. Tan
2016 C conf
ISCAS
Vamsi Talla, Vaishnavi Nattar Ranganathan, Brody J. Mahoney, Joshua R. Smith
2014 conf
NEMS
Vaishnavi Nattar Ranganathan, Srihari Rajgopal, Mehran Mehregany, Swarup Bhunia
2014 J jnl
IEEE Trans. Biomed. Circuits Syst.
Abhishek Basak, Vaishnavi Nattar Ranganathan, Swarup Bhunia
2014 A conf
DATE
Swarup Bhunia, Vaishnavi Nattar Ranganathan, Tina He, Srihari Rajgopal, Rui Yang, Mehran Mehregany, Philip X.-L. Feng
2013 conf
NANOARCH
Vaishnavi Nattar Ranganathan, Tina He, Srihari Rajgopal, Mehran Mehregany, Philip X.-L. Feng, Swarup Bhunia
2012 conf
EMBC
Abhishek Basak, Vaishnavi Nattar Ranganathan, Seetharam Narasimhan, Swarup Bhunia
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