Nathan Lay

22 papers A* 1A 1B 1Journal 10Unranked 9
YearRankTypeTitle / Venue / Authors
2025 J jnl
Comput. Biol. Medicine
Fahmida Haque, Alex Chen, Nathan Lay, Jorge Carrasquillo, Esther Mena, Liza Lindenberg, Julia E. Segal, Philip Eclarinal, Sara Talvacchio, Alberta Derkyi, Peter L. Choyke, Karel Pacak, Rosandra N. Kaplan, Frank I. Lin, Baris Turkbey, Stephanie A. Harmon
2024 conf
ISBI
Alex Chen, Nathan Lay, Stephanie A. Harmon, Kutsev Ozyoruk, Enis Yilmaz, Bradford J. Wood, Peter A. Pinto, Peter L. Choyke, Baris Turkbey
2024 J jnl
CoRR
Alex Chen, Nathan Lay, Stephanie A. Harmon, Kutsev Ozyoruk, Enis Yilmaz, Bradford J. Wood, Peter A. Pinto, Peter L. Choyke, Baris Turkbey
2024 J jnl
CoRR
Pouria Yazdian Anari, Fiona Obiezu, Nathan Lay, Fatemeh Dehghani Firouzabadi, Aditi Chaurasia, Mahshid Golagha, Shiva Singh, Fatemeh Homayounieh, Aryan Zahergivar, Stephanie A. Harmon, Evrim Turkbey, Rabindra Gautam, Kevin C. Ma, María Merino, Elizabeth C. Jones, Mark W. Ball, W. Marston Linehan, Baris Turkbey, Ashkan A. Malayeri
2021 J jnl
IEEE Access
Samira Masoudi, Sherif Mehralivand, Stephanie A. Harmon, Nathan Lay, Liza Lindenberg, Esther Mena, Peter A. Pinto, Deborah E. Citrin, James L. Gulley, Bradford J. Wood, William L. Dahut, Ravi A. Madan, Ulas Bagci, Peter L. Choyke, Baris Turkbey
2021 conf
ISBI
Samira Masoudi, Stephanie A. Harmon, Sherif Mehralivand, Nathan Lay, Ulas Bagci, Bradford J. Wood, Peter A. Pinto, Peter L. Choyke, Baris Turkbey
2018 conf
MICCAI (2)
Nathan Lay, Yohannes Tsehay, Yohan Sumathipala, Ruida Cheng, Sonia Gaur, Clayton Smith, Adrian Barbu, Le Lu, Baris Turkbey, Peter L. Choyke, Peter A. Pinto, Ronald M. Summers
2018 J jnl
CoRR
Nathan Lay, Adam P. Harrison, Sharon Schreiber, Gitesh Dawer, Adrian Barbu
2018 J jnl
Medical Image Anal.
Holger R. Roth, Le Lu, Nathan Lay, Adam P. Harrison, Amal Farag, Andrew Sohn, Ronald M. Summers
2017 B conf
Image Processing
Ruida Cheng, Holger R. Roth, Nathan Lay, Le Lu, Baris Turkbey, William Gandler, Evan S. McCreedy, Peter L. Choyke, Ronald M. Summers, Matthew J. McAuliffe
2017 conf
ISBI
Yohannes Tsehay, Nathan Lay, Xiaosong Wang, Jin Tae Kwak, Baris Turkbey, Peter L. Choyke, Peter A. Pinto, Bradford J. Wood, Ronald M. Summers
2017 conf
ISBI
Ruida Cheng, Nathan Lay, Francesca Mertan, Baris Turkbey, Holger R. Roth, Le Lu, William Gandler, Evan S. McCreedy, Thomas Pohida, Peter L. Choyke, Matthew J. McAuliffe, Ronald M. Summers
2017 J jnl
CoRR
Holger R. Roth, Le Lu, Nathan Lay, Adam P. Harrison, Amal Farag, Andrew Sohn, Ronald M. Summers
2016 A conf
WACV
Le Lu, Dijia Wu, Nathan Lay, David Liu, Isabella Nogues, Ronald M. Summers
2016 conf
MICCAI (2)
Isabella Nogues, Le Lu, Xiaosong Wang, Holger Roth, Gedas Bertasius, Nathan Lay, Jianbo Shi, Yohannes Tsehay, Ronald M. Summers
2016 conf
Computer-Aided Diagnosis
Jiamin Liu, Nathan Lay, Zhuoshi Wei, Le Lu, Lauren Kim, Evrim Turkbey, Ronald M. Summers
2016 conf
Computer-Aided Diagnosis
Nathan Lay, Sabrina Freeman, Baris Turkbey, Ronald M. Summers
2013 conf
IPMI
Nathan Lay, Neil Birkbeck, Jingdan Zhang, Shaohua Kevin Zhou
2012 J jnl
J. Mach. Learn. Res.
Adrian Barbu, Nathan Lay
2011 J jnl
CoRR
Adrian Barbu, Nathan Lay
2010 J jnl
Monte Carlo Methods Appl.
Edwin Jimenez, Nathan Lay, M. Yousuff Hussaini
2010 A* conf
ICML
Nathan Lay, Adrian Barbu
redb/extractors/apk_extractor.py
← Index redb/extractors/apk_extractor.py python
import logging
import zipfile
from abc import ABCMeta, abstractmethod

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


@abstractmethod
class APKExtractor(Extractor, metaclass=ABCMeta):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        known_benign=False,
        known_malicious=False,
        apk=None,
    ):
        # Read binary data before calling super().__init__ so that the
        # binary property override is available during hash computation.
        with open(filepath, "rb") as f:
            self._binary_data = f.read()

        self.apk = apk if apk else self._generate_apk_object(filepath)

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

    @property
    def binary(self):
        """Override to use already-read binary data."""
        return self._binary_data

    def _generate_apk_object(self, filepath):
        """Parse APK using androguard."""
        apk = None
        try:
            # Suppress verbose androguard loguru DEBUG/INFO output
            from loguru import logger as loguru_logger
            loguru_logger.disable("androguard")
            from androguard.core.apk import APK
            apk = APK(filepath)
            if not apk.is_valid_APK():
                logger.warning(
                    f"APK validation warning for {filepath}"
                )
                # Still return the object — partial parsing may still work
        except Exception as e:
            logger.error(
                f"Format error parsing APK {filepath}: {e}"
            )
        return apk

    def _is_valid_apk(self):
        """Check if the APK object was parsed successfully."""
        return self.apk is not None

    def _get_zip_file(self):
        """Get a zipfile.ZipFile handle for direct archive inspection."""
        try:
            return zipfile.ZipFile(self.filepath, 'r')
        except (zipfile.BadZipFile, Exception) as e:
            self.log.error(f"Failed to open APK as ZIP: {e}")
            return None

    def _list_files(self):
        """List all files in the APK archive."""
        if not self._is_valid_apk():
            return []
        try:
            return self.apk.get_files()
        except Exception as e:
            self.log.error(f"Error listing APK files: {e}")
            return []