Ian E. Smith

51 papers A* 14A 2B 1Misc 8Journal 6Unranked 20
YearRankTypeTitle / Venue / Authors
2012 J jnl
Inf. Polity
Sean A. Munson, Daniel Avrahami, Sunny Consolvo, James Fogarty, Batya Friedman, Ian E. Smith
2011 conf
DG.O
Sean A. Munson, Daniel Avrahami, Sunny Consolvo, James Fogarty, Batya Friedman, Ian E. Smith
2008 A* conf
CHI
Sunny Consolvo, David W. McDonald, Tammy Toscos, Mike Y. Chen, Jon Froehlich, Beverly L. Harrison, Predrag V. Klasnja, Anthony LaMarca, Louis Legrand, Ryan Libby, Ian E. Smith, James A. Landay
2008 conf
Mobile HCI
Shaun K. Kane, Jacob O. Wobbrock, Ian E. Smith
2007 J jnl
Int. J. Hum. Comput. Interact.
Sunny Consolvo, Beverly L. Harrison, Ian E. Smith, Mike Y. Chen, Katherine Everitt, Jon Froehlich, James A. Landay
2007 conf
Mobile HCI
Karen P. Tang, Jason I. Hong, Ian E. Smith, Annie Ha, Lalatendu Satpathy
2006 conf
WMCSA
Alex Varshavsky, Mike Y. Chen, Eyal de Lara, Jon Froehlich, Dirk Hähnel, Jeffrey Hightower, Anthony LaMarca, Fred Potter, Timothy Sohn, Karen P. Tang, Ian E. Smith
2006 conf
WMCSA
Alex Varshavsky, Mike Y. Chen, Eyal de Lara, Jon Froehlich, Dirk Hähnel, Jeffrey Hightower, Anthony LaMarca, Fred Potter, Timothy Sohn, Karen P. Tang, Ian E. Smith
2006 A* conf
CHI
Sunny Consolvo, Katherine Everitt, Ian E. Smith, James A. Landay
2006 Misc conf
UbiComp
Batya Friedman, Ian E. Smith, Peter H. Kahn Jr., Sunny Consolvo, Jaina Selawski
2006 A* conf
ICSE
Timothy Sohn, William G. Griswold, James Scott, Anthony LaMarca, Yatin Chawathe, Ian E. Smith, Mike Y. Chen
2006 conf
Pervasive
Anthony J. Nicholson, Ian E. Smith, Jeff Hughes, Brian D. Noble
2006 Misc conf
UbiComp
Timothy Sohn, Alex Varshavsky, Anthony LaMarca, Mike Y. Chen, Tanzeem Choudhury, Ian E. Smith, Sunny Consolvo, Jeffrey Hightower, William G. Griswold, Eyal de Lara
2006 A* conf
UIST
Kayur Patel, Mike Y. Chen, Ian E. Smith, James A. Landay
2006 J jnl
IEEE Pervasive Comput.
Jeffrey Hightower, Anthony LaMarca, Ian E. Smith
2006 Misc conf
UbiComp
Mike Y. Chen, Timothy Sohn, Dmitri Chmelev, Dirk Hähnel, Jeffrey Hightower, Jeff Hughes, Anthony LaMarca, Fred Potter, Ian E. Smith, Alex Varshavsky
2006 Misc conf
UbiComp
Jon Froehlich, Mike Y. Chen, Ian E. Smith, Fred Potter
2005 Misc conf
UbiComp
Giovanni Iachello, Ian E. Smith, Sunny Consolvo, Gregory D. Abowd, Jeff Hughes, James Howard, Fred Potter, James Scott, Timothy Sohn, Jeffrey Hightower, Anthony LaMarca
2005 A conf
SOUPS
Giovanni Iachello, Ian E. Smith, Sunny Consolvo, Mike Y. Chen, Gregory D. Abowd
2005 A* conf
CHI
Scott E. Hudson, Jennifer Mankoff, Ian E. Smith
2005 Misc conf
UbiComp
Jeffrey Hightower, Sunny Consolvo, Anthony LaMarca, Ian E. Smith, Jeff Hughes
2005 A* conf
CHI
Sunny Consolvo, Ian E. Smith, Tara Matthews, Anthony LaMarca, Jason Tabert, Pauline S. Powledge
2005 conf
Mobile HCI
Byeong-cheol Hwang, Ian E. Smith, Hisun Kim, Elisa Vargas, Jaakko Lehikoinen
2005 conf
Pervasive
Anthony LaMarca, Yatin Chawathe, Sunny Consolvo, Jeffrey Hightower, Ian E. Smith, James Scott, Timothy Sohn, James Howard, Jeff Hughes, Fred Potter, Jason Tabert, Pauline S. Powledge, Gaetano Borriello, Bill N. Schilit
2005 Misc conf
UbiComp
Timothy Sohn, Kevin A. Li, Gunny Lee, Ian E. Smith, James Scott, William G. Griswold
2005 Misc conf
UbiComp
Anthony LaMarca, Jeffrey Hightower, Ian E. Smith, Sunny Consolvo
2005 conf
Pervasive
Ian E. Smith, Sunny Consolvo, Anthony LaMarca, Jeffrey Hightower, James Scott, Timothy Sohn, Jeff Hughes, Giovanni Iachello, Gregory D. Abowd
2005 J jnl
Comput. Entertain.
Ian E. Smith, Sunny Consolvo, Anthony LaMarca
2004 conf
Mobile HCI
Ian E. Smith, Giovanni Iachello, Mika Raento
2001 J jnl
CoRR
Paul M. Aoki, Ian E. Smith, James D. Thornton
1999 A* conf
CHI
Michael Kaminsky, Paul Dourish, W. Keith Edwards, Anthony LaMarca, Michael Salisbury, Ian E. Smith
1999 B conf
ECSCW
Anthony LaMarca, W. Keith Edwards, Paul Dourish, John Lamping, Ian E. Smith, James D. Thornton
1998 conf
AI in Structural Engineering
Ruth Stalker, Ian E. Smith
1998 conf
AI in Structural Engineering
Benny Raphael, Ian E. Smith
1998 conf
AI in Structural Engineering
Kristina Shea, Ian E. Smith
1998 conf
AI in Structural Engineering
Ruth Stalker, Ian E. Smith
1997 J jnl
IEEE Multim.
Nitin "Nick" Sawhney, David Balcom, Ian E. Smith
1997 A* conf
ACM Symposium on User Interface Software and Technology
Scott E. Hudson, Roy Rodenstein, Ian E. Smith
1997 A* conf
ACM Symposium on User Interface Software and Technology
Scott E. Hudson, Ian E. Smith
1997 A* conf
ACM Symposium on User Interface Software and Technology
W. Keith Edwards, Scott E. Hudson, Joshua Marinacci, Roy Rodenstein, Thomas K. Rodriguez, Ian E. Smith
1996 conf
CHI Conference Companion
Scott E. Hudson, Ian E. Smith
1996 conf
Hypertext
Nitin "Nick" Sawhney, David Balcom, Ian E. Smith
1996 A conf
CSCW
Scott E. Hudson, Ian E. Smith
1996 conf
CHI Conference Companion
Ian E. Smith
1996 A* conf
ACM Symposium on User Interface Software and Technology
Scott E. Hudson, Ian E. Smith
1995 A* conf
ACM Multimedia
Scott L. Minneman, Steve R. Harrison, Bill Janssen, Gordon Kurtenbach, Thomas P. Moran, Ian E. Smith, William van Melle
1995 conf
COOCS
Ian E. Smith, Scott E. Hudson, Elizabeth D. Mynatt, John R. Selbie
1995 conf
CHI 95 Conference Companion
Scott E. Hudson, Ian E. Smith
1995 A* conf
ACM Multimedia
Ian E. Smith, Scott E. Hudson
1993 conf
Hypertext
Daryl T. Lawton, Ian E. Smith
1992 A* conf
CHI
Lynn Wilcox, Ian E. Smith, Marcia A. Bush
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 []