Osama Masoud

31 papers A* 7A 5B 3Journal 12Unranked 4
YearRankTypeTitle / Venue / Authors
2019 B conf
Image Processing
Yan Yang, Osama Masoud
2009 J jnl
Comput. Vis. Image Underst.
Dongwei Cao, Osama Masoud, Daniel Boley, Nikolaos Papanikolopoulos
2009 J jnl
Image Vis. Comput.
Robert Bodor, Andrew Drenner, Duc Fehr, Osama Masoud, Nikolaos Papanikolopoulos
2008 J jnl
Comput. Vis. Image Underst.
Prahlad Kilambi, Evan Ribnick, Ajay J. Joshi, Osama Masoud, Nikolaos Papanikolopoulos
2007 A conf
IROS
Evan Ribnick, Stefan Atev, Nikolaos Papanikolopoulos, Osama Masoud, Richard M. Voyles
2007 A* conf
ICRA
Ajay J. Joshi, Stefan Atev, Osama Masoud, Nikolaos Papanikolopoulos
2006 conf
ISVC (1)
Yunqian Ma, Steven B. Damelin, Osama Masoud, Nikolaos Papanikolopoulos
2006 J jnl
Image Vis. Comput.
Michel Schrameck, Richard M. Voyles, Tom Myers, Robert Bodor, Osama Masoud
2006 conf
ITSC
Prahlad Kilambi, Osama Masoud, Nikos Papanikolopoulos
2006 A* conf
ICRA
Dongwei Cao, Osama Masoud, Daniel Boley
2006 A conf
IROS
Stefan Atev, Osama Masoud, Nikolaos Papanikolopoulos
2006 A* conf
ICRA
Nathaniel D. Bird, Stefan Atev, Nicolas Caramelli, Robert F. K. Martin, Osama Masoud, Nikolaos Papanikolopoulos
2006 B conf
AVSS
Evan Ribnick, Stefan Atev, Osama Masoud, Nikolaos Papanikolopoulos, Richard M. Voyles
2005 A conf
IROS
Stefan Atev, Osama Masoud, Ravi Janardan, Nikolaos Papanikolopoulos
2005 J jnl
IEEE Trans. Intell. Transp. Syst.
Stefan Atev, Hemanth Arumugam, Osama Masoud, Ravi Janardan, Nikolaos P. Papanikolopoulos
2005 J jnl
IEEE Trans. Intell. Transp. Syst.
Nathaniel D. Bird, Osama Masoud, Nikolaos P. Papanikolopoulos, Aaron Isaacs
2005 J jnl
IEEE Robotics Autom. Mag.
Benjamin Maurin, Osama Masoud, Nikolaos P. Papanikolopoulos
2004 A* conf
ICRA
Guillaume Gasser, Nathaniel D. Bird, Osama Masoud, Nikolaos Papanikolopoulos
2004 A* conf
ICRA
Dongwei Cao, Osama Masoud, Daniel Boley, Nikolaos Papanikolopoulos
2004 A conf
IROS
Osama Masoud, Nikolaos P. Papanikolopoulos
2003 J jnl
Image Vis. Comput.
Osama Masoud, Nikolaos Papanikolopoulos
2003 J jnl
IEEE Trans. Intell. Transp. Syst.
Harini Veeraraghavan, Osama Masoud, Nikolaos Papanikolopoulos
2003 A conf
IROS
Robert Bodor, Bennett Jackson, Osama Masoud, Nikos Papanikolopoulos
2003 B conf
AVSS
Osama Masoud, Nikolaos Papanikolopoulos
2003 A* conf
ICRA
Paul E. Rybski, Franziska Zacharias, Jean-François Lett, Osama Masoud, Maria L. Gini, Nikolaos Papanikolopoulos
2002 J jnl
IEEE Trans. Intell. Transp. Syst.
Surendra Gupte, Osama Masoud, Robert F. K. Martin, Nikolaos P. Papanikolopoulos
2002 conf
DSP
Harini Veeraraghavan, Osama Masoud, Nikolaos Papanikolopoulos
2001 J jnl
IEEE Trans. Veh. Technol.
Osama Masoud, Nikolaos P. Papanikolopoulos
2001 J jnl
IEEE Trans. Intell. Transp. Syst.
Osama Masoud, Nikolaos P. Papanikolopoulos, Eil Kwon
2000 A* conf
ICRA
Douglas P. Perrin, Christopher E. Smith, Osama Masoud, Nikolaos Papanikolopoulos
1999 conf
ECC
Douglas P. Perrin, Osama Masoud, Christopher E. Smith, Nikolaos P. Papanikolopoulos
redb/extractors/pe_extractors/pe_sections.py
← Index redb/extractors/pe_extractors/pe_sections.py python
import base64
import hashlib
import inspect
from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PESection
from datetime import datetime, timezone
from typing import Any


class PESectionExtractor(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_sections"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_sections(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        sections = []
        for section in self.pe.sections:
            try:
                name = self.process_binary_string(section.Name)
            except Exception as e:
                name = "UnableToDecode"
                self.log.warning(
                    f'Unable to store section Name "{section.Name}" for {self.hash.sha256}'
                    f" exception {e}"
                )
            sec_sha256 = section.get_hash_sha256()
            sec_md5 = section.get_hash_md5()
            # sec_entropy = "%.2f" % section.get_entropy()
            sec_entropy = section.get_entropy()
            pe_section = PESection(
                _id=hashlib.sha256(
                    name.encode()
                ).hexdigest(),  # usecase 8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104, all section have same sha256
                section_name=name,
                section_name_b64=base64.b64encode(
                    section.Name.rstrip(b'\x00')
                ).decode(),  # base64.b64decode(b64) to decode
                section_v_addr=section.VirtualAddress,
                section_v_addr_hex=hex(section.VirtualAddress),
                section_v_size=section.Misc_VirtualSize,
                section_size=section.SizeOfRawData,
                section_pointer_to_raw_data=hex(section.PointerToRawData),
                section_md5=sec_md5,
                section_sha256=sec_sha256,
                section_entropy=sec_entropy,
            )
            sections.append(pe_section)
        return sections

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

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            sections = self.extract()
            if sections is None:
                return None
            
            data = []
            current_time = datetime.now(timezone.utc)
            
            for section in sections:
                data.append([
                    self.sha256,                          # sha256
                    self.md5,                             # md5
                    self.sha1,                            # sha1
                    section.section_name,                 # section_name
                    section.section_name_b64,             # section_name_b64
                    section.section_entropy,              # section_entropy
                    section.section_sha256,               # section_sha256
                    section.section_md5,                  # section_md5
                    section.section_size,                 # section_size
                    section.section_v_addr,               # section_v_addr
                    section.section_v_size,               # section_v_size
                    int(section.section_pointer_to_raw_data, 16),  # section_pointer_to_raw_data - convert from hex
                    current_time                          # analysis_date
                ])
            
            column_names = [
                'sha256', 'md5', 'sha1', 'section_name', 'section_name_b64',
                'section_entropy', 'section_sha256', 'section_md5', 'section_size',
                'section_v_addr', 'section_v_size', 'section_pointer_to_raw_data',
                'analysis_date'
            ]
            
            if not data:
                return None

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

            return (data, column_names, column_type_names)

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