Narayan Desai

62 papers A 5B 2C 20Journal 9Unranked 25
YearRankTypeTitle / Venue / Authors
2020 conf
IPDPS Workshops
Dalibor Klusácek, Walfredo Cirne, Narayan Desai
2020 C ed.
JSSPP
Dalibor Klusácek, Walfredo Cirne, Narayan Desai
2019 C ed.
JSSPP
Dalibor Klusácek, Walfredo Cirne, Narayan Desai
2018 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai, Dalibor Klusácek
2018 C ed.
JSSPP
Dalibor Klusácek, Walfredo Cirne, Narayan Desai
2017 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai, Dalibor Klusácek
2017 C ed.
JSSPP
Narayan Desai, Walfredo Cirne
2016 J jnl
IEEE Trans. Parallel Distributed Syst.
Zhou Zhou, Xu Yang, Zhiling Lan, Paul Rich, Wei Tang, Vitali A. Morozov, Narayan Desai
2016 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai
2016 C conf
JSSPP
Narayan Desai, Walfredo Cirne
2015 J jnl
PLoS Comput. Biol.
Andreas Wilke, Jared Bischof, Travis Harrison, Tom Brettin, Mark D'Souza, Wolfgang Gerlach, Hunter Matthews, Tobias Paczian, Jared Wilkening, Elizabeth M. Glass, Narayan Desai, Folker Meyer
2015 A conf
IPDPS
Zhou Zhou, Xu Yang, Zhiling Lan, Paul Rich, Wei Tang, Vitali A. Morozov, Narayan Desai
2015 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai
2015 C ed.
JSSPP
Walfredo Cirne, Narayan Desai
2015 conf
BDC
Andreas Wilke, Wolfgang Gerlach, Travis Harrison, Tobias Paczian, Wei Tang, William L. Trimble, Jared Wilkening, Narayan Desai, Folker Meyer
2014 C conf
CloudCom
Wei Tang, Jonathan Jenkins, Folker Meyer, Robert B. Ross, Rajkumar Kettimuthu, Linda Winkler, Xi Yang, Thomas Lehman, Narayan Desai
2014 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai
2014 C ed.
JSSPP
Narayan Desai, Walfredo Cirne
2014 conf
DataCloud@SC
Wolfgang Gerlach, Wei Tang, Kevin P. Keegan, Travis Harrison, Andreas Wilke, Jared Bischof, Mark D'Souza, Scott Devoid, Daniel E. Murphy-Olson, Narayan Desai, Folker Meyer
2014 conf
IEEE BigData
Wei Tang, Jared Bischof, Narayan Desai, Kanak Mahadik, Wolfgang Gerlach, Travis Harrison, Andreas Wilke, Folker Meyer
2013 conf
IEEE BigData
Wei Tang, Jared Wilkening, Narayan Desai, Wolfgang Gerlach, Andreas Wilke, Folker Meyer
2013 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai
2013 C ed.
JSSPP
Walfredo Cirne, Narayan Desai, Eitan Frachtenberg, Uwe Schwiegelshohn
2013 J jnl
J. Parallel Distributed Comput.
Wei Tang, Narayan Desai, Daniel Buettner, Zhiling Lan
2013 ed.
LISA
Narayan Desai, Kent Skaar
2013 J jnl
J. Supercomput.
Wei Tang, Narayan Desai, Venkatram Vishwanath, Daniel Buettner, Zhiling Lan
2013 conf
LISA
Scott Devoid, Narayan Desai, Lorin Hochstein
2013 C conf
JSSPP
Zhou Zhou, Zhiling Lan, Wei Tang, Narayan Desai
2013 J jnl
Parallel Comput.
Wei Tang, Dongxu Ren, Zhiling Lan, Narayan Desai
2012 conf
ICPP Workshops
Wei Tang, Dongxu Ren, Zhiling Lan, Narayan Desai
2012 conf
IPDPS Workshops
Walfredo Cirne, Narayan Desai, Eitan Frachtenberg, Uwe Schwiegelshohn
2011 J jnl
Concurr. Comput. Pract. Exp.
Andreas Wilke, Jared Wilkening, Elizabeth M. Glass, Narayan Desai, Folker Meyer
2011 A conf
IPDPS
Ziming Zheng, Li Yu, Wei Tang, Zhiling Lan, Rinku Gupta, Narayan Desai, Susan Coghlan, Daniel Buettner
2011 C conf
CLUSTER
Zhou Zhou, Wei Tang, Ziming Zheng, Zhiling Lan, Narayan Desai
2011 conf
IPDPS Workshops
Wei Tang, Zhiling Lan, Narayan Desai
2011 conf
ICPP Workshops
Wei Tang, Narayan Desai, Venkatram Vishwanath, Daniel Buettner, Zhiling Lan
2011 A conf
IPDPS
Wei Tang, Zhiling Lan, Narayan Desai, Daniel Buettner, Yongen Yu
2010 A conf
IPDPS
Wei Tang, Narayan Desai, Daniel Buettner, Zhiling Lan
2010 conf
MTAGS@SC
Wei Tang, Zhiling Lan, Narayan Desai, Daniel Buettner
2009 C conf
CLUSTER
Wei Tang, Zhiling Lan, Narayan Desai, Daniel Buettner
2009 B conf
ICPP
Narayan Desai, Darius Buntinas, Daniel Buettner, Pavan Balaji, Anthony Chan
2009 B conf
ICPADS
Pavan Balaji, Harish Naik, Narayan Desai
2009 C conf
CLUSTER
Jared Wilkening, Andreas Wilke, Narayan Desai, Folker Meyer
2008 C conf
CLUSTER
Narayan Desai, Pavan Balaji, P. Sadayappan, Mohammad Islam
2008 conf
ICPP Workshops
Narayan Desai, Rick Bradshaw, Ewing L. Lusk
2008 conf
LISA
Narayan Desai, Rick Bradshaw, Cory Lueninghoener, Andrew Cherry, Susan Coghlan, William Scullin
2008 conf
ICPP Workshops
Narayan Desai, Ewing L. Lusk, Daniel Buettner, Andrew Cherry, Theron Voran
2007 J jnl
Int. J. High Perform. Comput. Appl.
Narayan Desai, Ewing L. Lusk, Rick Bradshaw
2007 C conf
CLUSTER
Narayan Desai, Theron Voran, Ewing L. Lusk, Andrew Cherry
2006 J jnl
Int. J. High Perform. Comput. Appl.
Ewing L. Lusk, Narayan Desai, Rick Bradshaw, Andrew Lusk, Ralph Butler
2006 conf
LISA
Narayan Desai, Rick Bradshaw, Cory Lueninghoener
2006 J jnl
login Usenix Mag.
Narayan Desai, Rick Bradshaw, Joey Hagedorn
2006 conf
LISA
Narayan Desai
2005 conf
LISA
Narayan Desai, Rick Bradshaw, Scott Matott, Sandra Bittner, Susan Coghlan, Rémy Evard, Cory Lueninghoener, Ti Leggett, John-Paul Navarro, Gene Rackow, Craig Stacey, Tisha Stacey
2005 conf
PVM/MPI
Narayan Desai, Ewing L. Lusk, Rick Bradshaw
2005 A conf
IPDPS
Narayan Desai, Andrew Lusk, Rick Bradshaw, Ewing L. Lusk
2004 C conf
CLUSTER
Narayan Desai, Rick Bradshaw, Ewing L. Lusk, Ralf Butler
2004 conf
PVM/MPI
Narayan Desai, Rick Bradshaw, Andrew Lusk, Ewing L. Lusk
2003 C conf
CLUSTER
Narayan Desai, Andrew Lusk, Rick Bradshaw, Rémy Evard
2003 C conf
CLUSTER
Ralph Butler, Narayan Desai, Andrew Lusk, Ewing L. Lusk
2002 C conf
CLUSTER
Rémy Evard, Narayan Desai, John-Paul Navarro, Daniel Nurmi
2002 C conf
CLUSTER
John-Paul Navarro, Rémy Evard, Daniel Nurmi, Narayan Desai
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

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

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

            column_type_names = [
                'String', 'String', 'String', 'Nullable(String)',
                'Array(FixedString(64))', 'Array(LowCardinality(String))', 'Array(LowCardinality(String))',
                'Nullable(UInt8)', 'Nullable(String)', 'String',
                'UInt64', 'Float64', 'LowCardinality(String)',
                'LowCardinality(String)', 'LowCardinality(String)',
                'DateTime64(3, \'UTC\')',
                'DateTime64(3, \'UTC\')'
            ]

            return data, column_names, column_type_names

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