Mahmoud M. Badr

40 papers C 4Journal 28Unranked 8
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Netw. Serv. Manag.
Islam Elgarhy, Mahmoud M. Badr, Ahmed T. Eltoukhy, Mohamed M. E. A. Mahmoud, Tariq Alshawi, Maazen Alsabaan, Mostafa M. Fouda
2025 J jnl
Smart Learn. Environ.
Mahmoud M. Badr, Badr Saleh Al-Abdi, Maged Rfeqallah, Rozilah Kasim, Faisal Ali Mohammed Ali
2025 J jnl
IEEE Access
Islam Elgarhy, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Tariq Alshawi, Mostafa M. Fouda, Maazen Alsabaan
2025 conf
FMEC
Adam Aberbach, Mohamed Baza, Mahmoud M. Badr, Amar Rasheed, Sherif Abdelfattah, Gautam Srivastava
2025 J jnl
Int. J. Learn. Technol.
Badr Saleh Al-Abdi, Mahmoud M. Badr, Rozilah Kasim, Faisal Ali Mohammed Ali
2025 J jnl
IEEE Internet Things J.
Islam Elgarhy, Mahmoud M. Badr, Mohamed Mahmoud, Jianbing Ni, Maazen Alsabaan, Tariq Alshawi
2025 J jnl
IEEE Access
Konstantinos Blazakis, Nikolaos Schetakis, Mahmoud M. Badr, Davit Aghamalyan, Konstantinos Stavrakakis, Georgios S. Stavrakakis
2025 J jnl
IEEE Internet Things J.
Ahmed T. El-Toukhy, Mahmoud M. Badr, Islam Elgarhy, Mohamed Mahmoud, Maazen Alsabaan, Tariq Alshawi
2025 J jnl
IEEE Internet Things J.
Atef H. Bondok, Mahmoud M. Badr, Mohamed Mahmoud, Maazen Alsabaan, Mostafa M. Fouda, Mohamed Abdallah
2025 J jnl
IEEE Internet Things J.
Atef H. Bondok, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Tariq Alshawi, Jianbing Ni, Maazen Alsabaan
2024 conf
CCNC
Atef H. Bondok, Mohamed Mahmoud, Mahmoud M. Badr, Mostafa M. Fouda, Maazen Alsabaan
2024 J jnl
IEEE Access
Atef H. Bondok, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Ahmed T. El-Toukhy, Maazen Alsabaan, Fathi H. Amsaad, Mohamed I. Ibrahem
2024 J jnl
Sensors
Ali Alshehri, Mahmoud M. Badr, Mohamed Baza, Hani Alshahrani
2024 J jnl
IEEE Trans. Netw. Sci. Eng.
Amar Rasheed, Mohamed Baza, Mahmoud M. Badr, Hani Alshahrani, Kim-Kwang Raymond Choo
2024 conf
CCNC
Madeleine Miller, Hany Habbak, Mahmoud M. Badr, Mohamed Baza, Mohamed Mahmoud, Mostafa M. Fouda
2024 J jnl
Smart Learn. Environ.
Mahmoud M. Badr, Badr Saleh Al-Abdi, Maged Rfeqallah, Rozilah Kasim, Faisal Ali Mohammed Ali
2024 conf
CCNC
Islam Elgarhy, Ahmed T. El-Toukhy, Mahmoud M. Badr, Mohamed Mahmoud, Mostafa M. Fouda, Maazen Alsabaan, Hisham A. Kholidy
2024 J jnl
IEEE Internet Things J.
Islam Elgarhy, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Mahmoud Nabil Mahmoud, Maazen Alsabaan, Mohamed I. Ibrahem
2024 conf
SmartNets
Ahmed T. El-Toukhy, Islam Elgarhy, Mahmoud M. Badr, Mohamed Mahmoud, Mostafa M. Fouda, Mohamed I. Ibrahem, Fathi Amsaad
2023 J jnl
IEEE Internet Things J.
Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Mohammed J. Abdulaal, Abdulah Jeza Aljohani, Fawaz Alsolami, Abdullah Saeed Balamash
2023 J jnl
IEEE Access
Asmaa Mohamed, Ahmed A. Akl, Mahmoud M. Badr, Khalil Al Ruqeishi, Ahmad Salah, Amr M. Abdelatif
2023 J jnl
IEEE Access
Islam Elgarhy, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Mostafa M. Fouda, Maazen Alsabaan, Hisham A. Kholidy
2023 J jnl
J. Grid Comput.
Garrett Brenner, Mohamed Baza, Amar Rasheed, Wassila Lalouani, Mahmoud M. Badr, Hani Alshahrani
2023 J jnl
IEEE Internet Things J.
Sherif Abdelfattah, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Khalid Abualsaud, Elias Yaacoub, Mohsen Guizani
2023 J jnl
IEEE Access
Ahmed T. El-Toukhy, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Gautam Srivastava, Mostafa M. Fouda, Maazen Alsabaan
2023 conf
ICCCNT
Gowtham Reddy Sathi, Lokesh Vedullapalli, Macharla Hemanth Kishan, Tarannum Shaila Zaman, Md Tariqul Islam, Mahmoud M. Badr
2023 J jnl
IEEE Access
Atef H. Bondok, Mohamed Mahmoud, Mahmoud M. Badr, Mostafa M. Fouda, Mohamed M. Abdallah, Maazen Alsabaan
2023 J jnl
IEEE Internet Things J.
Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Yuguang Fang, Mohammed J. Abdulaal, Abdulah Jeza Aljohani, Waleed Alasmary, Mohamed I. Ibrahem
2022 J jnl
IEEE Internet Things J.
Mahmoud M. Badr, Mohamed I. Ibrahem, Mohamed Mahmoud, Mostafa M. Fouda, Fawaz Alsolami, Waleed Alasmary
2022 J jnl
IEEE Internet Things J.
Seham A. Alansari, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Waleed Alasmary, Fawaz Alsolami, Abdullah Marish Ali
2022 conf
MILCOM
Hisham A. Kholidy, Andrew Karam, James L. Sidoran, Mohammad Ashiqur Rahman, Mohamed Mahmoud, Mahmoud M. Badr, Maqsood Mahmud, Ahmed F. Sayed
2021 C conf
ISNCC
Mahmoud M. Badr, Mohamed Baza, Sherif Abdelfattah, Mohamed Mahmoud, Waleed Alasmary
2021 C conf
ISNCC
Mohamed I. Ibrahem, Mahmoud M. Badr, Mohamed Mahmoud, Mostafa M. Fouda, Waleed Alasmary
2021 C conf
ISNCC
Mahmoud M. Badr, Mohamed I. Ibrahem, Mohamed Baza, Mohamed Mahmoud, Waleed Alasmary
2021 J jnl
IEEE Access
Sherif Abdelfattah, Mohamed Baza, Mahmoud M. Badr, Mohamed M. E. A. Mahmoud, Gautam Srivastava, Fawaz Alsolami, Abdullah Marish Ali
2021 conf
ICC Workshops
Seham A. Alansari, Mahmoud M. Badr, Mohamed Mahmoud, Waleed Alasmary
2021 J jnl
CoRR
Seham A. Alansari, Mahmoud M. Badr, Mohamed Mahmoud, Waleed Alasmary
2020 J jnl
CoRR
Mahmoud M. Badr, Mohamed I. Ibrahem, Mohamed Mahmoud, Mostafa M. Fouda, Waleed Alasmary
2020 C conf
ISNCC
Mohamed I. Ibrahem, Mahmoud M. Badr, Mostafa M. Fouda, Mohamed Mahmoud, Waleed Alasmary, Zubair Md Fadlullah
2020 J jnl
IEEE Access
Mahmoud M. Badr, Wesam Al Amiri, Mostafa M. Fouda, Mohamed M. E. A. Mahmoud, Abdulah Jeza Aljohani, Waleed Alasmary
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"