Hal Abelson

33 papers A* 6A 2B 1C 1Journal 14Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Prerna Ravi, Carúmey Stevens, Beatriz Flamia Azevedo, Jasmine David, Brandon Hanks, Hal Abelson, Grace C. Lin, Emma Anderson
2025 A* conf
AAAI
Christina A. Bosch, Mary Cate Gustafson-Quiett, Samar Abu Hegly, Sarah Wharton, John Masla, Lydia Guterman, Calvin Macatantan, Eric Klopfer, Hal Abelson, Cynthia Breazeal
2025 A* conf
CHI
Prerna Ravi, John Masla, Gisella Kakoti, Grace C. Lin, Emma Anderson, Matt Taylor, Anastasia K. Ostrowski, Cynthia Breazeal, Eric Klopfer, Hal Abelson
2025 J jnl
CoRR
Prerna Ravi, John Masla, Gisella Kakoti, Grace C. Lin, Emma Anderson, Matt Taylor, Anastasia K. Ostrowski, Cynthia Breazeal, Eric Klopfer, Hal Abelson
2025 A* conf
AAAI
Todd W. Neller, Rasika Bhalerao, Eun Kyung Ko, Vishodana Thamotharan, Lisa Zhang, Sonya Allin, Mahdi Haghifam, Michael Pawliuk, Rutwa Engineer, Florian Shkurti, Cunyan Ma, Daniella DiPaola, Cynthia Breazeal, Loreto Alonzi, Brian Wright, Ali Rivera, Kristin Fasiang, Duri Long, Shruthi Chockkalingam, Giulia Toti, Evan Shieh, Princewill Okoroafor, Thema Monroe-White, Mustafa Haiderbhai, Carolyn Quinlan, Ashwin R. Bharadwaj, Anio Zhang, Rajagopal Venkatesaramani, Sarah Wharton, John Masla, Lydia Guterman, Mary Cate Gustafson-Quiett, Christina A. Bosch, Samar Abu Hegley, Calvin Macatantan, Eric Klopfer, Hal Abelson, Shira Wein, Mercy Wairimu Gachoka, Li-Hsin Chang, Maryam Mirzaei, Mohammad Mahdi Ajallooeian
2025 A* conf
AAAI
John Masla, Christina A. Bosch, Prerna Ravi, Lydia Guterman, Sarah Wharton, Mary Cate Gustafson-Quiett, Samar Abu Hegly, Calvin Macatantan, Eric Klopfer, Cynthia Breazeal, Hal Abelson
2024 conf
SIGCSE Virtual (1)
Prerna Ravi, Robert Parks, John Masla, Hal Abelson, Cynthia Breazeal
2024 A* conf
AAAI
Safinah Arshad Ali, Prerna Ravi, Katherine S. Moore, Hal Abelson, Cynthia Breazeal
2023 A* conf
AAAI
H. Nicole Pang, Robert Parks, Cynthia Breazeal, Hal Abelson
2023 conf
SIGCSE (2)
Xiaoxue Du, Robert Parks, Selim Tezel, Jeff Freilich, H. Nicole Pang, Hal Abelson, Cynthia Breazeal
2023 J jnl
CoRR
Prerna Ravi, Annalisa Broski, Glenda Stump, Hal Abelson, Eric Klopfer, Cynthia Breazeal
2022 J jnl
CoRR
Julius Adebayo, Michael Muelly, Hal Abelson, Been Kim
2021 J jnl
Comput. Educ. Artif. Intell.
Ting-Chia Hsu, Hal Abelson, Natalie Lao, Yu-Han Tseng, Yi-Ting Lin
2021 J jnl
CoRR
Hal Abelson, Ross J. Anderson, Steven M. Bellovin, Josh Benaloh, Matt Blaze, Jon Callas, Whitfield Diffie, Susan Landau, Peter G. Neumann, Ronald L. Rivest, Jeffrey I. Schiller, Bruce Schneier, Vanessa Teague, Carmela Troncoso
2021 J jnl
Int. J. Comput. Support. Collab. Learn.
Ting-Chia Hsu, Hal Abelson, Evan W. Patton, Shih-Chu Chen, Hsuan-Ning Chang
2019 conf
CSLAW
David C. Vladeck, Hal Abelson, Niva Elkin-Koren, Erik Neuenschwander, Jason Schultz, Christopher C. Yoo
2019 J jnl
Commun. ACM
Mike Tissenbaum, Josh Sheldon, Hal Abelson
2018 conf
ICLS
Mike Tissenbaum, Mark A. Sherman, Josh Sheldon, Hal Abelson
2018 conf
ICLS
Mike Tissenbaum, Josh Sheldon, Mark A. Sherman, Hal Abelson, David Weintrop, Kemi Jona, Mike S. Horn, Uri Wilensky, Satabdi Basu, Daisy Rutstein, Eric Snow, Linda Shear, Shuchi Grover, Irene A. Lee, Eric Klopfer, Gayithri Jayathirtha, Mia S. Shaw, Yasmin B. Kafai, Eni Mustafaraj, Will Temple, R. Benjamin Shapiro, Debora Lui, Clara Sorensen
2016 B conf
VL/HCC
Benjamin Xie, Hal Abelson
2015 conf
PROMOTO@SPLASH
Benjamin Xie, Isra Shabir, Hal Abelson
2014 C conf
MobiQuitous
Ilaria Liccardi, Joseph N. Pato, Daniel J. Weitzner, Hal Abelson, David De Roure
2012 A conf
SIGCSE
Hal Abelson
2012 J jnl
J. Comput. Sci. Coll.
Hal Abelson, Eni Mustafaraj, Franklyn A. Turbak, Ralph A. Morelli, Chinma Uche
2012 J jnl
IEEE Pervasive Comput.
Paul Lukowicz, Sanjiv Nanda, Vidya Narayanan, Hal Abelson, Deborah L. McGuinness, Michael I. Jordan
2012 conf
ACM Southeast Regional Conference
Jeff Gray, Hal Abelson, David Wolber, Michelle Friend
2012 J jnl
J. Comput. Sci. Coll.
Hal Abelson, Ralph A. Morelli, Stella Kakavouli, Eni Mustafaraj, Franklyn A. Turbak
2012 A conf
SIGCSE
Hal Abelson, David Wolber, Ralph A. Morelli, Jeff Gray, Chinma Uche
2011 book
David Wolber, Hal Abelson, Ellen Spertus, Liz Looney
2010 J jnl
J. Comput. Sci. Coll.
Hal Abelson, Mark Chang, Eni Mustafaraj, Franklyn A. Turbak
2010 ch.
World Wide Research
John Wilbanks, Hal Abelson
2008 J jnl
Proc. IEEE
Hal Abelson, Phillip D. Long
1997 J jnl
World Wide Web J.
Hal Abelson, Ross J. Anderson, Steven M. Bellovin, Josh Benaloh, Matt Blaze, Whitfield Diffie, John Gilmore, Peter G. Neumann, Ronald L. Rivest, Jeffrey I. Schiller, Bruce Schneier
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 []