Kanchan Manna

27 papers C 4Journal 14Unranked 9
YearRankTypeTitle / Venue / Authors
2025 C conf
ISCAS
Sucharita Samanta, Nandan Surani, Devarsh Patel, Kanchan Manna
2025 conf
ASAP
Sucharita Samanta, Nandan Surani, Devarsh Patel, Vikas Dubey, Kanchan Manna
2025 conf
ISQED
Anantha Kamath, Aditya Handur-Kulkarni, Himanshu Singh, Kanchan Manna
2024 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ramesh Sambangi, Kanchan Manna, Vinay Chakravarthi Gogineni, Santanu Chattopadhyay, Sudipta Mahapatra
2024 C conf
VLSI-SoC
Tejas Musale, Arun Ganti, Ankur Gogoi, Kanchan Manna
2023 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Ramesh Sambangi, Arun Sammit Pandey, Kanchan Manna, Sudipta Mahapatra, Santanu Chattopadhyay
2023 J jnl
Integr.
Ankur Gogoi, Bibhas Ghoshal, Kanchan Manna
2022 J jnl
Integr.
Ankur Gogoi, Bibhas Ghoshal, Akash Sachan, Rakesh Kumar, Kanchan Manna
2019 J jnl
J. Circuits Syst. Comput.
Priyanka Choudhury, Kanchan Manna, Vivek Rai, Sambhu Nath Pradhan
2019 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Kanchan Manna, Chatla Swami Sagar, Santanu Chattopadhyay, Indranil Sengupta
2018 J jnl
IEEE Trans. Computers
Kanchan Manna, Priyajit Mukherjee, Santanu Chattopadhyay, Indranil Sengupta
2016 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Bibhas Ghoshal, Kanchan Manna, Santanu Chattopadhyay, Indranil Sengupta
2016 J jnl
ACM Trans. Embed. Comput. Syst.
Kanchan Manna, Shivam Swami, Santanu Chattopadhyay, Indranil Sengupta
2016 conf
ISVLSI
Kanchan Manna, Santanu Chattopadhyay, Indranil Sengupta
2016 conf
ISVLSI
Kanchan Manna, Chatla Swamy Sagar, Santanu Chattopadhyay, Indranil Sengupta
2015 J jnl
J. Circuits Syst. Comput.
Pradip Kumar Sahu, Kanchan Manna, Tapan Shah, Santanu Chattopadhyay
2015 conf
ISVLSI
Kanchan Manna, Vadapalli Shanmukha Sri Teja, Santanu Chattopadhyay, Indranil Sengupta
2015 J jnl
Int. J. High Perform. Syst. Archit.
Kanchan Manna, Chakradhar Reddy Veeramreddy, Santanu Chattopadhyay, Indranil Sengupta
2014 C conf
ISCAS
Navonil Chatterjee, Santanu Chattopadhyay, Kanchan Manna
2014 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Pradip Kumar Sahu, Tapan Shah, Kanchan Manna, Santanu Chattopadhyay
2014 J jnl
J. Syst. Archit.
Pradip Kumar Sahu, Kanchan Manna, Nisarg Shah, Santanu Chattopadhyay
2014 C conf
VLSI-SoC
Kanchan Manna, Santanu Chattopadhyay, Indranil Sengupta
2013 conf
VDAT
Kanchan Manna, Shailesh Singh, Santanu Chattopadhyay, Indranil Sengupta
2012 J jnl
Int. J. High Perform. Syst. Archit.
Kanchan Manna, Santanu Chattopadhaya, Indranil Sengupta
2009 conf
ARTCom
Santanu Kundu, Kanchan Manna, Shobhit Gupta, Kundan Kumar, Ritesh Parikh, Santanu Chattopadhyay
2008 conf
ICIIS
Subhadip Kundu, Santanu Chattopadhyay, Kanchan Manna
2008 conf
ICIIS
Santanu Kundu, Radha Purnima Dasari, Santanu Chattopadhyay, Kanchan Manna
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())