Oguz Bayat

61 papers B 1C 5Journal 47Unranked 8
YearRankTypeTitle / Venue / Authors
2025 J jnl
Signal Image Video Process.
Ali H. Abdulwahhab, Oguz Bayat, Abdullahi A. Ibrahim
2024 J jnl
Neural Comput. Appl.
Jiao Wang, Jay Weitzen, Oguz Bayat, Volkan Sevindik
2024 J jnl
Big Data
Mohanad Ahmed Mezher, Sadia Din, Muhammad Ilyas, Oguz Bayat, Qammer Hussain Abbasi, Imran Ashraf
2024 J jnl
Clust. Comput.
K. Dilsad Çiçek, Taymaz Akan, Oguz Bayat
2024 J jnl
Multim. Tools Appl.
Jiao Wang, Jay Weitzen, Oguz Bayat, Volkan Sevindik, Mingzhe Li
2024 J jnl
PeerJ Comput. Sci.
Athar Alazzawi, Saif Aljumaili, Adil Deniz Duru, Osman Nuri Uçan, Oguz Bayat, Paulo Jorge Simões Coelho, Ivan Miguel Pires
2022 J jnl
Multim. Tools Appl.
Günay Gültekin, Oguz Bayat
2022 J jnl
Comput. Intell.
Husam Ibrahiem Alsaadi, Almuttari M. Rafah, Osman Nuri Uçan, Oguz Bayat
2022 J jnl
Comput. Syst. Sci. Eng.
Ehab Dh. Hussein, Yaqeen S. Mezaal, Oguz Bayat
2022 J jnl
J. Inf. Secur. Appl.
Ugur Coruh, Oguz Bayat
2022 J jnl
Comput. Electr. Eng.
Salam Alyassri, Muhammad Ilyas, Ali Marhoon, Oguz Bayat
2022 J jnl
Multim. Tools Appl.
Hamid R. Alsanad, Amin Z. Sadik, Osman N. Uçan, Muhammad Ilyas, Oguz Bayat
2021 C conf
DATA
Tareq Abed Mohammed, Mohammed N. Qasim, Oguz Bayat
2021 J jnl
Comput. Intell.
Amjed Razzaq Alabbas, Layth A. Hassnawi, Muhammad Ilyas, Haris Pervaiz, Qammer H. Abbasi, Oguz Bayat
2020 J jnl
IEEE Access
Emad Ali Almabsout, Ragab A. El-Sehiemy, Osman Nuri Uçan, Oguz Bayat
2020 J jnl
J. Medical Imaging Health Informatics
Bassam S. Ali, Osman Nuri Uçan, Oguz Bayat
2020 J jnl
IEEE Access
Mohammed Moreb, Tareq Abed Mohammed, Oguz Bayat
2020 J jnl
J. Medical Imaging Health Informatics
Hayder H. Safi, Osman N. Uçan, Oguz Bayat
2020 J jnl
J. Inf. Sci. Eng.
Husam Ibrahiem Alsaadi, Almuttari M. Rafah, Oguz Bayat, Osman Nuri Ucani
2020 J jnl
IEEE Access
Mohammed Moreb, Tareq Abed Mohammed, Oguz Bayat, Oguz Ata
2020 J jnl
IEEE Access
Shadi A. Aljawarneh, Oguz Bayat, Juan Alfonso Lara, Robert P. Schumaker
2020 J jnl
J. Medical Imaging Health Informatics
Abidaoun Hamdan Shallal, Osman N. Uçan, Amjad J. Humaidi, Oguz Bayat
2020 J jnl
Future Internet
Jiao Wang, Jay Weitzen, Oguz Bayat, Volkan Sevindik, Mingzhe Li
2020 conf
SIU
Ehab Dh. Hussein, Nidal Qasem, Maryam S. Jameel, Muhammad Ilyas, Oguz Bayat
2020 J jnl
IEEE Access
Hamid R. Alsanad, Osman N. Uçan, Muhammad Ilyas, Atta ur Rehman Khan, Oguz Bayat
2020 J jnl
J. Medical Imaging Health Informatics
Maather Ibrahim, Osman N. Uçan, Oguz Bayat
2019 J jnl
Neural Comput. Appl.
Hadeel Tariq Ibrahim, Wamidh Jalil Mazher, Osman N. Uçan, Oguz Bayat
2019 J jnl
Int. J. Web Based Communities
Logesh Ravi, Malathi Devarajan, Gwanggil Jeon, Oguz Bayat, V. Subramaniyaswamy
2019 J jnl
Int. J. Commun. Syst.
Ibrahim Beram Jasim, Oguz Bayat, Osman N. Uçan
2019 J jnl
Int. J. Distributed Sens. Networks
Abdullahi Ibrahim Abdu, Oguz Bayat, Osman Nuri Uçan
2019 J jnl
Trans. Emerg. Telecommun. Technol.
Muhammad Ilyas, Osman N. Uçan, Oguz Bayat, Ali Arshad Nasir, Muhammad Ali Imran, Akram Alomainy, Qammer H. Abbasi
2019 J jnl
Cogn. Syst. Res.
LaythKamil Almajmaie, Osman N. Uçan, Oguz Bayat
2019 conf
SmartNets
Sara Al-Shara'a, Raid Khalid Ibraheem, Oguz Bayat
2019 J jnl
EURASIP J. Wirel. Commun. Netw.
Jiao Wang, Jay Weitzen, Oguz Bayat, Volkan Sevindik, Mingzhe Li
2019 J jnl
J. Medical Imaging Health Informatics
Mohammed Ibrahim Ahmed Al-Mashhadani, Osman N. Uçan, Oguz Bayat
2019 J jnl
Photonic Netw. Commun.
Ayad Atiyah Abdulkafi, Saad Mshhain Hardan, Oguz Bayat, Osman Nuri Uçan
2018 J jnl
Comput. Electr. Eng.
Ahmed K. Abbas, Oguz Bayat, Osman Nuri Uçan
2018 conf
SIU
Muhammad Ilyas, Oguz Bayat, Qammer H. Abbasi
2018 J jnl
Sci. Program.
Tareq Abed Mohammed, Shaymaa Alhayali, Oguz Bayat, Osman N. Uçan
2018 J jnl
Secur. Commun. Networks
Ugur Coruh, Oguz Bayat
2018 J jnl
Comput. Electr. Eng.
Shadi A. Aljawarneh, Oguz Bayat, Mohamed Essaaidi
2018 J jnl
Comput. Electr. Eng.
Shadi A. Aljawarneh, Oguz Bayat, Mohamed Essaaidi
2018 J jnl
IEEE Access
Muhammad Ilyas, Osman Nuri Uçan, Oguz Bayat, Xiaodong Yang, Qammer H. Abbasi
2018 C conf
DATA
Tareq Abed Mohammed, Abdulbasit Alazzawi, Osman N. Uçan, Oguz Bayat
2018 C conf
DATA
Hayder H. Safi, Osman N. Uçan, Oguz Bayat
2018 C conf
DATA
Abdulbasit Alazzawi, Osman N. Uçan, Oguz Bayat
2018 J jnl
Comput. Intell. Neurosci.
Saad Albawi, Oguz Bayat, Saad Al-Azawi, Osman N. Uçan
2018 C conf
DATA
Husam Ibrahiem Alsaadi, Maad Kamal Al-Anni, Rafah M. Almuttairi, Oguz Bayat, Osman Nuri Uçan
2017 J jnl
Int. J. Commun. Syst.
Jiao Wang, Jay Weitzen, Oguz Bayat, Volkan Sevindik, Mingzhe Li
2015 conf
SIU
Muhammad Ilyas, Oguz Bayat, Ömer Ileri
2014 J jnl
Int. J. Commun. Syst.
Oguz Bayat
2012 conf
LCN Workshops
Volkan Sevindik, Jiao Wang, Oguz Bayat, Jay Weitzen
2011 J jnl
IEICE Trans. Commun.
Volkan Sevindik, Oguz Bayat
2011 conf
SpringSim (ANSS)
Volkan Sevindik, Oguz Bayat, Jay Weitzen
2011 B conf
WiOpt
Volkan Sevindik, Oguz Bayat, Jay Weitzen
2011 J jnl
Wirel. Networks
Volkan Sevindik, Oguz Bayat, Jay Weitzen
2011 J jnl
Multim. Tools Appl.
Volkan Sevindik, Oguz Bayat, Jay Weitzen
2008 J jnl
EURASIP J. Wirel. Commun. Netw.
Oguz Bayat, Niyazi Odabasioglu, Onur Osman, Osman N. Uçan, Masoud Salehi, Bahram Shafai
2008 J jnl
Int. J. Commun. Syst.
Oguz Bayat, Bahram Shafai, Masoud Salehi, Osman N. Uçan, Onur Osman
2005 conf
ICASSP (3)
Oguz Bayat, Bahram Shafai, Osman N. Uçan
2004 conf
Communications in Computing
Oguz Bayat, Bahram Shafai, Osman N. Uçan
redb/extractors/elf_extractors/elf_relocations.py
← Index redb/extractors/elf_extractors/elf_relocations.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Dict

from elftools.elf.elffile import ELFFile
from elftools.common.exceptions import ELFError

from redb.extractors.enum import Tag
from redb.extractors.elf_extractor import ELFExtractor
from redb.models.dataclasses import ELFRelocation


class ELFRelocationExtractor(ELFExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        elf=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            elf,
        )
        self.elf_relocations = []
        self.elastic_index = self.index_prefix + "-elf_relocations"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_relocation_type_string(self, reloc_type: int, machine_arch: str) -> str:
        """Convert relocation type number to human-readable string based on architecture."""
        # This is a simplified mapping - real implementation would need comprehensive
        # architecture-specific relocation type mappings

        common_types = {
            0: "R_NONE",
            1: "R_DIRECT",
            2: "R_PC_RELATIVE",
            3: "R_GOT",
            4: "R_PLT",
            5: "R_COPY",
            6: "R_GLOB_DAT",
            7: "R_JMP_SLOT",
            8: "R_RELATIVE"
        }

        # Architecture-specific mappings could be added here
        if machine_arch == "x86_64":
            x86_64_types = {
                1: "R_X86_64_64",
                2: "R_X86_64_PC32",
                3: "R_X86_64_GOT32",
                4: "R_X86_64_PLT32",
                5: "R_X86_64_COPY",
                6: "R_X86_64_GLOB_DAT",
                7: "R_X86_64_JUMP_SLOT",
                8: "R_X86_64_RELATIVE"
            }
            return x86_64_types.get(reloc_type, f"R_X86_64_{reloc_type}")
        elif machine_arch == "x86":
            i386_types = {
                1: "R_386_32",
                2: "R_386_PC32",
                3: "R_386_GOT32",
                4: "R_386_PLT32",
                5: "R_386_COPY",
                6: "R_386_GLOB_DAT",
                7: "R_386_JMP_SLOT",
                8: "R_386_RELATIVE"
            }
            return i386_types.get(reloc_type, f"R_386_{reloc_type}")

        return common_types.get(reloc_type, f"R_UNKNOWN_{reloc_type}")

    def _extract_relocation_data(self, relocation, section_name: str, machine_arch: str) -> Dict:
        """Extract data from a single relocation entry."""
        try:
            # Get relocation offset
            relocation_offset = relocation.entry.get('r_offset', 0)

            # Get relocation type
            relocation_type = relocation.entry.get('r_info_type', 0)

            # Get symbol index
            relocation_symbol_index = relocation.entry.get('r_info_sym', 0)

            # Get addend (only present in RELA sections)
            relocation_addend = None
            if hasattr(relocation.entry, 'r_addend'):
                relocation_addend = relocation.entry.get('r_addend', 0)

            # Get symbol name if available
            relocation_symbol_name = ""
            if hasattr(relocation, 'symbol') and relocation.symbol:
                relocation_symbol_name = relocation.symbol.name or f"<symbol_{relocation_symbol_index}>"
            else:
                relocation_symbol_name = f"<symbol_{relocation_symbol_index}>"

            # Get type string mapping
            relocation_type_str = self._get_relocation_type_string(relocation_type, machine_arch)

            return ELFRelocation(
                relocation_offset=relocation_offset,
                relocation_type=relocation_type,
                relocation_type_str=relocation_type_str,
                relocation_symbol_index=relocation_symbol_index,
                relocation_symbol_name=relocation_symbol_name,
                relocation_section=section_name,
                relocation_addend=relocation_addend
            )

        except Exception as e:
            self.log.error(f"Error extracting relocation data: {e}")
            return None

    def _extract_relocations_from_section(self, section, machine_arch: str) -> List[Dict]:
        """Extract all relocations from a relocation section."""
        relocations = []

        try:
            if not hasattr(section, 'iter_relocations'):
                return relocations

            section_name = section.name or f"<unnamed_section>"

            for relocation in section.iter_relocations():
                reloc_data = self._extract_relocation_data(relocation, section_name, machine_arch)
                if reloc_data:
                    relocations.append(reloc_data)

        except Exception as e:
            self.log.error(f"Error extracting relocations from section {section.name}: {e}")

        return relocations

    def tag(self):
        return Tag.ELF_RELOCATIONS.value if hasattr(Tag, 'ELF_RELOCATIONS') else "elf_relocations"

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)

            def extract_data(elf):
                # Get architecture for relocation type mapping
                machine_arch = self._get_architecture()
                all_relocations = []

                # Iterate through all sections looking for relocation sections with per-section error handling
                for section_index, section in enumerate(elf.iter_sections()):
                    try:
                        # Check if this is a relocation section (.rel or .rela)
                        if (section.name and
                            (section.name.startswith('.rel') or section.name.startswith('.rela')) and
                            hasattr(section, 'iter_relocations')):

                            section_relocations = self._extract_relocations_from_section(section, machine_arch)
                            all_relocations.extend(section_relocations)
                            self.log.debug(f"Extracted {len(section_relocations)} relocations from section {section.name}")
                    except Exception as e:
                        section_name = getattr(section, 'name', f'section_{section_index}')
                        self.log.warning(f"Error processing relocation section {section_name}: {e}")
                        # Continue processing other sections

                return all_relocations

            if not self._is_elf_file():
                return None

            result = self._with_elf_file(extract_data)
            if result is None:
                return None

            self.elf_relocations = result
            return self.elf_relocations

        except Exception as e:
            self.log.error(f"Error extracting ELF relocations {self.hash.sha256}: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)

        if exporter_type == "ElasticsearchExporter":
            return self.elf_relocations
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no relocations (e.g., statically linked binary)
                # None is reserved for actual errors

                # Prepare data arrays for all relocations
                data = []
                current_time = datetime.now(timezone.utc)
                for reloc in self.elf_relocations:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        reloc.relocation_offset,
                        reloc.relocation_type,
                        reloc.relocation_type_str,
                        reloc.relocation_symbol_index,
                        reloc.relocation_symbol_name,
                        reloc.relocation_addend,
                        reloc.relocation_section,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'relocation_offset', 'relocation_type', 'relocation_type_str',
                    'relocation_symbol_index', 'relocation_symbol_name',
                    'relocation_addend', 'relocation_section',
                    'analysis_date'
                ]

                if not data:
                    return None

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

                return (data, column_names, column_type_names)

            except Exception as e:
                self.log.error(f"Error preparing export data: {e}")
                raise

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