Ian W. Ricketts

34 papers A* 1A 5B 3C 1Misc 1Journal 9Unranked 11
YearRankTypeTitle / Venue / Authors
2013 Misc conf
EICS
Michael J. Heron, Vicki L. Hanson, Ian W. Ricketts
2013 J jnl
Int. J. Hum. Comput. Interact.
Michael J. Heron, Vicki L. Hanson, Ian W. Ricketts
2011 conf
PervasiveHealth
Lesley Axelrod, Geraldine Fitzpatrick, Madeline Balaam, Susan Mawson, Jane H. Burridge, Ian W. Ricketts, Penny Probert Smith, Tom Rodden
2011 A* conf
CHI
Madeline Balaam, Stefan Rennick Egglestone, Geraldine Fitzpatrick, Tom Rodden, Ann-Marie Hughes, Anna Wilkinson, Thomas Nind, Lesley Axelrod, Eric Charles Harris, Ian W. Ricketts, Susan Mawson, Jane H. Burridge
2009 conf
PervasiveHealth
Stefan Rennick Egglestone, Lesley Axelrod, Thomas Nind, Ruth Turk, Anna Wilkinson, Jane H. Burridge, Geraldine Fitzpatrick, Susan Mawson, Zoe Robertson, Ann-Marie Hughes, Kher Hui Ng, Will Pearson, Nour Shublaq, Penny Probert Smith, Ian W. Ricketts, Tom Rodden
2009 conf
PervasiveHealth
Kenny Morrison, Ian W. Ricketts, Martyn C. Jones, Derek W. Johnston, Nigel B. Pitts, Frank M. Sullivan
2009 conf
INTERACT (2)
Kathryn L. Went, Peter Gregor, Ian W. Ricketts
2009 J jnl
Image Vis. Comput.
Matthias Seise, Stephen J. McKenna, Ian W. Ricketts, Carlos A. Wigderowitz
2008 J jnl
Comput. Medical Imaging Graph.
C. Stuart Kerrigan, Stephen J. McKenna, Ian W. Ricketts, Carlos A. Wigderowitz
2007 J jnl
Br. J. Educ. Technol.
Samson O. Gunga, Ian W. Ricketts
2007 J jnl
Int. J. Comput. Vis.
Timothy J. Roberts, Stephen J. McKenna, Ian W. Ricketts
2007 J jnl
IEEE Trans. Medical Imaging
Matthias Seise, Stephen J. McKenna, Ian W. Ricketts, Carlos A. Wigderowitz
2006 J jnl
Image Vis. Comput.
Timothy J. Roberts, Stephen J. McKenna, Ian W. Ricketts
2006 A conf
BMVC
Matthias Seise, Stephen J. McKenna, Ian W. Ricketts, Carlos A. Wigderowitz
2005 A conf
BMVC
Matthias Seise, Stephen J. McKenna, Ian W. Ricketts, Carlos A. Wigderowitz
2004 conf
ECCV (4)
Timothy J. Roberts, Stephen J. McKenna, Ian W. Ricketts
2003 conf
HCI (4)
Saqib Ashraf, Ian W. Ricketts
2002 A conf
BMVC
Timothy J. Roberts, Stephen J. McKenna, Ian W. Ricketts
2002 A conf
ASSETS
Saqib Ashraf, Andrew Judson, Ian W. Ricketts, Annalu Waller, Norman Alm, Brian Gordon, Fiona MacAulay, Jan K. Brodie, Maria Etchels, Audrey Warden, Alfred J. Shearer
2002 J jnl
Image Vis. Comput.
Gordon McAllister, Stephen J. McKenna, Ian W. Ricketts
2002 A conf
ASSETS
Fiona MacAulay, Andrew Judson, Maria Etchels, Saqib Ashraf, Ian W. Ricketts, Annalu Waller, Jan K. Brodie, Norman Alm, Audrey Warden, Alfred J. Shearer, Brian Gordon
2002 conf
ICPR (2)
Gordon McAllister, Stephen J. McKenna, Ian W. Ricketts
2002 conf
ICPR (1)
Timothy J. Roberts, Stephen J. McKenna, Ian W. Ricketts
2001 C conf
IV
Mehran Sharghi, Ian W. Ricketts
2001 B conf
SMC
Fiona MacAulay, Andrew Judson, John L. Arnott, Maria Etchels, Saqib Ashraf, Ian W. Ricketts, Jan K. Brodie, Norman Alm, Annalu Waller, Audrey Warden, Alfred J. Shearer, Brian Gordon
2000 B conf
SMC
Niall Cairnie, Ian W. Ricketts, Stephen J. McKenna, Gordon McAllister
2000 conf
EUROMICRO
Andrew Judson, Ian W. Ricketts, Annalu Waller, Norman Alm, Brian Gordon, Fiona MacAulay, Jan K. Brodie, Maria Etchels, Audrey Warden, Alfred J. Shearer
2000 B conf
SMC
Gordon McAllister, Stephen J. McKenna, Ian W. Ricketts
1998 book
Managing your software project - a student's guide.
Ian W. Ricketts
1998 book
Software-Projektmanagement kompakt - für Studium und Praxis.
Ian W. Ricketts
1996 conf
ICECS
Ahmad T. Al-Taani, Ian W. Ricketts, Alistair Y. Cairns
1996 conf
Gesture Workshop
J. Cracknell, C. Ramsay, A. Y. Cairns, Peter Gregor, Ian W. Ricketts
1993 J jnl
Image Vis. Comput.
G. Manos, A. Y. Cairns, Ian W. Ricketts, David Sinclair
1977
Ian W. Ricketts
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())