Jamie Simpson

48 papers A 1B 3Misc 1Journal 43
YearRankTypeTitle / Venue / Authors
2025 B conf
CPM
Gabriele Fici, Jeffrey O. Shallit, Jamie Simpson
2024 J jnl
Theor. Comput. Sci.
Ghajendran Poovanandran, Jamie Simpson, Wen Chean Teh
2024 J jnl
CoRR
Gabriele Fici, Jeffrey O. Shallit, Jamie Simpson
2022 J jnl
Remote. Sens.
Jamie Simpson, Eleanor Bruce, Kevin P. Davies, Paul Barber
2020 J jnl
Australas. J Comb.
Adam Mammoliti, Jamie Simpson
2020 J jnl
Australas. J Comb.
Jamie Simpson
2019 J jnl
Integers
Ofir Schnabel, Jamie Simpson
2019 J jnl
Theor. Comput. Sci.
Amy Glen, Jamie Simpson, W. F. Smyth
2019 J jnl
Australas. J Comb.
Amy Glen, Jamie Simpson, W. F. Smyth
2018 J jnl
CoRR
Amy Glen, Jamie Simpson, W. F. Smyth
2017 J jnl
Electron. J. Comb.
Amy Glen, Jamie Simpson, W. F. Smyth
2017 J jnl
CoRR
Amy Glen, Jamie Simpson, William F. Smyth
2017 J jnl
CoRR
Amy Glen, Jamie Simpson, W. F. Smyth
2016 J jnl
Theor. Comput. Sci.
Jamie Simpson
2016 J jnl
J. Autom. Lang. Comb.
Ali Alatabbi, Abu Sayed Md. Sohidull Islam, Mohammad Sohel Rahman, Jamie Simpson, W. F. Smyth
2016 A conf
ASSETS
Stephanie Ludi, Jamie Simpson, Wil Merchant
2015 J jnl
CoRR
Ali Alatabbi, A. S. M. Sohidull Islam, Mohammad Sohel Rahman, Jamie Simpson, William F. Smyth
2015 J jnl
Graphs Comb.
Greg Gamble, Jamie Simpson
2014 J jnl
Theor. Comput. Sci.
Aviezri S. Fraenkel, Jamie Simpson
2014 J jnl
Theor. Comput. Sci.
Jamie Simpson
2013 J jnl
Eur. J. Comb.
Jamie Simpson
2013 J jnl
Integers
Jamie Simpson
2013 J jnl
CoRR
Amy Glen, Jamie Simpson
2013 J jnl
Theor. Comput. Sci.
Amy Glen, Jamie Simpson
2012 J jnl
Australas. J Comb.
Uwe Leck, Ian T. Roberts, Jamie Simpson
2012 J jnl
J. Discrete Algorithms
Frantisek Franek, Robert C. G. Fuller, Jamie Simpson, William F. Smyth
2010 J jnl
Australas. J Comb.
Ian T. Roberts, Jamie Simpson
2010 J jnl
Australas. J Comb.
Jamie Simpson
2010 Misc conf
PSC
Hideo Bannai, Mathieu Giraud, Kazuhiko Kusano, Wataru Matsubara, Ayumi Shinohara, Jamie Simpson
2009 J jnl
Discret. Math.
Gerry Myerson, Jacky Poon, Jamie Simpson
2008 J jnl
Theor. Comput. Sci.
Simon J. Puglisi, Jamie Simpson, William F. Smyth
2008 J jnl
Australas. J Comb.
Simon J. Puglisi, Jamie Simpson
2008 J jnl
Electron. J. Comb.
Jamie Simpson, Simon J. Puglisi
2007 J jnl
Theor. Comput. Sci.
Jamie Simpson
2005 J jnl
Discret. Appl. Math.
Aviezri S. Fraenkel, Jamie Simpson
2005 J jnl
Australas. J Comb.
Peter A. B. Pleasants, Harry Ray, Jamie Simpson
2004 J jnl
Am. Math. Mon.
Y.-F. S. Pétermann, C. T. Stretch, Jamie Simpson
2003 J jnl
Theor. Comput. Sci.
John A. Ellis, Frank Ruskey, Joe Sawada, Jamie Simpson
2002 J jnl
Electron. J. Comb.
James D. Currie, Jamie Simpson
2001 B conf
CPM
Aviezri S. Fraenkel, Jamie Simpson
2001 J jnl
Electron. J. Comb.
Jamie Simpson
2001 J jnl
J. Autom. Lang. Comb.
Costas S. Iliopoulos, Jamie Simpson
2001 J jnl
Electron. J. Comb.
Aviezri S. Fraenkel, Tamar Seeman, Jamie Simpson
1999 J jnl
Theor. Comput. Sci.
Aviezri S. Fraenkel, Jamie Simpson
1998 J jnl
Discret. Math.
Sharon G. Boswell, Jamie Simpson
1998 J jnl
J. Comb. Theory A
Aviezri S. Fraenkel, Jamie Simpson
1997 B conf
CPM
Aviezri S. Fraenkel, Jamie Simpson, Mike Paterson
1995 J jnl
Electron. J. Comb.
Aviezri S. Fraenkel, Jamie Simpson
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())