Kapil Bhardwaj

23 papers Journal 19Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
Adv. Intell. Syst.
Kapil Bhardwaj, Dmitrii Semenov, Roman Sotner, Sayani Majumdar
2025 conf
MOCAST
Kapil Bhardwaj, Dmitrii Semenov, Roman Sotner, Sayani Majumdar
2025 J jnl
CoRR
Chiu-Chang Cheng, Kapil Bhardwaj, Ya-Ning Chang, Sayani Majumdar, Chao-Hung Wang
2024 J jnl
J. Circuits Syst. Comput.
Kapil Bhardwaj, Mayank Srivastava
2024 J jnl
J. Circuits Syst. Comput.
Mayank Srivastava, Ajay Kumar, Kapil Bhardwaj, Sushanta Mahanty, Devesh Kumar Srivastava, Ramendra Singh
2024 J jnl
IEEE Trans. Biomed. Circuits Syst.
Sandro Carrara, Junrui Chen, Kapil Bhardwaj, Ata Golparvar, Gian Luca Barbruni
2024 J jnl
Circuits Syst. Signal Process.
Kapil Bhardwaj, Mayank Srivastava
2024 conf
ICCCNT
Gurpreet Singh, Deependra Singh, Ruchi Sharma, Kapil Bhardwaj
2023 J jnl
Int. J. Bifurc. Chaos
Kapil Bhardwaj, Niranjan Raj, Mayank Srivastava
2023 conf
IC3I
Nahida Nazir, Aditya Saraogi, Kanksha Kaur, Vinod Bera, Akash Kumar Singh, Omdev Dahiya, Navlesh Kumar Singh, Kapil Bhardwaj, Suman Avdhesh Yadav
2023 J jnl
J. Circuits Syst. Comput.
Kapil Bhardwaj, Ravuri Narayana, Mayank Srivastava
2023 J jnl
Wirel. Pers. Commun.
Kapil Bhardwaj, Mayank Srivastava, Worapong Tangsrirat
2023 J jnl
Circuits Syst. Signal Process.
Kapil Bhardwaj, Mayank Srivastava
2023 J jnl
Integr.
Kapil Bhardwaj, Mayank Srivastava
2022 J jnl
J. Circuits Syst. Comput.
Kapil Bhardwaj, Mayank Srivastava
2022 J jnl
Circuits Syst. Signal Process.
Kapil Bhardwaj, Mayank Srivastava
2022 J jnl
IEEE Access
Dalibor Biolek, Zdenek Kohl, Jiri Vavra, Viera Biolková, Kapil Bhardwaj, Mayank Srivastava
2022 J jnl
Circuits Syst. Signal Process.
Kapil Bhardwaj, Mayank Srivastava
2021 conf
ICM
Kapil Bhardwaj, Anand Kumar, Mayank Srivastava, Abdullah G. Alharbi
2021 J jnl
J. Circuits Syst. Comput.
Kapil Bhardwaj, Mayank Srivastava
2021 J jnl
Microelectron. J.
Kapil Bhardwaj, Mayank Srivastava
2021 J jnl
Microelectron. J.
Kapil Bhardwaj, Mayank Srivastava
2020 J jnl
IET Circuits Devices Syst.
Kapil Bhardwaj, Mayank Srivastava
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())