James L. Rash

48 papers B 5C 6Misc 2Journal 9Unranked 20
YearRankTypeTitle / Venue / Authors
2012 ch.
Conquering Complexity
Mike Hinchey, James L. Rash, Walter Truszkowski, Christopher A. Rouff, Roy Sterritt
2011 C ed.
SEW
James L. Rash, Christopher A. Rouff
2010 book
Walt Truszkowski, Harold L. Hallock, Christopher A. Rouff, Jay Karlin, James L. Rash, Michael G. Hinchey, Roy Sterritt
2008 conf
IMCSIT
Michael G. Hinchey, James L. Rash, Walter Truszkowski, Roy Sterritt, Christopher A. Rouff
2007 Misc conf
SAC
Michael G. Hinchey, Yuan-Shun Dai, James L. Rash, Walt Truszkowski, Manish Madhusoodan
2007 J jnl
Sci. Comput. Program.
Joaquín Peña, Michael G. Hinchey, Manuel Resinas, Roy Sterritt, James L. Rash
2007 B conf
AINA
Michael G. Hinchey, Yuan-Shun Dai, Christopher A. Rouff, James L. Rash, Mingrui Qi
2006 C conf
DASC
Yuan-Shun Dai, Michael G. Hinchey, Manish Madhusoodan, James L. Rash, Xukai Zou
2006 J jnl
Artif. Intell. Rev.
James L. Rash, Michael G. Hinchey, Christopher A. Rouff, Denis Gracanin, John Erickson
2006 J jnl
Comput. Commun.
Michael G. Hinchey, James L. Rash, Christopher A. Rouff, Denis Gracanin
2006 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Walter Truszkowski, Michael G. Hinchey, James L. Rash, Christopher A. Rouff
2006 conf
BICC
Tiziana Margaria, Michael G. Hinchey, Harald Raffelt, James L. Rash, Christopher A. Rouff, Bernhard Steffen
2006 conf
MBEES
Michael G. Hinchey, Tiziana Margaria, James L. Rash, Christopher A. Rouff, Bernhard Steffen
2006 J jnl
Int. J. Softw. Tools Technol. Transf.
Christopher A. Rouff, Michael G. Hinchey, Walter Truszkowski, James L. Rash
2006 ed.
WRAC
Michael G. Hinchey, Patricia Rago, James L. Rash, Christopher A. Rouff, Roy Sterritt, Walt Truszkowski
2006 conf
Software Engineering Research and Practice
Joaquín Peña, Michael G. Hinchey, Manuel Resinas, Roy Sterritt, James L. Rash
2006 J jnl
Sci. Comput. Program.
Roy Sterritt, Christopher A. Rouff, Michael G. Hinchey, James L. Rash, Walter Truszkowski
2005 conf
ECBS
Michael G. Hinchey, James L. Rash, Christopher A. Rouff
2005 conf
CSB Workshops
James L. Rash, Michael G. Hinchey, Denis Gracanin
2005 conf
ICAC
Christopher A. Rouff, Michael G. Hinchey, James L. Rash, Walter Truszkowski, Roy Sterritt
2005 conf
Software Engineering Research and Practice
Michael G. Hinchey, James L. Rash, Walter Truszkowski, Christopher A. Rouff, Roy Sterritt
2005 conf
ICPADS (2)
Michael G. Hinchey, James L. Rash, Walt Truszkowski, Christopher A. Rouff, Roy Sterritt
2005 conf
ICPADS (2)
Michael G. Hinchey, James L. Rash, Christopher A. Rouff
2005 conf
ECBS
James L. Rash, Michael G. Hinchey, Christopher A. Rouff, Denis Gracanin, John Erickson
2005 ed.
FAABS
Michael G. Hinchey, James L. Rash, Walt Truszkowski, Christopher A. Rouff
2005 B conf
ICECCS
James L. Rash, Michael G. Hinchey, Christopher A. Rouff, Denis Gracanin
2005 J jnl
Comput. Networks
James L. Rash, Keith Hogie, Ralph Casasanta
2005 C conf
FMICS
Michael G. Hinchey, Christopher A. Rouff, James L. Rash, Walter Truszkowski
2005 conf
Software Engineering Research and Practice
Roy Sterritt, Christopher A. Rouff, James L. Rash, Walter Truszkowski, Michael G. Hinchey
2005 conf
VSTTE
Michael G. Hinchey, James L. Rash, Christopher A. Rouff
2005 conf
ICPADS (2)
Christopher A. Rouff, Michael G. Hinchey, James L. Rash, Walt Truszkowski, Roy Sterritt
2005 conf
EUC Workshops
Roy Sterritt, Michael G. Hinchey, James L. Rash, Walt Truszkowski, Christopher A. Rouff, Denis Gracanin
2005 C conf
SEW
Christopher A. Rouff, Michael G. Hinchey, James L. Rash, Walter Truszkowski
2005 C conf
IPCCC
Michael G. Hinchey, James L. Rash, Christopher A. Rouff
2005 conf
ICPADS (1)
Christopher A. Rouff, Michael G. Hinchey, Walt Truszkowski, James L. Rash
2005 J jnl
Trans. SDPS
Michael G. Hinchey, James L. Rash, Walter Truszkowski, Christopher A. Rouff, Roy Sterritt
2004 conf
ECBS
Walt Truszkowski, James L. Rash, Christopher A. Rouff, Michael G. Hinchey
2004 conf
ISoLA (Preliminary proceedings)
Christopher A. Rouff, Amy Vanderbilt, Walter Truszkowski, James L. Rash, Michael G. Hinchey
2004 J jnl
IT Prof.
Walt Truszkowski, Mike Hinchey, James L. Rash, Christopher A. Rouff
2004 B conf
SEFM
Christopher A. Rouff, Amy Vanderbilt, Michael G. Hinchey, Walt Truszkowski, James L. Rash
2004 conf
ECBS
Walt Truszkowski, James L. Rash, Christopher A. Rouff, Michael G. Hinchey
2004 conf
ECBS
Christopher A. Rouff, Amy Vanderbilt, Michael G. Hinchey, Walt Truszkowski, James L. Rash
2004 B conf
ICECCS
Christopher A. Rouff, Amy Vanderbilt, Walt Truszkowski, James L. Rash, Michael G. Hinchey
2004 Misc conf
AIAI
Christopher A. Rouff, Amy Vanderbilt, Walt Truszkowski, James L. Rash, Michael G. Hinchey
2003 ed.
FAABS
Michael G. Hinchey, James L. Rash, Walt Truszkowski, Christopher A. Rouff, Diana F. Gordon-Spears
2003 C conf
SEW
Christopher A. Rouff, Walter Truszkowski, James L. Rash, Michael G. Hinchey
2001 ed.
FAABS
James L. Rash, Christopher A. Rouff, Walt Truszkowski, Diana F. Gordon, Michael G. Hinchey
2000 B conf
ICECCS
Christopher A. Rouff, James L. Rash, Michael G. Hinchey
redb/extractors/pe_extractors/pe_overlay.py
← Index redb/extractors/pe_extractors/pe_overlay.py python
from hashlib import md5, sha1, sha256
import inspect
from datetime import datetime, timezone
from typing import Any

import magic
from magika import Magika

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEOverlay


class PEOverlayExtractor(PEExtractor):

    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,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_overlay"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.PE_OVERLAY.value

    def _extract_pe_overlay(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        overlay = self.pe.get_overlay()
        if overlay:
            return PEOverlay(
                _id=sha256(overlay).hexdigest(),
                overlay_size=len(overlay),
                overlay_entropy=self.calculate_entropy(overlay),
                overlay_offset=self.pe.get_overlay_data_start_offset(),
                overlay_mimetype=magic.from_buffer(overlay, mime=True),
                overlay_type=magic.from_buffer(overlay),
                overlay_magika=Magika().identify_bytes(overlay).output.ct_label,
                overlay_sha256=sha256(overlay).hexdigest(),
                overlay_sha1=sha1(overlay).hexdigest(),
                overlay_md5=md5(overlay).hexdigest(),
            )
        return None

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            overlay = self._extract_pe_overlay()
            # self.export_to_elastic([overlay])  # Let the exporters handle this
            return overlay
        except Exception as e:
            self.log.error(f"Error extracting PE overlay: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            overlay = self.extract()
            if overlay is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            data.append([
                self.sha256,              # sha256
                self.md5,                 # md5
                self.sha1,                # sha1
                overlay.overlay_size,     # overlay_size
                overlay.overlay_entropy,  # overlay_entropy
                overlay.overlay_offset,   # overlay_offset
                overlay.overlay_mimetype, # overlay_mimetype
                overlay.overlay_type,     # overlay_type
                overlay.overlay_magika,   # overlay_magika
                overlay.overlay_sha256,   # overlay_sha256
                overlay.overlay_sha1,     # overlay_sha1
                overlay.overlay_md5,      # overlay_md5
                current_time             # analysis_date
            ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'overlay_size', 'overlay_entropy',
                'overlay_offset', 'overlay_mimetype', 'overlay_type', 'overlay_magika',
                'overlay_sha256', 'overlay_sha1', 'overlay_md5',
                'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'UInt64', 'Float64', 'UInt64',
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)',
                'FixedString(64)', 'FixedString(40)', 'FixedString(32)',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

    def get_clickhouse_table(self) -> str:
        return "redb_pe_overlays"