Omid Taghizadeh

94 papers B 10Misc 3Journal 37Unranked 44
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Trans. Commun.
Sonia Pala, Keshav Singh, Omid Taghizadeh, Cunhua Pan, Octavia A. Dobre, Trung Q. Duong
2024 J jnl
IEEE Trans. Cogn. Commun. Netw.
Prajwalita Saikia, Keshav Singh, Omid Taghizadeh, Wan-Jen Huang, Sudip Biswas
2024 conf
VTC Fall
Sonia Pala, Keshav Singh, Omid Taghizadeh, Cunhua Pan, Chih-Peng Li
2024 J jnl
IEEE Trans. Wirel. Commun.
Sonia Pala, Omid Taghizadeh, Mayur Katwe, Keshav Singh, Chih-Peng Li, Anke Schmeink
2024 J jnl
IEEE Trans. Green Commun. Netw.
Jetti Yaswanth, Mayur Katwe, Keshav Singh, Omid Taghizadeh, Cunhua Pan, Anke Schmeink
2023 conf
ICC Workshops
Jetti Yaswanth, Mayur Katwe, Keshav Singh, Omid Taghizadeh, Anke Schmeink, Cunhua Pan
2023 B conf
GLOBECOM
Jetti Yaswanth, Mayur Katwe, Keshav Singh, Omid Taghizadeh, Cunhua Pan, Anke Schmeink
2023 J jnl
IEEE Trans. Cogn. Commun. Netw.
Raviteja Allu, Omid Taghizadeh, Sandeep Kumar Singh, Keshav Singh, Chih-Peng Li
2023 J jnl
IEEE Access
Iván Alexander Morales Sandoval, Kengo Ando, Omid Taghizadeh, Giuseppe Thadeu Freitas de Abreu
2022 conf
MILCOM
Prajwalita Saikia, Keshav Singh, Omid Taghizadeh, Wan-Jen Huang, Sudip Biswas
2022 B conf
GLOBECOM
Raviteja Allu, Sandeep Kumar Singh, Omid Taghizadeh, Keshav Singh, Chih-Peng Li
2022 conf
SPAWC
M. Hossein Attar, Omid Taghizadeh, Kaixin Chang, Ramez Askar, Matthias Mehlhose, Slawomir Stanczak
2022 J jnl
IEEE Trans. Wirel. Commun.
Omid Taghizadeh, Tianyu Yang, Hiroki Iimori, Giuseppe Abreu, Ali Cagatay Cirik, Rudolf Mathar
2022 conf
IEEECONF
Razvan-Andrei Stoica, Omid Taghizadeh, Sheeba Backia Mary Baskaran
2022 conf
IEEECONF
Omid Taghizadeh, Tianyu Yang, Giuseppe Thadeu Freitas de Abreu
2021 J jnl
IEEE Access
Hiroki Iimori, Giuseppe Thadeu Freitas de Abreu, Omid Taghizadeh, Razvan-Andrei Stoica, Takanori Hara, Koji Ishibashi
2021 J jnl
IEEE Trans. Veh. Technol.
Alireza Zamani, Omid Taghizadeh, Anke Schmeink
2021 J jnl
IEEE Open J. Commun. Soc.
Omid Taghizadeh, Slawomir Stanczak, Hiroki Iimori, Giuseppe Thadeu Freitas de Abreu
2021 J jnl
IEEE Trans. Veh. Technol.
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2021 J jnl
IEEE Trans. Signal Inf. Process. over Networks
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2021 J jnl
IEEE Syst. J.
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2021 J jnl
CoRR
Omid Taghizadeh, Tianyu Yang, Hiroki Iimori, Giuseppe Abreu, Ali Cagatay Cirik, Rudolf Mathar
2021 B conf
WCNC
Tianyu Yang, Omid Taghizadeh, Yulin Hu, Hao Xu, Giuseppe Caire
2020 J jnl
CoRR
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2020 J jnl
IEEE Trans. Wirel. Commun.
Sudip Biswas, Keshav Singh, Omid Taghizadeh, Tharmalingam Ratnarajah
2020 Misc conf
ACSSC
Hiroki Iimori, Giuseppe Thadeu Freitas de Abreu, Omid Taghizadeh, Koji Ishibashi
2020 B conf
GLOBECOM
Omid Taghizadeh, Slawomir Stanczak, Hiroki Iimori, Giuseppe Abreu
2020 J jnl
CoRR
Omid Taghizadeh, Slawomir Stanczak, Hiroki Iimori, Giuseppe Abreu
2020 conf
WSA
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2020 J jnl
IEEE Trans. Veh. Technol.
Omid Taghizadeh, Tianyu Yang, Rudolf Mathar
2020 conf
WSA
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2020 J jnl
IEEE Wirel. Commun. Lett.
Hiroki Iimori, Giuseppe Thadeu Freitas de Abreu, Omid Taghizadeh, Razvan-Andrei Stoica, Takanori Hara, Koji Ishibashi
2019 Misc conf
ICASSP
Keshav Singh, Sudip Biswas, Omid Taghizadeh, Tharmalingam Ratnarajah
2019 conf
WSA
Omid Taghizadeh, Tianyu Yang, Rudolf Mathar
2019 conf
WSA
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2019 J jnl
IEEE Syst. J.
Omid Taghizadeh, Praveen Sirvi, Santosh Narasimha, Jose Angel Leon Calvo, Rudolf Mathar
2019 J jnl
IEEE Syst. J.
Ali Cagatay Cirik, Omid Taghizadeh, Lutz Lampe, Rudolf Mathar
2019 conf
SPAWC
Alireza Zamani, Omid Taghizadeh, Guido Dartmann, Rudolf Mathar, Anke Schmeink
2019 conf
WSA
Vimal Radhakrishnan, Ehsan Zandi, Omid Taghizadeh, Rudolf Mathar
2019 J jnl
CoRR
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2019 B conf
WCNC
Tianyu Yang, Omid Taghizadeh, Rudolf Mathar
2019 J jnl
IEEE Trans. Commun.
Omid Taghizadeh, Peter Neuhaus, Rudolf Mathar, Gerhard P. Fettweis
2019 conf
ISPLC
Gautham Prasad, Omid Taghizadeh, Lutz Lampe, Rudolf Mathar
2019 J jnl
Phys. Commun.
Tianyu Yang, Omid Taghizadeh, Rudolf Mathar
2018 conf
WSA
Alireza Zamani, Omid Taghizadeh, Anke Schmeink
2018 Misc conf
ICASSP
Sudip Biswas, Keshav Singh, Omid Taghizadeh, Tharm Ratnarajah, Mathini Sellathurai
2018 B conf
WCNC
Omid Taghizadeh, Peter Neuhaus, Rudolf Mathar
2018 J jnl
IEEE Trans. Wirel. Commun.
Sudip Biswas, Keshav Singh, Omid Taghizadeh, Tharmalingam Ratnarajah
2018 conf
WSA
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2018 J jnl
CoRR
Omid Taghizadeh, Praveen Sirvi, Santosh Narasimha, Jose Angel Leon Calvo, Rudolf Mathar
2018 B conf
WCNC
Ali Cagatay Cirik, Omid Taghizadeh, Lutz Lampe, Rudolf Mathar
2018 J jnl
IEEE Trans. Veh. Technol.
Omid Taghizadeh, Vimal Radhakrishnan, Ali Cagatay Cirik, Rudolf Mathar, Lutz Lampe
2018 J jnl
IEEE Trans. Wirel. Commun.
Omid Taghizadeh, Ali Cagatay Cirik, Rudolf Mathar
2018 conf
WSA
Vimal Radhakrishnan, Omid Taghizadeh, Rudolf Mathar
2018 B conf
WCNC
Omid Taghizadeh, Praveen Sirvi, Santosh Narasimha, Jose Angel Leon Calvo, Rudolf Mathar
2018 B conf
GLOBECOM
Sudip Biswas, Keshav Singh, Omid Taghizadeh, Tharmalingam Ratnarajah
2018 J jnl
IEEE Trans. Veh. Technol.
Ali Cagatay Cirik, Sudip Biswas, Omid Taghizadeh, Tharmalingam Ratnarajah
2018 J jnl
CoRR
Tianyu Yang, Omid Taghizadeh, Rudolf Mathar
2017 conf
ISWCS
Alireza Zamani, Saeed Shojaee, Omid Taghizadeh, Anke Schmeink
2017 J jnl
CoRR
Omid Taghizadeh, Ali Cagatay Cirik, Rudolf Mathar
2017 conf
ICC Workshops
Omid Taghizadeh, Tianyu Yang, Rudolf Mathar
2017 J jnl
CoRR
Omid Taghizadeh, Vimal Radhakrishnan, Ali Cagatay Cirik, Rudolf Mathar, Lutz Lampe
2017 B conf
PIMRC
Omid Taghizadeh, Vimal Radhakrishnan, Ali Cagatay Cirik, Saeed Shojaee, Rudolf Mathar, Lutz Lampe
2017 conf
WiSEE
Omid Taghizadeh, Vimal Radhakrishnan, Gholamreza Alirezaei, Ehsan Zandi, Rudolf Mathar
2017 conf
WiSEE
Ehsan Zandi, Peter Martin Vieting, Omid Taghizadeh, Rudolf Mathar
2017 J jnl
CoRR
Omid Taghizadeh, Peter Neuhaus, Rudolf Mathar
2017 conf
WSA
Ali Cagatay Cirik, Omid Taghizadeh, An Liu, Lutz Lampe, Rudolf Mathar
2017 conf
ICC
Omid Taghizadeh, Rudolf Mathar
2016 conf
VTC Fall
Ali Cagatay Cirik, Omid Taghizadeh, Lutz H.-J. Lampe, Tharmalingam Ratnarajah
2016 conf
WSA
Gholamreza Alirezaei, Omid Taghizadeh, Rudolf Mathar
2016 conf
ISWCS
Omid Taghizadeh, Tianyu Yang, Ali Cagatay Cirik, Rudolf Mathar
2016 conf
WiSEE
Omid Taghizadeh, Gholamreza Alirezaei, Rudolf Mathar
2016 J jnl
IEEE Access
Ali Cagatay Cirik, Omid Taghizadeh, Lutz Lampe, Rudolf Mathar, Yingbo Hua
2016 conf
WiSEE
Omid Taghizadeh, Vimal Radhakrishnan, Gholamreza Alirezaei, Rudolf Mathar
2016 conf
WSA
Omid Taghizadeh, Alireza Zamani, Rudolf Mathar
2016 conf
WiSEE
Ehsan Zandi, Gholamreza Alirezaei, Omid Taghizadeh, Rudolf Mathar
2016 J jnl
IEEE Wirel. Commun. Lett.
Ali Cagatay Cirik, Omid Taghizadeh, Rudolf Mathar, Tharmalingam Ratnarajah
2016 conf
ICC
Ali Cagatay Cirik, Sudip Biswas, Omid Taghizadeh, An Liu, Tharmalingam Ratnarajah
2016 conf
VTC Fall
Ali Cagatay Cirik, Omid Taghizadeh, Lutz Lampe, Rudolf Mathar, Yingbo Hua
2016 J jnl
Signal Process.
Omid Taghizadeh, Jianshu Zhang, Martin Haardt
2016 conf
ISWCS
Omid Taghizadeh, Vimal Radhakrishnan, Rudolf Mathar
2015 conf
ICSPCS
Omid Taghizadeh, Markus Rothe, Ali Cagatay Cirik, Rudolf Mathar
2015 conf
WSA
Omid Taghizadeh, Rudolf Mathar
2015 conf
WiSEE
Gholamreza Alirezaei, Omid Taghizadeh, Rudolf Mathar
2015 conf
ICC
Omid Taghizadeh, Gholamreza Alirezaei, Rudolf Mathar
2015 J jnl
IEEE Trans. Wirel. Commun.
Gholamreza Alirezaei, Omid Taghizadeh, Rudolf Mathar
2015 conf
WiSEE
Omid Taghizadeh, Gholamreza Alirezaei, Rudolf Mathar
2014 conf
ISWCS
Omid Taghizadeh, Gholamreza Alirezaei, Rudolf Mathar
2014 conf
WiSEE
Omid Taghizadeh, Rudolf Mathar
2014 conf
WSA
Omid Taghizadeh, Rudolf Mathar
2014 conf
ISWCS
Omid Taghizadeh, Rudolf Mathar
2013 conf
ISWCS
Jianshu Zhang, Omid Taghizadeh, Martin Haardt
2013 conf
ISWCS
Jianshu Zhang, Omid Taghizadeh, Martin Haardt
2013 conf
WSA
Jianshu Zhang, Omid Taghizadeh, Martin Haardt
redb/extractors/elf_extractors/elf_exports.py
← Index redb/extractors/elf_extractors/elf_exports.py python
import inspect
from datetime import datetime, timezone
from typing import Any, List, Set

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 ELFExport


class ELFExportExtractor(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_exports = None
        self.elastic_index = self.index_prefix + "-elf_exports"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _get_exported_functions_from_symbols(self, elf) -> Set[str]:
        """Extract exported functions from symbol tables."""
        exported_functions = set()

        try:
            # Check both static (.symtab) and dynamic (.dynsym) symbol tables
            symbol_sections = ['.symtab', '.dynsym']

            for section_name in symbol_sections:
                section = elf.get_section_by_name(section_name)
                if not section or not hasattr(section, 'iter_symbols'):
                    continue

                for symbol in section.iter_symbols():
                    # Check if symbol is exported (defined and globally visible)
                    if (symbol.name and
                        symbol.entry.get('st_shndx', 0) != 'SHN_UNDEF' and  # Not undefined
                        symbol.entry.get('st_info', {}).get('bind') in ['STB_GLOBAL', 'STB_WEAK'] and  # Global or weak binding
                        symbol.entry.get('st_info', {}).get('type') in ['STT_FUNC', 'STT_OBJECT']):  # Function or object

                        # Additional checks for meaningful exports
                        if (symbol.entry.get('st_value', 0) > 0 or  # Has a value
                            symbol.entry.get('st_size', 0) > 0):    # Has a size
                            exported_functions.add(symbol.name)

        except Exception as e:
            self.log.error(f"Error extracting exported functions from symbols: {e}")

        return exported_functions

    def _get_exported_functions_from_dynamic_section(self, elf) -> Set[str]:
        """Extract exported functions information from dynamic section."""
        exported_functions = set()

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                return exported_functions

            # Look for version definition sections that might indicate exports
            # This is complementary to symbol table analysis
            for tag in dynamic_section.iter_tags():
                if tag.entry.d_tag == 'DT_SONAME':
                    # If it has a SONAME, it's likely a shared library with exports
                    # The actual exports are still found in symbol tables
                    pass

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

        return exported_functions

    def _filter_meaningful_exports(self, exports: Set[str]) -> Set[str]:
        """Filter out compiler-generated and internal symbols to focus on meaningful exports."""
        filtered_exports = set()

        # Common patterns to exclude (compiler-generated, internal symbols)
        exclude_patterns = [
            '_start',
            '_init',
            '_fini',
            '__libc_',
            '__gmon_start__',
            '_IO_stdin_used',
            '__data_start',
            '__bss_start',
            '_edata',
            '_end',
            '__TMC_END__',
            '_ITM_deregisterTMCloneTable',
            '_ITM_registerTMCloneTable',
            '__cxa_finalize',
            '__gxx_personality_v0',
            '_Jv_RegisterClasses'
        ]

        for export in exports:
            # Skip empty or very short names
            if not export or len(export) < 2:
                continue

            # Skip symbols that match exclude patterns
            skip = False
            for pattern in exclude_patterns:
                if export.startswith(pattern):
                    skip = True
                    break

            # Skip symbols that look like internal mangled names (but keep reasonable C++ names)
            if export.startswith('_Z') and len(export) > 50:  # Very long mangled names
                skip = True

            if not skip:
                filtered_exports.add(export)

        return filtered_exports

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

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

            def extract_data(elf):
                # Extract exported functions from multiple sources
                exported_functions = set()

                # From symbol tables (primary source)
                symbol_exports = self._get_exported_functions_from_symbols(elf)
                exported_functions.update(symbol_exports)

                # From dynamic section (supplementary)
                dynamic_exports = self._get_exported_functions_from_dynamic_section(elf)
                exported_functions.update(dynamic_exports)

                # Filter out compiler-generated and internal symbols
                meaningful_exports = self._filter_meaningful_exports(exported_functions)

                # Convert to sorted list for consistent output
                export_functions_list = sorted(list(meaningful_exports))

                # Return ELFExport dataclass
                return ELFExport(
                    elf_exports_total=len(export_functions_list),
                    elf_export_functions=export_functions_list,
                )

            if not self._is_elf_file():
                return None

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

            self.elf_exports = result
            return self.elf_exports

        except Exception as e:
            self.log.error(f"Error extracting ELF exports {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_exports
        elif exporter_type == "ClickHouseExporter":
            try:
                if not self.elf_exports:
                    return None

                # Prepare data array
                data = [[
                    self.sha256,
                    self.md5,
                    self.sha1,
                    self.elf_exports.elf_exports_total,
                    self.elf_exports.elf_export_functions,
                    datetime.now(timezone.utc)
                ]]

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'elf_exports_total',
                    'elf_export_functions',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'UInt32',
                    'Array(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_exports"