Ondrej Bohdal

41 papers A* 8A 2Journal 29Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Ondrej Bohdal, Pramit Saha, Umberto Michieli, Mete Ozay, Taha Ceritli
2026 J jnl
CoRR
Ondrej Bohdal, Taha Ceritli, Mete Ozay, Jijoong Moon, Kyeng-Hun Lee, Hyeonmok Ko, Umberto Michieli
2026 J jnl
CoRR
Zijing Ou, Jacob Si, Junyi Zhu, Ondrej Bohdal, Mete Ozay, Taha Ceritli, Yingzhen Li
2025 J jnl
CoRR
Peyman Hosseini, Ondrej Bohdal, Taha Ceritli, Ignacio Castro, Matthew Purver, Mete Ozay, Umberto Michieli
2025 A* conf
EMNLP
Ondrej Bohdal, Mete Ozay, Jijoong Moon, Kyeng-Hun Lee, Hyeonmok Ko, Umberto Michieli
2025 J jnl
CoRR
Ondrej Bohdal, Mete Ozay, Jijoong Moon, Kyeng-Hun Lee, Hyeonmok Ko, Umberto Michieli
2025 A* conf
EMNLP
Taha Ceritli, Ondrej Bohdal, Mete Ozay, Jijoong Moon, Kyeng-Hun Lee, Hyeonmok Ko, Umberto Michieli
2025 J jnl
CoRR
Taha Ceritli, Ondrej Bohdal, Mete Ozay, Jijoong Moon, Kyeng-Hun Lee, Hyeonmok Ko, Umberto Michieli
2025 J jnl
CoRR
Donald Shenaj, Ondrej Bohdal, Taha Ceritli, Mete Ozay, Pietro Zanuttigh, Umberto Michieli
2025 A conf
WACV
Raman Dutt, Ondrej Bohdal, Pedro Sanchez, Sotirios A. Tsaftaris, Timothy M. Hospedales
2025 J jnl
CoRR
Massimo Bini, Ondrej Bohdal, Umberto Michieli, Zeynep Akata, Mete Ozay, Taha Ceritli
2025 conf
EMNLP (Industry Track)
Ondrej Bohdal, Konstantinos Theodosiadis, Asterios Mpatziakas, Dimitrios Filippidis, Iro Spyrou, Christos Zonios, Anastasios Drosou, Dimosthenis Ioannidis, Kyeng-Hun Lee, Jijoong Moon, Hyeonmok Ko, Mete Ozay, Umberto Michieli
2025 J jnl
CoRR
Ondrej Bohdal, Konstantinos Theodosiadis, Asterios Mpatziakas, Dimitris Filippidis, Iro Spyrou, Christos Zonios, Anastasios Drosou, Dimosthenis Ioannidis, Kyeng-Hun Lee, Jijoong Moon, Hyeonmok Ko, Mete Ozay, Umberto Michieli
2025 A* conf
ICLR
Yongshuo Zong, Ondrej Bohdal, Timothy M. Hospedales
2024 J jnl
CoRR
Raman Dutt, Pedro Sanchez, Ondrej Bohdal, Sotirios A. Tsaftaris, Timothy M. Hospedales
2024 A* conf
ICLR
Raman Dutt, Ondrej Bohdal, Sotirios A. Tsaftaris, Timothy M. Hospedales
2024 A conf
WACV
Ondrej Bohdal, Da Li, Shell Xu Hu, Timothy M. Hospedales
2024 J jnl
CoRR
Donald Shenaj, Ondrej Bohdal, Mete Ozay, Pietro Zanuttigh, Umberto Michieli
2024 J jnl
CoRR
Raman Dutt, Pedro Sanchez, Ondrej Bohdal, Sotirios A. Tsaftaris, Timothy M. Hospedales
2024 J jnl
CoRR
Ruchika Chavhan, Ondrej Bohdal, Yongshuo Zong, Da Li, Timothy M. Hospedales
2024 J jnl
Trans. Mach. Learn. Res.
Martin Ferianc, Ondrej Bohdal, Timothy M. Hospedales, Miguel R. D. Rodrigues
2024 A* conf
ICML
Yongshuo Zong, Ondrej Bohdal, Tingyang Yu, Yongxin Yang, Timothy M. Hospedales
2024 J jnl
CoRR
Yongshuo Zong, Ondrej Bohdal, Tingyang Yu, Yongxin Yang, Timothy M. Hospedales
2024 J jnl
CoRR
Yongshuo Zong, Ondrej Bohdal, Timothy M. Hospedales
2023 J jnl
CoRR
Raman Dutt, Ondrej Bohdal, Sotirios A. Tsaftaris, Timothy M. Hospedales
2023 J jnl
CoRR
Ondrej Bohdal, Timothy M. Hospedales, Philip H. S. Torr, Fazl Barez
2023 J jnl
CoRR
Ondrej Bohdal, Da Li, Timothy M. Hospedales
2023 J jnl
CoRR
Martin Ferianc, Ondrej Bohdal, Timothy M. Hospedales, Miguel R. D. Rodrigues
2023 J jnl
CoRR
Ondrej Bohdal, Da Li, Timothy M. Hospedales
2023 A* conf
CVPR
Ondrej Bohdal, Yinbing Tian, Yongshuo Zong, Ruchika Chavhan, Da Li, Henry Gouk, Li Guo, Timothy M. Hospedales
2023 J jnl
CoRR
Ondrej Bohdal, Yinbing Tian, Yongshuo Zong, Ruchika Chavhan, Da Li, Henry Gouk, Li Guo, Timothy M. Hospedales
2023 J jnl
Trans. Mach. Learn. Res.
Ondrej Bohdal, Yongxin Yang, Timothy M. Hospedales
2023 A* conf
ICLR
Ondrej Bohdal, Lukas Balles, Martin Wistuba, Beyza Ermis, Cédric Archambeau, Giovanni Zappella
2022 J jnl
CoRR
Ondrej Bohdal, Da Li, Shell Xu Hu, Timothy M. Hospedales
2022 J jnl
CoRR
Ondrej Bohdal, Lukas Balles, Beyza Ermis, Cédric Archambeau, Giovanni Zappella
2021 conf
NeurIPS Datasets and Benchmarks
Rui Li, Ondrej Bohdal, Rajesh K. Mishra, Hyeji Kim, Da Li, Nicholas D. Lane, Timothy M. Hospedales
2021 J jnl
CoRR
Rui Li, Ondrej Bohdal, Rajesh K. Mishra, Hyeji Kim, Da Li, Nicholas D. Lane, Timothy M. Hospedales
2021 A* conf
NeurIPS
Ondrej Bohdal, Yongxin Yang, Timothy M. Hospedales
2021 J jnl
CoRR
Ondrej Bohdal, Yongxin Yang, Timothy M. Hospedales
2021 J jnl
CoRR
Ondrej Bohdal, Yongxin Yang, Timothy M. Hospedales
2020 J jnl
CoRR
Ondrej Bohdal, Yongxin Yang, Timothy M. Hospedales
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 []