Randolph E. Bank

37 papers Journal 34
YearRankTypeTitle / Venue / Authors
2019 J jnl
Comput. Vis. Sci.
Randolph E. Bank
2019 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Harry Yserentant
2019 J jnl
J. Sci. Comput.
Randolph E. Bank, Yuwen Li
2017 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Chris Deotte
2017 J jnl
J. Comput. Appl. Math.
Randolph E. Bank, Panayot S. Vassilevski, Ludmil T. Zikatanov
2017 J jnl
Numerische Mathematik
Randolph E. Bank, Jeffrey S. Ovall
2017 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Chris Deotte
2015 J jnl
Numerische Mathematik
Randolph E. Bank, Harry Yserentant
2014 J jnl
Numerische Mathematik
Randolph E. Bank, Harry Yserentant
2013 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Maximilian S. Metti
2013 book
Randolph E. Bank, Michael J. Holst, Olof B. Widlund, Jinchao Xu
2013 ch.
Domain Decomposition Methods in Science and Engineering XX
Randolph E. Bank, Hieu Nguyen
2013 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Asieh Parsania, Stefan A. Sauter
2010 J jnl
Comput. Vis. Sci.
Randolph E. Bank, Harry Yserentant
2007 J jnl
Adv. Eng. Softw.
Randolph E. Bank
2007 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, Jeffrey S. Ovall
2007 J jnl
SIAM J. Numer. Anal.
Randolph E. Bank, Jinchao Xu, Bin Zheng
2006 J jnl
SIAM J. Matrix Anal. Appl.
Randolph E. Bank, Justin W. L. Wan, Zhenpeng Qu
2004 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, Shaoying Lu
2003 J jnl
SIAM Rev.
Randolph E. Bank, Michael J. Holst
2003 J jnl
SIAM J. Numer. Anal.
Randolph E. Bank, Jinchao Xu
2003 J jnl
SIAM J. Numer. Anal.
Randolph E. Bank, Jinchao Xu
2002 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, Peter K. Jimack, Sarfraz Ahmad Nadeem, Sergey V. Nepomnyaschikh
2002 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, R. Kent Smith
2002 J jnl
SIAM J. Numer. Anal.
Yingjie Liu, Randolph E. Bank, Todd F. Dupont, Sonia Garcia, Rafael F. Santos
2001 J jnl
Concurr. Comput. Pract. Exp.
Randolph E. Bank, Peter K. Jimack
2000 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, Michael J. Holst
1999 J jnl
Numerische Mathematik
Randolph E. Bank, Christian Wagner
1999 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, R. Kent Smith
1998 book
PLTMG - a software package for solving elliptic partial differential equations: users' guide 8.0.
Randolph E. Bank
1994 J jnl
Numer. Algorithms
Randolph E. Bank, Tony F. Chan
1993 J jnl
Adv. Comput. Math.
Randolph E. Bank, Craig C. Douglas
1990 J jnl
SIAM J. Sci. Comput.
Randolph E. Bank, Donald J. Rose
1989 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Josef F. Burgler, Randolph E. Bank, Wolfgang Fichtner, R. Kent Smith
1985 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Randolph E. Bank, William M. Coughran Jr., Wolfgang Fichtner, Eric H. Grosse, Donald J. Rose, R. Kent Smith
1981 J jnl
Computing
Randolph E. Bank, Andrew H. Sherman
1978 J jnl
ACM Trans. Math. Softw.
Randolph E. Bank
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())