Vijander Singh

52 papers Journal 45Unranked 7
YearRankTypeTitle / Venue / Authors
2026 J jnl
Int. J. Commun. Syst.
Rajesh Kumar, Deepak Sinwar, Vijander Singh
2025 J jnl
SN Comput. Sci.
Nikita Nikita, Vijander Singh, Jyoti Yadav
2025 J jnl
Clust. Comput.
Rajesh Kumar, Deepak Sinwar, Vijander Singh
2024 J jnl
Telecommun. Syst.
Rajesh Kumar, Deepak Sinwar, Vijander Singh
2024 J jnl
Comput. Commun.
Rajesh Kumar, Deepak Sinwar, Vijander Singh
2023 conf
ICCCNT
Vidhi Jain, Mayank Dixit, Vihaan Misra, Geetansh Bhutani, Vijander Singh
2023 J jnl
Biomed. Signal Process. Control.
Durgesh Nandini, Jyoti Yadav, Asha Rani, Vijander Singh
2023 J jnl
J. Exp. Theor. Artif. Intell.
Gaurav Jee, Harshvardhan GM, Mahendra Kumar Gourisaria, Vijander Singh, Siddharth Swarup Rautaray, Manjusha Pandey
2023 conf
ICCCNT
Arpita Sonowal, Asha Rani, Vijander Singh
2023 J jnl
Int. J. Fuzzy Syst.
Vijay Mohan, Bharti Panjwani, Himanshu Chhabra, Asha Rani, Vijander Singh
2022 J jnl
IET Commun.
Mahendra Kumar Gourisaria, Gaurav Jee, Harshvardhan GM, Vijander Singh, Pradeep Kumar Singh, Tewabe Chekole Workneh
2022 J jnl
Biomed. Signal Process. Control.
Anju Prabha, Jyoti Yadav, Asha Rani, Vijander Singh
2022 J jnl
Biomed. Signal Process. Control.
Sonal Navdeep Goyal, Vijander Singh, Asha Rani, Navdeep Yadav
2022 J jnl
IEEE Access
Harshvardhan GM, Aanchal Sahu, Mahendra Kumar Gourisaria, Pradeep Kumar Singh, Wei-Chiang Hong, Vijander Singh, Bunil Kumar Balabantaray
2022 J jnl
Comput. Syst. Sci. Eng.
Ayman Altameem, Jaideep Singh Sachdev, Vijander Singh, Ramesh Chandra Poonia, Sandeep Kumar, Abdul Khader Jilani Saudagar
2021 J jnl
Big Data Min. Anal.
Rajani Kumari, Sandeep Kumar, Ramesh Chandra Poonia, Vijander Singh, Linesh Raja, Vaibhav Bhatnagar, Pankaj Agarwal
2021 J jnl
Comput. Biol. Medicine
Anju Prabha, Jyoti Yadav, Asha Rani, Vijander Singh
2021 J jnl
Int. J. Softw. Eng. Knowl. Eng.
G. L. Saini, Deepak Panwar, Sandeep Kumar, Vijander Singh, Ramesh Chandra Poonia
2020 J jnl
J. Intell. Fuzzy Syst.
Urvashi Chauhan, Vijander Singh, Bhavnesh Kumar, Asha Rani
2020 J jnl
J. Intell. Fuzzy Syst.
Navdeep Yadav, Vijander Singh, Asha Rani, Sonal Navdeep Goyal
2020 J jnl
Signal Image Video Process.
Sonal Navdeep Goyal, Vijander Singh, Asha Rani, Navdeep Yadav
2020 J jnl
Neural Comput. Appl.
Himanshu Chhabra, Vijay Mohan, Asha Rani, Vijander Singh
2019 J jnl
J. Intell. Fuzzy Syst.
Urvashi Chauhan, Asha Rani, Bhavnesh Kumar, Vijander Singh
2019 J jnl
Swarm Evol. Comput.
Mohit Jain, Vijander Singh, Asha Rani
2019 J jnl
Neural Comput. Appl.
Vijay Mohan, Himanshu Chhabra, Asha Rani, Vijander Singh
2019 J jnl
J. Intell. Fuzzy Syst.
Sonal Navdeep Goyal, Asha Rani, Vijander Singh
2019 conf
ICCCNT
Aman Sharma, Vijander Singh, Asha Rani
2019 J jnl
Comput. Biol. Medicine
Nikhil Pachauri, Jyoti Yadav, Asha Rani, Vijander Singh
2019 J jnl
J. Intell. Fuzzy Syst.
Bharti Panjwani, Vijay Mohan, Asha Rani, Vijander Singh
2019 J jnl
J. Intell. Fuzzy Syst.
Parul Chopra, Shivangi Agarwal, Asha Rani, Vijander Singh
2019 J jnl
J. Intell. Fuzzy Syst.
Himanshu Chhabra, Vijay Mohan, Asha Rani, Vijander Singh
2018 J jnl
Pattern Anal. Appl.
Vilas H. Gaidhane, Yogesh V. Hote, Vijander Singh
2018 conf
ICACDS (1)
Rishab Gupta, Nilay Shrivastava, Mohit Jain, Vijander Singh, Asha Rani
2018 J jnl
J. Intell. Fuzzy Syst.
Mohit Jain, Shubham Maurya, Asha Rani, Vijander Singh
2018 J jnl
J. Medical Syst.
Chander Diwaker, Pradeep Tomar, Ramesh Chandra Poonia, Vijander Singh
2018 J jnl
J. Intell. Fuzzy Syst.
Vijay Mohan, Himanshu Chhabra, Asha Rani, Vijander Singh
2018 J jnl
Biomed. Signal Process. Control.
Greeshma Sharma, Anson Anto, Vijander Singh
2017 J jnl
J. Intell. Fuzzy Syst.
Mohit Jain, Asha Rani, Vijander Singh
2017 J jnl
Brain Informatics
Greeshma Sharma, Klaus Gramann, Sushil Chandra, Vijander Singh, Alok Prakash Mittal
2017 J jnl
Biomed. Signal Process. Control.
Shivangi Agarwal, Asha Rani, Vijander Singh, Alok Prakash Mittal
2017 J jnl
J. Intell. Fuzzy Syst.
Shivangi Agarwal, Vijander Singh, Asha Rani, Alok Prakash Mittal
2017 J jnl
J. Intell. Fuzzy Syst.
Vijay Mohan, Asha Rani, Vijander Singh
2016 J jnl
Int. J. Virtual Real.
Greeshma Sharma, Sushil Chandra, Saraynya Venkatraman, Alok Prakash Mittal, Vijander Singh
2016 conf
BIH
Greeshma Sharma, Amritha Abdul Salam, Sushil Chandra, Vijander Singh, Alok Prakash Mittal
2016 J jnl
J. Medical Syst.
Jyoti Yadav, Asha Rani, Vijander Singh
2016 J jnl
J. Medical Syst.
Shivangi Agarwal, Asha Rani, Vijander Singh, Alok Prakash Mittal
2016 conf
ICACCI
Sucheta Singh, Asha Rani, Vijander Singh, Jyoti Yadav
2015 J jnl
Signal Image Video Process.
Vilas H. Gaidhane, Yogesh V. Hote, Vijander Singh
2015 J jnl
Biomed. Signal Process. Control.
Jyoti Yadav, Asha Rani, Vijander Singh, Bhaskar Mohan Murari
2014 J jnl
Pattern Recognit.
Vilas H. Gaidhane, Yogesh V. Hote, Vijander Singh
2011 conf
ACC (1)
Surendra Singh Choudhary, Vijander Singh, Reena Dadhich
2007 J jnl
Eng. Appl. Artif. Intell.
Vijander Singh, Indra Gupta, H. O. Gupta
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"