Naeem Janjua

13 papers B 1Misc 1Journal 8Unranked 3
YearRankTypeTitle / Venue / Authors
2025 J jnl
Artif. Intell. Rev.
Muhammad Zia Ur Rehman, Syed Mohammed Shamsul Islam, David Blake, Anwaar Ulhaq, Naeem Janjua
2025 J jnl
Comput. Secur.
Mohammad Al-Fawa'reh, Jumana M. Abu-Khalaf, Naeem Janjua, Patryk Szewczyk
2025 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Muhammad Zia Ur Rehman, Syed Mohammed Shamsul Islam, Anwaar Ul-Haq, David Blake, Naeem Janjua
2025 J jnl
J. Netw. Comput. Appl.
Mohammad Al-Fawa'reh, Jumana Abu-Khalaf, Naeem Janjua, Patryk Szewczyk
2025 conf
WWW (Companion Volume)
Lei Wang, Md. Zakir Hossain, Syed M. S. Islam, Tom Gedeon, Sharifa Alghowinem, Isabella Yu, Serena Bono, Xuanying Zhu, Gennie Nguyen, Nur Al Hasan Haldar, Seyed Mohammad Jafar Jalali, Md. Abdur Razzaque, Imran Razzak, Md. Rafiqul Islam, Shahadat Uddin, Naeem Janjua, Aneesh Krishna, Manzur Ashraf
2025 conf
VISIGRAPP (3): VISAPP
Muhammad Zia Ur Rehman, Syed Mohammed Shamsul Islam, Anwaar Ulhaq, David Blake, Naeem Janjua
2024 J jnl
CoRR
Ahmad Mohsin, Helge Janicke, Adrian Wood, Iqbal H. Sarker, Leandros Maglaras, Naeem Janjua
2024 Misc conf
DICTA
Muhammad Zia Ur Rehman, Syed Mohammed Shamsul Islam, Anwaar Ulhaq, Naeem Janjua, David Blake
2024 J jnl
Expert Syst. Appl.
Ali Hur, Naeem Janjua, Mohiuddin Ahmed
2021 conf
AIKE
Ali Hur, Naeem Janjua, Mohiuddin Ahmed
2021 J jnl
CoRR
Ali Hur, Naeem Janjua, Mohiuddin Ahmed
2019 J jnl
J. Ambient Intell. Humaniz. Comput.
Uvais Qidwai, Junaid Chaudhry, Sohail Jabbar, Hafiz Maher Ali Zeeshan, Naeem Janjua, Shehzad Khalid
2017 B conf
WI
Falak Nawaz, Omar Khadeer Hussain, Naeem Janjua, Elizabeth Chang
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())