Naresh Kumar Agarwal

44 papers C 2Journal 12Unranked 28
YearRankTypeTitle / Venue / Authors
2025 J jnl
Inf. Res.
Naresh Kumar Agarwal
2024 J jnl
Libr. Trends
Naresh Kumar Agarwal, Md. Anwarul Islam
2024 J jnl
J. Documentation
Sanda Erdelez, Yuan-Ho Huang, Naresh Kumar Agarwal
2022 J jnl
Aslib J. Inf. Manag.
Naresh Kumar Agarwal, Tenbit Mitiku, Wenqing Lu
2022 conf
ASIST
Ina Fourie, Naresh Kumar Agarwal, Diane H. Sonnenwald, Heidi Julien, Abebe Rorissa, Brian Detlor
2022 conf
ASIST
Bhakti Gala, Md. Anwarul Islam, Ruwan Gamage, Naresh Kumar Agarwal
2022 J jnl
J. Inf. Knowl. Manag.
Bedour H. AlShakhs, Naresh Kumar Agarwal
2022 J jnl
Inf. Res.
Naresh Kumar Agarwal
2021 conf
ASIST
Naresh Kumar Agarwal, Md. Anwarul Islam
2021 J jnl
Aslib J. Inf. Manag.
Naresh Kumar Agarwal, Farraj Alsaeedi
2020 conf
ASIST
Sarah A. Buchanan, Sabrina Sauer, Anabel Quan-Haase, Naresh Kumar Agarwal, Sanda Erdelez
2020 conf
ASIST
Naresh Kumar Agarwal, Md. Anwarul Islam
2020 conf
ASIST
Naresh Kumar Agarwal, Wenqing Lu
2020 conf
ASIST
Naresh Kumar Agarwal, Kyong Eun Oh, Rachel D. Williams, Darin Freeburg, Howard Rosenbaum, Barbara H. Kwasnik
2020 conf
ASIST
Naresh Kumar Agarwal, Farraj Alsaeedi
2019 conf
ASIST
Md. Anwarul Islam, Naresh Kumar Agarwal
2019 conf
ASIST
Danielle Pollock, Rachel D. Williams, Catherine L. Dumas, Naresh Kumar Agarwal, Sanda Erdelez
2019 conf
ASIST
Naresh Kumar Agarwal, Wenqing Lu
2018 conf
ASIST
Naresh Kumar Agarwal, Md. Anwarul Islam
2018 conf
ICDE Workshops
Naresh Kumar Agarwal
2017 ed.
ASIST
Sanda Erdelez, Naresh Kumar Agarwal
2017 book
Exploring Context in Information Behavior
Naresh Kumar Agarwal
2016 J jnl
J. Inf. Knowl. Manag.
Laila Naif Marouf, Naresh Kumar Agarwal
2016 conf
ASIST
Naresh Kumar Agarwal, Md. Anwarul Islam
2016 conf
ASIST
Sanda Erdelez, Jannica Heinström, Stephann Makri, Lennart Björneborn, Jamshid Beheshti, Elaine Toms, Naresh Kumar Agarwal
2015 conf
ASIST
Md. Anwarul Islam, Naresh Kumar Agarwal, Mitsuru Ikeda
2015 conf
ASIST
Kyungwon Koh, Kyong Eun Oh, Naresh Kumar Agarwal, Nicholas J. Belkin
2015 J jnl
Inf. Res.
Naresh Kumar Agarwal
2012 conf
ASIST
Gerald Benoît, Naresh Kumar Agarwal
2012 conf
ASIST
Naresh Kumar Agarwal, Yunjie (Calvin) Xu, Harrison Lawrence, Archana Agarwal
2012 conf
ASIST
Naresh Kumar Agarwal
2012 conf
ASIST
Mirna E. Turcios, Naresh Kumar Agarwal, Linda Watkins
2012 conf
ASIST
Karen A. Miller, Naresh Kumar Agarwal
2011 J jnl
J. Assoc. Inf. Sci. Technol.
Naresh Kumar Agarwal, Yunjie Calvin Xu, Danny C. C. Poo
2011 conf
iConference
Naresh Kumar Agarwal
2011 conf
ASIST
Naresh Kumar Agarwal
2009 conf
ASIST
Naresh Kumar Agarwal, Yunjie (Calvin) Xu, Danny C. C. Poo
2008 J jnl
Int. J. Bus. Inf. Syst.
Naresh Kumar Agarwal, Danny C. C. Poo
2007 conf
PACIS
Naresh Kumar Agarwal, Zhen Wang, Yunjie Xu, Danny C. C. Poo
2007 conf
HCI (8)
Naresh Kumar Agarwal, Danny C. C. Poo
2007 C conf
ICIS
Naresh Kumar Agarwal, Keat Houng Tan, Danny C. C. Poo
2006 C conf
APSEC
Naresh Kumar Agarwal, Danny C. C. Poo, Teo Keng Yong
2006 conf
EDOC Workshops
Naresh Kumar Agarwal, Danny C. C. Poo
2006 J jnl
Int. J. Bus. Inf. Syst.
Naresh Kumar Agarwal, Danny C. C. Poo
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())