Ramsay Dyer

34 papers A* 2A 2B 1Journal 24Unranked 4
YearRankTypeTitle / Venue / Authors
2023 J jnl
Discret. Comput. Geom.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Mathijs Wintraecken
2021 J jnl
Discret. Comput. Geom.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, André Lieutier, Mathijs Wintraecken
2019 J jnl
J. Comput. Geom.
Ramsay Dyer, Gert Vegter, Mathijs Hubertus Maria Johannes Wintraecken
2018 J jnl
Discret. Comput. Geom.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Nikolay Martynchuk
2018 J jnl
Found. Comput. Math.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2018 A* conf
SoCG
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Mathijs Wintraecken
2018 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Mathijs Wintraecken
2017 J jnl
Comput. Geom.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Steve Y. Oudot
2016 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Nikolay Martynchuk
2016 J jnl
CoRR
Ramsay Dyer, Gert Vegter, Mathijs Wintraecken
2015 A conf
ESA
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2015 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2015 A* conf
SoCG
Ramsay Dyer, Gert Vegter, Mathijs Wintraecken
2015 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2014 J jnl
Int. J. Comput. Geom. Appl.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2014 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh, Steve Y. Oudot
2014 J jnl
CoRR
Ramsay Dyer, Gert Vegter, Mathijs Wintraecken
2013 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2013 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2013 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2013 J jnl
CoRR
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2013 J jnl
Int. J. Comput. Geom. Appl.
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2012 J jnl
ACM Trans. Graph.
Kai Xu, Hao Zhang, Wei Jiang, Ramsay Dyer, Zhi-Quan Cheng, Ligang Liu, Baoquan Chen
2012 conf
SCG
Jean-Daniel Boissonnat, Ramsay Dyer, Arijit Ghosh
2011 J jnl
Comput. Graph.
Tamal K. Dey, Ramsay Dyer, Lei Wang
2011 J jnl
Comput. Graph.
Matt Olson, Ramsay Dyer, Hao Zhang, Alla Sheffer
2010 J jnl
Comput. Graph. Forum
Hao Zhang, Oliver van Kaick, Ramsay Dyer
2009 ch.
Mathematical Foundations of Scientific Visualization, Computer Graphics, and Massive Data Exploration
Alireza Entezari, Ramsay Dyer, Torsten Möller
2009 conf
Symposium on Solid and Physical Modeling
Ramsay Dyer, Hao Zhang, Torsten Möller
2008 J jnl
Comput. Graph. Forum
Ramsay Dyer, Hao Zhang, Torsten Möller
2007 B conf
Symposium on Geometry Processing
Ramsay Dyer, Hao Zhang, Torsten Möller
2007 conf
Eurographics (State of the Art Reports)
Hao (Richard) Zhang, Oliver van Kaick, Ramsay Dyer
2007 conf
Symposium on Solid and Physical Modeling
Ramsay Dyer, Hao Zhang, Torsten Möller
2004 A conf
IEEE Visualization
Alireza Entezari, Ramsay Dyer, Torsten Möller
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())