Walter Dosch

72 papers A* 2B 1C 16Misc 12Journal 7Unranked 31
YearRankTypeTitle / Venue / Authors
2009 conf
GI Jahrestagung
Walter Dosch, Michael Hanus
2009 B conf
SOFSEM
Walter Dosch, Annette Stümpel
2009 C conf
AICCSA
Walter Dosch, Annette Stümpel, Nontasak Janchum, Pornsiri Muenchaisri
2008 conf
ICONS
Walter Dosch
2008 C ed.
SERA
Walter Dosch, Roger Y. Lee, Petr Tuma, Thierry Coupaye
2008 conf
ITNG
Walter Dosch, Annette Stümpel, Tõnu Tamme
2008 Misc conf
CATA
Walter Dosch
2007 Misc conf
CATA
Walter Dosch
2007 C conf
SERA
Walter Dosch
2007 conf
IMECS
Walter Dosch
2007 C conf
AICCSA
Walter Dosch
2007 C conf
ICSEA
Bastian Dölle, Walter Dosch
2007 conf
ITNG
Walter Dosch, Annette Stümpel
2007 conf
ITNG
Walter Dosch, Gongzhu Hu
2007 conf
IMECS
Walter Dosch
2007 Misc conf
CATA
Walter Dosch, Wenying Feng
2006 ed.
SEDE
Walter Dosch, William Perrizo
2006 conf
Ershov Memorial Conference
Walter Dosch, Annette Stümpel
2006 Misc conf
CATA
Walter Dosch, Tõnu Tamme
2006 C conf
SERA
Walter Dosch
2006 conf
ICN/ICONS/MCL
Walter Dosch
2006 C conf
SNPD
Walter Dosch, Wuttipong Ruanthong, Annette Stümpel
2006 conf
ACIS-ICIS
Walter Dosch, Wuttipong Ruanthong
2006 conf
ITNG
Walter Dosch
2006 J jnl
J. Comput. Methods Sci. Eng.
Walter Dosch
2005 C conf
APSEC
Walter Dosch
2005 C conf
SERA
Walter Dosch
2005 J jnl
J. Comput. Methods Sci. Eng.
Walter Dosch
2005 Misc conf
CATA
Walter Dosch, Merik Meriste
2005 conf
IASSE
Walter Dosch, W. L. Yeung
2005 conf
IASSE
Walter Dosch
2005 conf
ACIS-ICIS
Walter Dosch
2005 C ed.
SERA
Walter Dosch, Roger Y. Lee, Chisu Wu
2005 conf
FInCo@ETAPS
Leo Motus, Merik Meriste, Walter Dosch
2005 C conf
APSEC
Bastian Dölle, Walter Dosch
2004 Misc conf
CATA
Walter Dosch, Annette Stümpel
2004 conf
Software Engineering Research and Practice
Walter Dosch, Annette Stümpel
2004 conf
Software Engineering Research and Practice
Walter Dosch
2004 C conf
SERA
Walter Dosch, Annette Stümpel
2003 C conf
SERA
Walter Dosch, Sönke Magnussen
2003 Misc conf
CATA
Walter Dosch
2003 C ed.
SNPD
Walter Dosch, Roger Y. Lee
2003 C conf
Modelling and Simulation
Walter Dosch
2001 J jnl
Nord. J. Comput.
Walter Dosch, Sönke Magnussen
2001 conf
PDCS
Walter Dosch
2001 conf
WADT
Walter Dosch, Sönke Magnussen
2000 Misc conf
CATA
Walter Dosch, Annette Stümpel
2000 Misc conf
CATA
Walter Dosch, Sönke Magnussen
1999 Misc conf
PDPTA
Walter Dosch, Bernd Wiedemann
1999 conf
Scottish Functional Programming Workshop
Walter Dosch, Bernd Wiedemann
1998 Misc conf
CATA
Walter Dosch
1997 Misc conf
PDPTA
Walter Dosch
1996 conf
Ershov Memorial Conference
Walter Dosch
1996 conf
Implementation of Functional Languages
Walter Dosch, Bernhard Möller
1995 conf
GULP-PRODE
Walter Dosch
1993 J jnl
Theor. Comput. Sci.
Walter Dosch
1992 conf
ISTCS
Walter Dosch
1991 conf
Methods of Programming
Carlos Delgado Kloos, Walter Dosch
1991 C conf
ISI
Walter Dosch
1987
Walter Dosch
1985 book
Friedrich L. Bauer, Rudolf Berghammer, Manfred Broy, Walter Dosch, Franz Geiselbrechtinger, Rupert Gnatz, E. Hangel, Wolfgang Hesse, Bernd Krieg-Brückner, Alfred Laut, Thomas Matzner, Bernhard Möller, Friederike Nickl, Helmuth Partsch, Peter Pepper, Klaus Samelson, Martin Wirsing, Hans Wössner
1984 conf
LISP and Functional Programming
Walter Dosch, Bernhard Möller
1984 conf
ADT
Bernhard Möller, Walter Dosch
1984 conf
INFOS
Walter Dosch
1983 conf
GI Jahrestagung
Walter Dosch, Bernhard Möller
1983 J jnl
Acta Informatica
Martin Wirsing, Peter Pepper, Helmuth Partsch, Walter Dosch
1982 J jnl
Inform. Spektrum
Peter Pepper, Manfred Broy, Friedrich L. Bauer, Helmuth Partsch, Walter Dosch, Martin Wirsing
1982 A* conf
VLDB
Walter Dosch, Gianfranco Mascari, Martin Wirsing
1981 conf
GI Jahrestagung
Manfred Broy, Walter Dosch, Bernhard Möller, Martin Wirsing
1981 J jnl
Sci. Comput. Program.
Friedrich L. Bauer, Manfred Broy, Walter Dosch, Rupert Gnatz, Bernd Krieg-Brückner, Alfred Laut, M. Luckmann, Thomas Matzner, Bernhard Möller, Helmuth Partsch, Peter Pepper, Klaus Samelson, Ralf Steinbrüggen, Martin Wirsing, Hans Wössner
1980 conf
GI Jahrestagung
Walter Dosch, Martin Wirsing, Giorgio Ausiello, Gianfranco Mascari
1979 A* conf
ICALP
Manfred Broy, Walter Dosch, Helmuth Partsch, Peter Pepper, Martin Wirsing
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())