Kassem Kallas

32 papers B 2C 1Misc 3Journal 16Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Kassem Kallas
2025 Misc conf
ICASSP
Hanene F. Z. Brachemi Meftah, Wassim Hamidouche, Sid Ahmed Fezza, Olivier Déforges, Kassem Kallas
2025 J jnl
CoRR
Hanene Brachemi Meftah, Wassim Hamidouche, Sid Ahmed Fezza, Olivier Déforges, Kassem Kallas
2025 J jnl
Mach. Learn. Knowl. Extr.
Tamara El Hajjar, Mohammed Lansari, Reda Bellafqira, Gouenou Coatrieux, Katarzyna Kapusta, Kassem Kallas
2024 J jnl
IEEE Access
Quentin Le Roux, Eric Bourbao, Yannick Teglia, Kassem Kallas
2024 conf
EUSIPCO
Quentin Le Roux, Kassem Kallas, Teddy Furon
2024 J jnl
CoRR
Kassem Kallas
2024 conf
SaTML
Quentin Le Roux, Kassem Kallas, Teddy Furon
2024 J jnl
EURASIP J. Inf. Secur.
Kassem Kallas, Quentin Le Roux, Wassim Hamidouche, Teddy Furon
2023 Misc conf
ICASSP
Kassem Kallas, Teddy Furon
2022 B conf
WCNC
Thao T. Nguyen, Raied Caromi, Kassem Kallas, Michael R. Souryal
2022 J jnl
CoRR
Kassem Kallas, Teddy Furon
2022 conf
WIFS
Kassem Kallas, Teddy Furon
2022 J jnl
CoRR
Kassem Kallas, Teddy Furon
2021 conf
DySPAN
Raied Caromi, Alex Lackpour, Kassem Kallas, Thao T. Nguyen, Michael R. Souryal
2021 book
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2020 conf
WIFS
Mauro Barni, Kassem Kallas, Ehsan Nowroozi, Benedetta Tondi
2020 J jnl
CoRR
Mauro Barni, Kassem Kallas, Ehsan Nowroozi, Benedetta Tondi
2019 B conf
ICIP
Mauro Barni, Kassem Kallas, Benedetta Tondi
2019 J jnl
CoRR
Mauro Barni, Kassem Kallas, Benedetta Tondi
2019 C conf
MMSP
Abhir Bhalerao, Kassem Kallas, Benedetta Tondi, Mauro Barni
2019 Misc conf
ICASSP
Mauro Barni, Kassem Kallas, Ehsan Nowroozi, Benedetta Tondi
2018 J jnl
Inf. Fusion
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2018 conf
APSIPA
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2018 J jnl
CoRR
Mauro Barni, Kassem Kallas, Ehsan Nowroozi, Benedetta Tondi
2017
Kassem Kallas
2017 J jnl
CoRR
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2016 J jnl
IEEE Trans. Inf. Forensics Secur.
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2016 conf
GameSec
Kassem Kallas, Benedetta Tondi, Riccardo Lazzeretti, Mauro Barni
2015 J jnl
CoRR
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2015 J jnl
CoRR
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
2014 conf
CDC
Andrea Abrardo, Mauro Barni, Kassem Kallas, Benedetta Tondi
redb/extractors/pe_extractor.py
← Index redb/extractors/pe_extractor.py python
import logging
from abc import ABCMeta, abstractmethod
import inspect

import magic
import pefile
from dotnetfile import DotNetPE

from redb.extractors.extractor import Extractor

logger = logging.getLogger(__name__)


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

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious
        )
        self.pe = pe if pe else self._generate_pefile_object()
        self.dotnet = None

    def _generate_pefile_object(self):
        pe = None
        try:
            pe = pefile.PE(self.filepath)
            if not pe:
                raise pefile.PEFormatError("Empty file?")
        except pefile.PEFormatError as e:
            self.log.error(f"Format error {self.hash.sha256} Full error : {e}")
        return pe

    def _generate_dotnetfile_object(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        dotnet = None
        error = None
        try:
            dotnet = DotNetPE(self.filepath)
            if not dotnet:
                raise Exception("Empty file?")
        except Exception as e:
            self.log.error(
                f"Format error dotnet file {self.hash.sha256} Full error : {e}"
            )
            error = e
        return dotnet, error

    def _check_dotnet(self):
        try:
            file_type = magic.from_buffer(self.binary)
            if ".Net" in file_type:
                return True
            for entry in self.pe.OPTIONAL_HEADER.DATA_DIRECTORY:
                # IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR is typically 14
                if (
                    entry.name == "IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR"
                    and entry.Size > 0
                ):
                    return True
            return False
        except AttributeError as e:
            self.log.error(
                f"AttributeError error dotnet file {self.hash.sha256} Full error : {e}"
            )
            return False

    def _is_signed(self):
        address = self.pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        if address == 0:
            return False
        return True

    def _has_overlay(self):
        return bool(self.pe.get_overlay())