Rahul Saha

80 papers A 1C 1Journal 68Unranked 9
YearRankTypeTitle / Venue / Authors
2026 J jnl
ICT Express
Sarvagya Singh, Rahul Saha, Gulshan Kumar, Anand Nayyar, Tae-Kyung Kim
2025 A conf
AsiaCCS
Tannishtha Devgun, Gulshan Kumar, Rahul Saha, Alessandro Brighente, Mauro Conti
2025 J jnl
IEEE Trans. Netw. Serv. Manag.
Gulshan Kumar, Rahul Saha, Mauro Conti, Tai-Hoon Kim
2025 J jnl
Complex Intell. Syst.
Gulshan Kumar, Rahul Saha, Mauro Conti, Tai-Hoon Kim
2025 J jnl
IEEE Access
Amandeep Verma, Rahul Saha, Gulshan Kumar, Alessandro Brighente, Mauro Conti, Tai-Hoon Kim
2025 J jnl
IACR Cryptol. ePrint Arch.
Gulshan Kumar, Rahul Saha, Mauro Conti, William J. Buchanan
2025 J jnl
IEEE Trans. Serv. Comput.
Gulshan Kumar, Rahul Saha, Mauro Conti, William J. Buchanan
2025 J jnl
CoRR
George Tsoukalas, Rahul Saha, Amitayush Thakur, Sabrina Reguyal, Swarat Chaudhuri
2025 C conf
SECRYPT
Belkacem Imine, Rahul Saha, Mauro Conti
2025 J jnl
ACM Trans. Intell. Syst. Technol.
Tannishtha Devgun, Rahul Saha, Gulshan Kumar, Mauro Conti
2025 J jnl
Clust. Comput.
Rahul Saha, Gulshan Kumar, Mauro Conti, Tai-Hoon Kim, In Seop Na, Vaibhav Markandey
2025 J jnl
IEEE Trans. Intell. Transp. Syst.
Gulshan Kumar, Rahul Saha, Mauro Conti, Joel J. P. C. Rodrigues
2025 J jnl
Inf. Process. Manag.
Gulshan Kumar, Rahul Saha, Mauro Conti, Tai-Hoon Kim
2024 J jnl
IEEE Internet Things J.
Rahul Saha, Gulshan Kumar, Mauro Conti, Tannishtha Devgun, Joel J. P. C. Rodrigues
2024 J jnl
IEEE Trans. Dependable Secur. Comput.
Rahul Saha, Gulshan Kumar, G. Geetha, Mauro Conti, William J. Buchanan
2024 J jnl
Internet Things
Gulshan Kumar, Rahul Saha, Mauro Conti, Tannishtha Devgun, Reji Thomas
2024 J jnl
Clust. Comput.
PLS Jayalaxmi, Manali Chakraborty, Rahul Saha, Gulshan Kumar, Mauro Conti
2024 J jnl
IEEE Access
Archana Chhabra, Rahul Saha, Gulshan Kumar, Tai-Hoon Kim
2024 J jnl
Comput. Commun.
Amandeep Verma, Rahul Saha, Gulshan Kumar, Mauro Conti
2024 conf
BCCA
Archana Chhabra, Rahul Saha, Mauro Conti
2024 J jnl
IEEE Access
Amandeep Verma, Rahul Saha, Gulshan Kumar, Mauro Conti, Tai-Hoon Kim
2024 J jnl
Clust. Comput.
Archana Chhabra, Rahul Saha, Gulshan Kumar
2024 J jnl
Clust. Comput.
Rekha Goyat, Gulshan Kumar, Rahul Saha, Mauro Conti
2024 J jnl
Clust. Comput.
Rekha Goyat, Gulshan Kumar, Rahul Saha, Mauro Conti, Reji Thomas, Tai-Hoon Kim
2024 J jnl
CoRR
Arindam Majee, Rahul Saha, Snehasish Roy, Srilekha Mandal, Sayan Chatterjee
2024 J jnl
Veh. Commun.
Amandeep Verma, Rahul Saha, Gulshan Kumar, Mauro Conti, Joel J. P. C. Rodrigues
2023 J jnl
IEEE Trans. Serv. Comput.
Rahul Saha, Gulshan Kumar, Tannishtha Devgun, William J. Buchanan, Reji Thomas, Mamoun Alazab, Tai-Hoon Kim, Joel J. P. C. Rodrigues
2023 J jnl
CoRR
Nilay Patel, Rahul Saha, Jeffrey Flanigan
2023 J jnl
IEEE Trans. Serv. Comput.
Gulshan Kumar, Rahul Saha, Mauro Conti, Reji Thomas, Tannishtha Devgun, Joel J. P. C. Rodrigues
2023 J jnl
IEEE Internet Things J.
Rekha Goyat, Gulshan Kumar, Mauro Conti, Tannishtha Devgun, Rahul Saha, Reji Thomas
2023 J jnl
Comput. Commun.
Gulshan Kumar, Rahul Saha, Mauro Conti, Tannishtha Devgun, Rekha Goyat, Joel J. P. C. Rodrigues
2023 conf
AICV
Irfan Ahmad Rather, Gulshan Kumar, Rahul Saha, Tai-Hoon Kim
2023 J jnl
Int. J. Commun. Syst.
Irfan Ahmad Rather, Gulshan Kumar, Rahul Saha
2023 J jnl
CoRR
Sean Welleck, Rahul Saha
2023 J jnl
Comput. Secur.
PLS Jayalaxmi, Rahul Saha, Gulshan Kumar, Mamoun Alazab, Mauro Conti, Xiaochun Cheng
2023 ed.
WCES
Geetha Ganesan, Sudip Roy, Rahul Saha
2022 J jnl
J. Netw. Comput. Appl.
Ashish Kumar, Rahul Saha, Mauro Conti, Gulshan Kumar, William J. Buchanan, Tai-Hoon Kim
2022 J jnl
Multim. Tools Appl.
Amandeep Verma, Rahul Saha, Neeraj Kumar, Gulshan Kumar, Tai-Hoon Kim
2022 J jnl
J. Syst. Archit.
Arshdeep Singh, Gulshan Kumar, Rahul Saha, Mauro Conti, Mamoun Alazab, Reji Thomas
2022 J jnl
J. Netw. Comput. Appl.
Mauro Conti, Gulshan Kumar, Pranav Nerurkar, Rahul Saha, Luigi Vigneri
2022 conf
ACM
Irfan Ahmad Rather, Gulshan Kumar, Rahul Saha
2022 J jnl
IEEE Internet Things J.
Rekha Goyat, Gulshan Kumar, Mamoun Alazab, Mauro Conti, Mritunjay Kumar Rai, Reji Thomas, Rahul Saha, Tai-Hoon Kim
2022 J jnl
IEEE Trans. Ind. Informatics
Rahul Saha, Gulshan Kumar, Mauro Conti, Tannishtha Devgun, Tai-Hoon Kim, Mamoun Alazab, Reji Thomas
2022 J jnl
Comput. Electr. Eng.
PLS Jayalaxmi, Gulshan Kumar, Rahul Saha, Mauro Conti, Tai-Hoon Kim, Reji Thomas
2022 J jnl
IEEE Internet Things J.
Rahul Saha, Gulshan Kumar, Neeraj Kumar, Tai-Hoon Kim, Tannishtha Devgun, Reji Thomas, Ahmed Barnawi
2022 J jnl
IEEE Access
PLS Jayalaxmi, Rahul Saha, Gulshan Kumar, Mauro Conti, Tai-Hoon Kim
2022 J jnl
Comput. Electr. Eng.
PLS Jayalaxmi, Rahul Saha, Gulshan Kumar, Tai-Hoon Kim
2022 conf
BCCA
Arshdeep Singh, Rahul Saha, Mauro Conti, Gulshan Kumar
2022 conf
WAI
PLS Jayalaxmi, Rahul Saha, Lalit Garg, Gulshan Kumar
2022 conf
M&N
Alessandro Brighente, Mauro Conti, Gulshan Kumar, Reza Ghanbari, Rahul Saha
2021 J jnl
IEEE Access
PLS Jayalaxmi, Rahul Saha, Gulshan Kumar, Neeraj Kumar, Tai-Hoon Kim
2021 J jnl
Future Gener. Comput. Syst.
Rekha Goyat, Gulshan Kumar, Mamoun Alazab, Rahul Saha, Reji Thomas, Mritunjay Kumar Rai
2021 J jnl
Int. J. Inf. Comput. Secur.
Rahul Saha, Gulshan Kumar, Mritunjay Kumar Rai, Hye-Jin Kim
2021 J jnl
Future Gener. Comput. Syst.
Gulshan Kumar, Rahul Saha, Chhagan Lal, Mauro Conti
2021 conf
Blockchain
Alessandro Brighente, Mauro Conti, Gulshan Kumar, Reza Ghanbari, Rahul Saha
2021 J jnl
IEEE Access
Tai-Hoon Kim, Gulshan Kumar, Rahul Saha, William J. Buchanan, Tannishtha Devgun, Reji Thomas
2021 J jnl
IEEE Trans. Veh. Technol.
Rahul Saha, Gulshan Kumar, G. Geetha, Tai-Hoon Kim, Mamoun Alazab, Reji Thomas, Mritunjay Kumar Rai, Joel J. P. C. Rodrigues
2021 conf
BCCA
Rahul Saha, Gulshan Kumar, Alessandro Brighente, Mauro Conti
2020 J jnl
IEEE Syst. J.
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, Reji Thomas, Tai-Hoon Kim
2020 J jnl
J. Inf. Secur. Appl.
Ashish Kumar, Rahul Saha, Mamoun Alazab, Gulshan Kumar
2020 J jnl
IEEE Internet Things J.
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, Reji Thomas, G. Geetha, Tai-Hoon Kim, Joel J. P. C. Rodrigues
2020 J jnl
IEEE Access
Tai-Hoon Kim, Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, William J. Buchanan, Reji Thomas, Mamoun Alazab
2020 J jnl
IEEE Trans. Veh. Technol.
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, William J. Buchanan, Reji Thomas, G. Geetha, Tai-Hoon Kim, Joel J. P. C. Rodrigues
2020 J jnl
IEEE Access
Tai-Hoon Kim, Gulshan Kumar, Rahul Saha, Mamoun Alazab, William J. Buchanan, Mritunjay Kumar Rai, G. Geetha, Reji Thomas
2020 J jnl
CoRR
Gulshan Kumar, Rahul Saha, William J. Buchanan, G. Geetha, Reji Thomas, Tai-Hoon Kim, Mamoun Alazab
2019 J jnl
IEEE Access
Tai-Hoon Kim, Rekha Goyat, Mritunjay Kumar Rai, Gulshan Kumar, William J. Buchanan, Rahul Saha, Reji Thomas
2019 J jnl
Sensors
Rekha Goyat, Mritunjay Kumar Rai, Gulshan Kumar, Rahul Saha, Tai-Hoon Kim
2019 J jnl
Sensors
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, Reji Thomas, Tai-Hoon Kim, Se-Jung Lim, Jai Sukh Paul Singh
2019 J jnl
IEEE Access
Rahul Saha, G. Geetha, Gulshan Kumar, Tai-Hoon Kim, William J. Buchanan
2019 J jnl
IEEE Access
Rahul Saha, Gulshan Kumar, Mritunjay Kumar Rai, Reji Thomas, Se-Jung Lim
2019 J jnl
IEEE Internet Things J.
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, Reji Thomas, Tai-Hoon Kim
2018 J jnl
Int. J. Distributed Sens. Networks
Gulshan Kumar, Mritunjay Kumar Rai, Rahul Saha, Hye-Jin Kim
2018 J jnl
IEEE Access
Gulshan Kumar, Rahul Saha, Mritunjay Kumar Rai, Tai-Hoon Kim
2018 J jnl
Int. J. Inf. Secur. Priv.
Gulshan Kumar, Rahul Saha, Mandeep Singh, Mritunjay Kumar Rai
2018 J jnl
Secur. Commun. Networks
Rahul Saha, G. Geetha, Gulshan Kumar, Tai-Hoon Kim
2017 J jnl
Mob. Inf. Syst.
Gulshan Kumar, Mritunjay Kumar Rai, Hye-Jin Kim, Rahul Saha
2017 J jnl
J. Netw. Comput. Appl.
Gulshan Kumar, Mritunjay Kumar Rai, Rahul Saha
2015 J jnl
Int. J. Cyber Behav. Psychol. Learn.
Rahul Saha, G. Geetha, Gulshan Kumar
2011 conf
FGIT-SecTech
Rahul Saha, G. Geetha, Gang-soo Lee
2011 J jnl
CoRR
Rahul Saha, G. Geetha
redb/extractors/elf_extractors/elf_dependencies.py
← Index redb/extractors/elf_extractors/elf_dependencies.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 ELFDependency


class ELFDependencyExtractor(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_dependencies = []
        self.elastic_index = self.index_prefix + "-elf_dependencies"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def _map_dependency_type(self, dt_tag_str: str) -> int:
        """Map dynamic tag string to enum value."""
        type_map = {
            'DT_NEEDED': 1,
            'DT_SONAME': 14,
            'DT_RPATH': 15,
            'DT_RUNPATH': 29
        }
        return type_map.get(dt_tag_str, 0)

    def _extract_dynamic_dependencies(self, elf) -> List[Dict]:
        """Extract dependencies from the dynamic section."""
        dependencies = []

        try:
            # Get the dynamic section
            dynamic_section = elf.get_section_by_name('.dynamic')
            if not dynamic_section:
                self.log.debug("No .dynamic section found")
                return dependencies

            # Iterate through dynamic tags
            for tag in dynamic_section.iter_tags():
                dt_tag = tag.entry.d_tag

                # Handle different dependency types
                if dt_tag == 'DT_NEEDED':
                    # Required library
                    dependency_name = tag.needed
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_NEEDED'),
                        dependency_type_str='NEEDED'
                    ))

                elif dt_tag == 'DT_SONAME':
                    # Shared object name
                    dependency_name = tag.soname
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_SONAME'),
                        dependency_type_str='SONAME'
                    ))

                elif dt_tag == 'DT_RPATH':
                    # Runtime library search path
                    dependency_name = tag.rpath
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_RPATH'),
                        dependency_type_str='RPATH'
                    ))

                elif dt_tag == 'DT_RUNPATH':
                    # Runtime library search path (newer)
                    dependency_name = tag.runpath
                    dependencies.append(ELFDependency(
                        dependency_name=dependency_name,
                        dependency_type=self._map_dependency_type('DT_RUNPATH'),
                        dependency_type_str='RUNPATH'
                    ))

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

        return dependencies

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

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

            def extract_data(elf):
                # Extract dependencies - returns list of ELFDependency dataclasses
                dependencies = self._extract_dynamic_dependencies(elf)
                return dependencies

            if not self._is_elf_file():
                return None

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

            self.elf_dependencies = result
            return self.elf_dependencies

        except Exception as e:
            self.log.error(f"Error extracting ELF dependencies {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_dependencies
        elif exporter_type == "ClickHouseExporter":
            try:
                # Return valid empty structure if no dependencies (e.g., statically linked binary)
                # None is reserved for actual errors

                # Prepare data arrays for all dependencies
                data = []
                current_time = datetime.now(timezone.utc)
                for dep in self.elf_dependencies:
                    row = [
                        self.sha256,
                        self.md5,
                        self.sha1,
                        dep.dependency_name,
                        dep.dependency_type,
                        dep.dependency_type_str,
                        current_time
                    ]
                    data.append(row)

                column_names = [
                    'sha256', 'md5', 'sha1',
                    'dependency_name', 'dependency_type', 'dependency_type_str',
                    'analysis_date'
                ]

                if not data:
                    return None

                column_type_names = [
                    'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                    'LowCardinality(String)',
                    "Enum8('NEEDED'=1, 'SONAME'=14, 'RPATH'=15, 'RUNPATH'=29)",
                    '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_dependencies"