Ouriel Grynszpan

22 papers B 6C 1Journal 12Unranked 2
YearRankTypeTitle / Venue / Authors
2024 J jnl
Univers. Access Inf. Soc.
Vanessa Zervogianni, Sue Fletcher-Watson, Gerardo Herrera, Matthew S. Goodwin, Elise Triquell, Patricia Pérez-Fuster, Mark J. Brosnan, Ouriel Grynszpan
2024 C conf
ICINCO (1)
Ousmane Ndiaye, Ouriel Grynszpan, Bruno Berberian, Ludovic Saint-Bauzel
2024 B conf
CogSci
Pierre-Adams Ouattara Oulé, Alexis Le Besnerais, Elise Prigent, Ouriel Grynszpan
2022 ch.
The Handbook on Socially Interactive Agents (2)
Jacqueline Nadel, Ouriel Grynszpan, Jean-Claude Martin
2019 J jnl
Frontiers Comput. Sci.
Arnaud Dapogny, Charline Grossard, Stéphanie Hun, Sylvie Serret, Ouriel Grynszpan, Séverine Dubuisson, David Cohen, Kevin Bailly
2019 J jnl
J. Multimodal User Interfaces
Samuel Recht, Ouriel Grynszpan
2019 J jnl
Cogn. Process.
Alix Pérusseau-Lambert, Margarita Anastassova, Mehdi Boukallel, Mohamed Chetouani, Ouriel Grynszpan
2018 B conf
HAI
Ouriel Grynszpan, Esther Mouquet, Matthew F. S. Rushworth, Jérôme Sallet, Mehdi Khamassi
2018 J jnl
Frontiers Neurorobotics
Aïsha Sahaï, Elisabeth Pacherie, Ouriel Grynszpan, Bruno Berberian
2018 B conf
FG
Arnaud Dapogny, Charline Grossard, Stéphanie Hun, Sylvie Serret, Jeremy Bourgeois, Hedy Jean-Marie, Pierre Foulon, Huaxiong Ding, Liming Chen, Séverine Dubuisson, Ouriel Grynszpan, David Cohen, Kevin Bailly
2018 conf
EuroHaptics (1)
Alix Pérusseau-Lambert, Margarita Anastassova, Mehdi Boukallel, Mohamed Chetouani, Ouriel Grynszpan
2018 B conf
HAI
Tagduda Ait Challal, Ouriel Grynszpan
2017 B conf
RO-MAN
Aïsha Sahaï, Elisabeth Pacherie, Ouriel Grynszpan, Bruno Berberian
2017 J jnl
Frontiers Neurorobotics
Aïsha Sahaï, Elisabeth Pacherie, Ouriel Grynszpan, Bruno Berberian
2017 J jnl
Comput. Educ.
Charline Grossard, Ouriel Grynszpan, Sylvie Serret, Anne-Lise Jouen, Kevin Bailly, David Cohen
2014 J jnl
IEEE Trans. Affect. Comput.
Matthieu Courgeon, Gilles Rautureau, Jean-Claude Martin, Ouriel Grynszpan
2014 J jnl
Int. J. Hum. Comput. Interact.
Stéphanie Buisine, Matthieu Courgeon, Aurélien Charles, Céline Clavel, Jean-Claude Martin, Ning Tan, Ouriel Grynszpan
2009 J jnl
J. Multimodal User Interfaces
Stéphanie Buisine, Yun Wang, Ouriel Grynszpan
2008 J jnl
Int. J. Hum. Comput. Stud.
Ouriel Grynszpan, Jean-Claude Martin, Jacqueline Nadel
2006 J jnl
Rev. d'Intelligence Artif.
Ouriel Grynszpan, Jean-Claude Martin, Jacqueline Nadel
2005 conf
CHI Extended Abstracts
Ouriel Grynszpan, Jean-Claude Martin, Jacqueline Nadel
2005 B conf
IVA
Ouriel Grynszpan, Jean-Claude Martin, Jacqueline Nadel
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 []