Vinay Sharma

44 papers A* 2A 2Journal 26Unranked 12
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Vinay Sharma, Manish Jain
2026 J jnl
Reliab. Eng. Syst. Saf.
Olga Fink, Vinay Sharma, Ismail Nejjar, Leandro Von Krannichfeldt, Sergei Garmaev, Zepeng Zhang, Amaury Wei, Gaëtan Frusque, Florent Forest, Mengjie Zhao, Chi-Ching Hsu, Keivan Faghih Niresi, Han Sun, Hao Dong, Chenghao Xu, Raffael Theiler, Arthur Bizzi, Kevin Steiner
2026 J jnl
Reliab. Eng. Syst. Saf.
Olga Fink, Ismail Nejjar, Vinay Sharma, Keivan Faghih Niresi, Han Sun, Hao Dong, Chenghao Xu, Amaury Wei, Arthur Bizzi, Raffael Theiler, Yuan Tian, Leandro Von Krannichfeldt, Zhan Ma, Sergei Garmaev, Zepeng Zhang, Mengjie Zhao, Kevin Steiner, Yusuf Kesmen
2025 J jnl
CoRR
Vinay Sharma, Olga Fink
2025 J jnl
CoRR
Vinay Sharma, Rémi Tanguy Oddon, Pietro Tesini, Jens Ravesloot, Cees Taal, Olga Fink
2025 J jnl
CoRR
Olga Fink, Ismail Nejjar, Vinay Sharma, Keivan Faghih Niresi, Han Sun, Hao Dong, Chenghao Xu, Amaury Wei, Arthur Bizzi, Raffael Theiler, Yuan Tian, Leandro Von Krannichfeldt, Zhan Ma, Sergei Garmaev, Zepeng Zhang, Mengjie Zhao
2025 J jnl
CoRR
Manish Jain, Satheesh Kumar Ponnambalam, Salman Faroz, Chandrakanth Lns, Vinay Sharma
2024 conf
AICCONF
Ankit Yadav, Vinay Sharma, Gaurav Raj, Tanupriya Choudhury, Ayan Sar, Ketan Kotecha, Turgut Ozseven
2023 J jnl
Wirel. Pers. Commun.
Venkatesham Maddela, Sanjeet Kumar Sinha, Muddapu Parvathi, Vinay Sharma
2023 J jnl
CoRR
Vinay Sharma, Jens Ravesloot, Cees Taal, Olga Fink
2022 J jnl
Sensors
Sergio Paniego, Vinay Sharma, José María Cañas
2021 conf
CVPR Workshops
Hadi Pouransari, Mojan Javaheripi, Vinay Sharma, Oncel Tuzel
2020 conf
TDIT (2)
Gaurav Dixit, Kapil Kumar Joshi, Vinay Sharma
2020 J jnl
IEEE Commun. Lett.
Ravi Sharma, Venkataramana Badarla, Vinay Sharma
2020 J jnl
Int. J. Commun. Syst.
Bhisham Sharma, Mohammad S. Obaidat, Vinay Sharma, Kuei-Fang Hsiao
2020 J jnl
CoRR
Dilip U. Shenoy, Vinay Sharma, Shiva H. C. Prasad
2019 J jnl
Sensors
Zhan-Hong Li, Mona A. Mohamed, A. M. Vinu Mohan, Zhigang Zhu, Vinay Sharma, Geetesh K. Mishra, Rupesh K. Mishra
2019 J jnl
Int. J. Bioinform. Res. Appl.
Vinay Sharma, V. Singh, Pramod Katara
2019 conf
ICCCNT
Sai Krishna Vaddadi, Vinay Sharma
2018 J jnl
Comput. Electron. Agric.
Nilima Kumari, Shalini Verma, Vinay Sharma
2015 ch.
Encyclopedia of Biometrics
James W. Davis, Vinay Sharma, Ambrish Tyagi, Mark A. Keck
2015 J jnl
Int. J. Bus. Perform. Supply Chain Model.
Rupesh Kumar, Rajat Agrawal, Vinay Sharma
2015 J jnl
Int. J. Serv. Stand.
Vinay Sharma, Nakul Gupta
2013 J jnl
Theory Biosci.
Manoj Kumar Sekhwal, Vinay Sharma, Renu Sarin
2012 A conf
WACV
Vinay Sharma
2012 J jnl
Int. J. Asian Bus. Inf. Manag.
Vinay Sharma, Piyush Seth, Shujauddin Niyazi
2012 conf
ESPA
Jason Clemons, Sid Ying-Ze Bao, Silvio Savarese, Todd M. Austin, Vinay Sharma
2012 conf
CCECE
Rajiv K. Varma, Shah Arifur Rahman, Vinay Sharma, Tim Vanderheide
2011 J jnl
Int. J. Asian Bus. Inf. Manag.
Vinay Sharma, Prasoom Dwivedi, Piyush Seth
2011 J jnl
Int. J. Strateg. Inf. Technol. Appl.
Vinay Sharma, Pankaj Madan, Piyush Seth
2010 J jnl
Int. J. Asian Bus. Inf. Manag.
Vinay Sharma, Piyush Seth, Shujauddin Niyazi
2009 ch.
Encyclopedia of Biometrics
James W. Davis, Vinay Sharma, Ambrish Tyagi, Mark A. Keck
2007 J jnl
Int. J. Comput. Vis.
James W. Davis, Vinay Sharma
2007 J jnl
Comput. Vis. Image Underst.
James W. Davis, Vinay Sharma
2007 A conf
WACV
Vinay Sharma, James W. Davis
2007 A* conf
ICCV
Vinay Sharma, James W. Davis
2007 A* conf
CVPR
Vinay Sharma, James W. Davis
2006 conf
CVPR Workshops
Vinay Sharma, James W. Davis
2005 J jnl
Int. J. Manuf. Technol. Manag.
Vinay Sharma, Surender Kumar
2005 conf
CVPR Workshops
James W. Davis, Vinay Sharma
2005 conf
AIIDE
Donna K. Byron, Aakash Dalwani, Ryan Gerritsen, Mark A. Keck, Thomas Mampilly, Vinay Sharma, Laura Stoia, Timothy Weale, Tianfang Xu
2005 conf
CONTEXT
Donna K. Byron, Thomas Mampilly, Vinay Sharma, Tianfang Xu
2004 conf
CVPR Workshops
James W. Davis, Vinay Sharma
2004 conf
ICPR (4)
James W. Davis, Vinay Sharma
redb/extractors/macho_extractors/macho_exports.py
← Index redb/extractors/macho_extractors/macho_exports.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor
from redb.models.dataclasses import MachOExport


class MachOExportExtractor(MachOExtractor):

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

    def tag(self):
        return Tag.MACHO_EXPORT.value

    def _extract_exports(self, arch_name=None):
        """Extract export information from the MachO binary for a specific architecture."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get exported symbols using new API for specific architecture
            exported_symbols = self.macho.get_exported_symbols(arch=arch_name)

            # Extract all exported symbols (may be empty for some binaries)
            # Handle None or empty dict
            if not exported_symbols:
                exported_symbols = {}
            all_symbols = []
            for dylib_name, symbols in exported_symbols.items():
                # Process symbol names
                for symbol in symbols:
                    if isinstance(symbol, bytes):
                        symbol = symbol.decode('utf-8', errors='replace')
                    all_symbols.append(symbol)

            # Create export dataclass
            macho_export = MachOExport(
                macho_exports_total=len(all_symbols),
                macho_export_symbols=all_symbols  # Empty list is fine, but None is not allowed for Array type
            )

            return macho_export

        except Exception as e:
            self.log.error(f"Error extracting MachO exports for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Get architectures (macho is already parsed in base class)
            architectures = self.macho.get_architectures()
            if len(architectures) > 1:
                # FAT binary - return list of exports for each architecture
                results = []
                for arch_name in architectures:
                    exports = self._extract_exports(arch_name)
                    if exports:
                        exports.arch_identifier = arch_name
                        results.append(exports)
                return results
            else:
                # Single architecture - return single result
                return self._extract_exports(architectures[0] if architectures else None)
        except Exception as e:
            self.log.error(f"Error extracting MachO exports: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            # Get architectures (macho is already parsed in base class)
            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            data = []
            current_time = datetime.now(timezone.utc)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get exports for this architecture
                macho_export = self._extract_exports(arch_name)
                if not macho_export:
                    continue

                data.append([
                    arch_sha256,                          # sha256 (arch-specific)
                    macho_export.macho_exports_total,     # macho_exports_total
                    macho_export.macho_export_symbols,    # macho_export_symbols (keep as array!)
                    current_time,                         # analysis_date
                ])

            column_names = [
                'sha256',
                'macho_exports_total', 'macho_export_symbols',
                'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'UInt32', 'Array(Nullable(String))',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

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