Raghvendra Kumar

76 papers Journal 74Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
Internet Technol. Lett.
G. Kalyan Chakravarthi, Raghvendra Kumar, Ssvr Kumar Addagarla, Smriti Sachan, Debashis Dutta
2025 J jnl
Internet Technol. Lett.
Ranjeet Kumar Panigrahi, Raghvendra Kumar
2025 J jnl
Internet Technol. Lett.
Souvik Pal, Raghvendra Kumar, Ahmed Hussein Alkhayyat
2025 J jnl
IET Commun.
Biswaranjan Bhola, Raghvendra Kumar, Preeti Rani, Rohit Sharma, Mazin Abed Mohammed, Kusum Yadav, Shoayee Dlaim Alotaibi, Lulwah M. Alkwai
2025 J jnl
Internet Technol. Lett.
M. Gayathri, R. Thilagavathy, M. Pushpalatha, Raghvendra Kumar, Kusum Yadav, Lulwah M. Alkwai
2023 J jnl
IEEE Access
Sunkuru Gopal Krishna Patro, Brojo Kishore Mishra, Sanjaya Kumar Panda, Amrutashree Hota, Raghvendra Kumar, Shiyang Lyu, David Taniar
2023 J jnl
J. Signal Process. Syst.
Karthik Ganesh Ramaswamy Pillai, R. Kanthavel, R. Dhaya, Y. Harold Robinson, Eanoch Golden Julie, Raghvendra Kumar, Phet Duong, Pham Huy Thong, Le Hoang Son
2023 J jnl
Cogn. Syst. Res.
Bandita Sahu, Pradipta Kumar Das, Raghvendra Kumar
2023 J jnl
Soft Comput.
Sunkuru Gopal Krishna Patro, Brojo Kishore Mishra, Sanjaya Kumar Panda, Raghvendra Kumar, Hoang Viet Long, David Taniar
2023 J jnl
Earth Sci. Informatics
Niranjan Panigrahi, S. Gopal Krishna Patro, Raghvendra Kumar, Michael Omar, Tran Thi Ngan, Long Giang Nguyen, Bui Thi Thu, Nguyen Truong Thang
2023 J jnl
Comput.
Ishaani Priyadarshini, Pinaki Mohanty, Raghvendra Kumar, David Taniar
2023 J jnl
Comput. Electr. Eng.
Ishaani Priyadarshini, Raghvendra Kumar, Ahmed Alkhayyat, Rohit Sharma, Kusum Yadav, Lulwah M. Alkwai, Sachin Kumar
2022 J jnl
IEEE Access
Ishaani Priyadarshini, Biswaranjan Bhola, Raghvendra Kumar, Chakchai So-In
2022 J jnl
Multim. Tools Appl.
Ishaani Priyadarshini, Pinaki Mohanty, Raghvendra Kumar, Rohit Sharma, Vikram Puri, Pradeep Kumar Singh
2022 J jnl
J. Intell. Fuzzy Syst.
Chandrakanta Mahanty, Raghvendra Kumar, Brojo Kishore Mishra, Cornel Barna
2022 J jnl
Soft Comput.
Rajeswari Manickam, Eanoch Golden Julie, Y. Harold Robinson, Ebin Joseph, A. S. Arun, Ebin Sebastian, Raghvendra Kumar, Hoang Viet Long, Le Hoang Son
2022 J jnl
Expert Syst. J. Knowl. Eng.
Lipsita Sahu, Rohit Sharma, Ipsita Sahu, Manoja Das, Bandita Sahu, Raghvendra Kumar
2022 J jnl
Multim. Tools Appl.
K. Lakshmi Narayanan, R. Santhana Krishnan, Le Hoang Son, Nguyen Thanh Tung, Eanoch Golden Julie, Y. Harold Robinson, Raghvendra Kumar, Vassilis C. Gerogiannis
2022 J jnl
New Gener. Comput.
Chandrakanta Mahanty, Raghvendra Kumar, S. Gopal Krishna Patro
2022 J jnl
Int. J. Web Grid Serv.
Biswaranjan Bhola, Raghvendra Kumar, Brojo Kishore Mishra
2022 J jnl
Appl. Soft Comput.
Nguyen Thi Kim Son, Nguyen Phuong Dong, Hoang Viet Long, Raghvendra Kumar, Ishaani Priyadarshini
2022 J jnl
Multim. Tools Appl.
Bandita Sahu, Pradipta Kumar Das, Manas Ranjan Kabat, Raghvendra Kumar
2022 J jnl
Expert Syst. J. Knowl. Eng.
Chandrakanta Mahanty, Raghvendra Kumar, Brojo Kishore Mishra, D. Jude Hemanth, Deepak Gupta, Ashish Khanna
2022 J jnl
IEEE Internet Things Mag.
Biswaranjan Bhola, Raghvendra Kumar, Rohit Sharma, Rajendra Prasad Mahapatra
2022 J jnl
Comput. Electr. Eng.
Ishaani Priyadarshini, Ahmed Alkhayyat, Anita Gehlot, Raghvendra Kumar
2021 J jnl
SICS Softw.-Intensive Cyber Phys. Syst.
Ishaani Priyadarshini, Raghvendra Kumar, Le Minh Tuan, Le Hoang Son, Hoang Viet Long, Rohit Sharma, Sakshi Rai
2021 J jnl
Wirel. Pers. Commun.
Sudhakar Balraj, Kavisankar Leelasankar, Ayyasamy Ayyanar, Yesudhas Harold Robinson, Raghvendra Kumar, Hoang Viet Long, Le Hoang Son
2021 J jnl
Microprocess. Microsystems
Sourav Kumar Bhoi, Kalyan Kumar Jena, Sanjaya Kumar Panda, Hoang Viet Long, Raghvendra Kumar, P. Subbulakshmi, Haifa Bin Jebreen
2021 J jnl
Soft Comput.
Nizar Rokbani, Raghvendra Kumar, Ajith Abraham, Adel M. Alimi, Hoang Viet Long, Ishaani Priyadarshini, Le Hoang Son
2021 J jnl
Wirel. Pers. Commun.
C. Gopala Krishnan, Yesudhas Harold Robinson, Eanoch Golden Julie, Anusha Bamini A. M., Raghvendra Kumar, Pham Huy Thong, Le Hoang Son
2021 J jnl
Comput. Electr. Eng.
Ishaani Priyadarshini, Raghvendra Kumar, Rohit Sharma, Pradeep Kumar Singh, Suresh Chandra Satapathy
2021 J jnl
J. Supercomput.
Raghvendra Kumar, Eanoch Golden Julie, Yesudhas Harold Robinson, S. Vimal, Sanghyun Seo
2021 J jnl
Clust. Comput.
Vikram Puri, Ishaani Priyadarshini, Raghvendra Kumar, Chung Van Lê
2020 J jnl
Wirel. Pers. Commun.
Garima Srivastava, Le Hoang Son, Raghvendra Kumar, Manju Khari
2020 J jnl
IEEE Access
Sunkuru Gopal Krishna Patro, Brojo Kishore Mishra, Sanjaya Kumar Panda, Raghvendra Kumar, Hoang Viet Long, David Taniar, Ishaani Priyadarshini
2020 J jnl
Peer-to-Peer Netw. Appl.
Ayyasamy Ayyanar, Eanoch Golden Julie, Yesudhas Harold Robinson, Subramanian Balaji, Raghvendra Kumar, Le Hoang Son, Pham Huy Thong, Ishaani Priyadarshini
2020 J jnl
J. Intell. Fuzzy Syst.
Minh Thanh Vo, Rohit Sharma, Raghvendra Kumar, Le Hoang Son, Binh Thai Pham, Dieu Tien Bui, Ishaani Priyadarshini, Manash Sarkar, Tuong Le
2020 J jnl
Wirel. Pers. Commun.
Yesudhas Harold Robinson, Eanoch Golden Julie, Krishnan Saravanan, Raghvendra Kumar, Le Hoang Son
2020 J jnl
Comput. Secur.
R. Santhana Krishnan, Eanoch Golden Julie, Yesudhas Harold Robinson, Raghvendra Kumar, Pham Huy Thong, Le Hoang Son
2020 J jnl
Sensors
Le Minh Tuan, Le Hoang Son, Hoang Viet Long, L. Rajaretnam Priya, K. Ruba Soundar, Yesudhas Harold Robinson, Raghvendra Kumar
2020 J jnl
Int. J. Distributed Sens. Networks
C. Ramasamy Sankar Ram, S. Ravimaran, R. Santhana Krishnan, Eanoch Golden Julie, Yesudhas Harold Robinson, Raghvendra Kumar, Le Hoang Son, Pham Huy Thong, Nguyen Quang Thanh, Mahmoud Ismail
2020 J jnl
J. Intell. Fuzzy Syst.
Sunkuru Gopal Krishna Patro, Brojo Kishore Mishra, Sanjaya Kumar Panda, Raghvendra Kumar, Hoang Viet Long, Tran Manh Tuan
2020 J jnl
Wirel. Networks
R. Santhana Krishnan, Eanoch Golden Julie, Yesudhas Harold Robinson, Raghvendra Kumar, Le Hoang Son, Tong Anh Tuan, Hoang Viet Long
2020 J jnl
Multim. Tools Appl.
Sudan Jha, Raghvendra Kumar, Le Hoang Son, Francisco Chiclana, Vikram Puri, Ishaani Priyadarshini
2020 J jnl
J. Intell. Fuzzy Syst.
Irfan Deli, Hoang Viet Long, Le Hoang Son, Raghvendra Kumar, Arindam Dey
2020 J jnl
Evol. Intell.
Tong Anh Tuan, Hoang Viet Long, Le Hoang Son, Raghvendra Kumar, Ishaani Priyadarshini, Nguyen Thi Kim Son
2019 J jnl
IEEE Access
Vikram Puri, Sudan Jha, Raghvendra Kumar, Ishaani Priyadarshini, Le Hoang Son, Mohamed Abdel-Basset, Mohamed Elhoseny, Hoang Viet Long
2019 J jnl
IEEE Access
R. Santhana Krishnan, Eanoch Golden Julie, Yesudhas Harold Robinson, Le Hoang Son, Raghvendra Kumar, Mohamed Abdel-Basset, Pham Huy Thong
2019 J jnl
Comput. Intell. Neurosci.
Hoang Viet Long, Le Hoang Son, Manju Khari, Kanika Arora, Siddharth Chopra, Raghvendra Kumar, Tuong Le, Sung Wook Baik
2019 J jnl
Int. J. Interact. Multim. Artif. Intell.
Sudan Jha, Anirban Dey, Raghvendra Kumar, Vijender Kumar Solanki
2019 J jnl
Wirel. Pers. Commun.
Rajiv Kapoor, Rashmi Gupta, Le Hoang Son, Sudan Jha, Raghvendra Kumar
2019 J jnl
Int. J. Inf. Syst. Model. Des.
Mamta Mittal, Rajendra Kumar Sharma, Varinder Pal Singh, Raghvendra Kumar
2019 J jnl
Earth Sci. Informatics
J. Joshua Bapu, D. Jemi Florinabel, Yesudhas Harold Robinson, Eanoch Golden Julie, Raghvendra Kumar, Vo Truong Nhu Ngoc, Le Hoang Son, Tran Manh Tuan, Cu Nguyen Giap
2019 J jnl
IEEE Access
Nakul Pritam, Manju Khari, Le Hoang Son, Raghvendra Kumar, Sudan Jha, Ishaani Priyadarshini, Mohamed Abdel-Basset, Hoang Viet Long
2019 J jnl
Telecommun. Syst.
Le Hoang Son, Sudan Jha, Raghvendra Kumar, Jyotir Moy Chatterjee, Manju Khari
2019 J jnl
IEEE Access
Sudan Jha, Raghvendra Kumar, Le Hoang Son, Mohamed Abdel-Basset, Ishaani Priyadarshini, Rohit Sharma, Hoang Viet Long
2019 J jnl
Medical Biol. Eng. Comput.
Ayyasamy Ayyanar, Maruthavanan Archana, Yesudhas Harold Robinson, Eanoch Golden Julie, Raghvendra Kumar, Le Hoang Son
2019 J jnl
Comput. Stand. Interfaces
Subramanian Balaji, Eanoch Golden Julie, Yesudhas Harold Robinson, Raghvendra Kumar, Pham Huy Thong, Le Hoang Son
2019 J jnl
Symmetry
Le Hoang Son, Nakul Pritam, Manju Khari, Raghvendra Kumar, Pham Thi Minh Phuong, Pham Huy Thong
2019 J jnl
J. Ambient Intell. Humaniz. Comput.
Yesudhas Harold Robinson, Eanoch Golden Julie, Krishnan Saravanan, Raghvendra Kumar, Le Hoang Son
2019 J jnl
Multim. Tools Appl.
Rajiv Kapoor, Rashmi Gupta, Le Hoang Son, Raghvendra Kumar, Sudan Jha
2019 J jnl
Earth Sci. Informatics
Krishnan Saravanan, Selva Aswini, Raghvendra Kumar, Le Hoang Son
2019 J jnl
Multim. Tools Appl.
Rajiv Kapoor, Rashmi Gupta, Le Hoang Son, Raghvendra Kumar
2019 J jnl
IEEE Access
Yesudhas Harold Robinson, Eanoch Golden Julie, Krishnan Saravanan, Le Hoang Son, Raghvendra Kumar, Mohamed Abdel-Basset, Pham Huy Thong
2019 J jnl
Ad Hoc Networks
Yesudhas Harold Robinson, R. Santhana Krishnan, Eanoch Golden Julie, Raghvendra Kumar, Le Hoang Son, Pham Huy Thong
2019 J jnl
Evol. Syst.
Sudan Jha, Raghvendra Kumar, Le Hoang Son, Jyotir Moy Chatterjee, Manju Khari, Navneet Yadav, Florentin Smarandache
2019 J jnl
Wirel. Networks
Rajiv Kapoor, Rashmi Gupta, Raghvendra Kumar, Le Hoang Son, Sudan Jha
2019 J jnl
Int. J. Knowl. Based Organ.
Biswaranjan Acharya, Ajaya Kumar Jena, Jyotir Moy Chatterjee, Raghvendra Kumar, Dac-Nhuong Le
2019 J jnl
J. Supercomput.
Souvik Pal, Raghvendra Kumar, Le Hoang Son, Krishnan Saravanan, Mohamed Abdel-Basset, Gunasekaran Manogaran, Pham Huy Thong
2019 J jnl
Peer-to-Peer Netw. Appl.
Yesudhas Harold Robinson, Eanoch Golden Julie, Raghvendra Kumar, Le Hoang Son
2019 J jnl
Artif. Intell. Rev.
Tanupreet Sabharwal, Rashmi Gupta, Le Hoang Son, Raghvendra Kumar, Sudan Jha
2018 J jnl
Knowl. Based Syst.
Le Hoang Son, Francisco Chiclana, Raghvendra Kumar, Mamta Mittal, Manju Khari, Jyotir Moy Chatterjee, Sung Wook Baik
2018 J jnl
Int. J. Nat. Comput. Res.
Priyank Pandey, Manju Khari, Raghvendra Kumar, Dac-Nhuong Le
2018 conf
RICE
Suneeta Mohanty, Prasant Kumar Pattnaik, Raghvendra Kumar
2018 J jnl
EAI Endorsed Trans. Ind. Networks Intell. Syst.
Kanta Prasad Sharma, Ramesh Chandra Poonia, Raghvendra Kumar, Surendra Sunda, Dac-Nhuong Le
2018 conf
RICE
Sudan Jha, Raghvendra Kumar, M. Venkatadri
redb/extractors/macho_extractors/macho_features.py
← Index redb/extractors/macho_extractors/macho_features.py python
import inspect
import json
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 MachO


class MachOFeaturesExtractor(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_features"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_macho_features_for_arch(self, arch_name):
        """Extract basic MachO features for a specific architecture."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get general info using new API
            general_info = self.macho.get_general_info()
            if not general_info:
                return None

            # Get header info for this specific architecture
            header_raw = self.macho.get_macho_header(arch=arch_name)
            header_formatted = self.macho.get_macho_header(arch=arch_name, formatted=True)

            if not header_raw or not header_formatted:
                return None

            # Get entry point using new API
            entry_point = None
            try:
                entry_point_info = self.macho.get_entry_point(arch=arch_name)
                if entry_point_info:
                    if isinstance(entry_point_info, dict):
                        entry_point = entry_point_info.get('entryoff') or entry_point_info.get('entry_address')
                    else:
                        entry_point = entry_point_info
            except Exception as e:
                self.log.debug(f"No entry point found: {e}")

            # Get UUID using new API
            uuid = None
            try:
                uuid_info = self.macho.get_uuid(arch=arch_name)
                if uuid_info:
                    uuid = str(uuid_info)
            except Exception as e:
                self.log.debug(f"No UUID found: {e}")

            # Get version info using new API with formatting
            version_info = None
            version_info_str = None
            try:
                version_info = self.macho.get_version_info(arch=arch_name)
                version_info_str = self.macho.get_version_info(arch=arch_name, formatted=True)
            except Exception as e:
                self.log.debug(f"No version info found: {e}")

            # Get segments using new API
            segments = self.macho.get_segments(arch=arch_name)
            number_of_segments = len(segments) if segments else 0

            # Get dylib info using new API
            dylib_names = self.macho.get_dylib_names(arch=arch_name)
            number_of_dylibs = len(dylib_names) if dylib_names else 0

            # Count imports using new API
            imported_functions = self.macho.get_imported_functions(arch=arch_name)
            number_of_imports = sum(len(funcs) for funcs in imported_functions.values()) if imported_functions else 0

            # Count exports using new API
            exported_symbols = self.macho.get_exported_symbols(arch=arch_name)
            number_of_exports = sum(len(symbols) for symbols in exported_symbols.values()) if exported_symbols else 0

            # Get unique load command types using new API
            load_commands_set = self.macho.get_load_commands_set(arch=arch_name, formatted=True)
            if isinstance(load_commands_set, set):
                load_commands_set = sorted(list(load_commands_set))

            # Get architectures for listing purposes
            architectures = self.macho.get_architectures()

            # Determine binary properties
            is_64bit = header_raw.get('magic') in [0xFEEDFACF, 0xCFFAEDFE]  # MH_MAGIC_64, MH_CIGAM_64
            is_signed = self._is_signed()
            
            # Create MachO dataclass
            macho_features = MachO(
                # Raw values from new API
                magic=header_raw.get('magic', 0),
                cputype=header_raw.get('cputype', 0),
                cpusubtype=header_raw.get('cpusubtype', 0),
                filetype=header_raw.get('filetype', 0),
                ncmds=header_raw.get('ncmds', 0),
                sizeofcmds=header_raw.get('sizeofcmds', 0),
                flags=header_raw.get('flags', 0),
                architecture=header_raw.get('cputype', 0),  # Use cputype as architecture
                architectures=[arch_info.get('cputype', 0) for arch_info in [self.macho.get_macho_header(arch=arch) for arch in architectures] if arch_info],
                # Human-readable values from formatted API
                magic_str=header_formatted.get('magic', ''),
                cputype_str=header_formatted.get('cputype', ''),
                cpusubtype_str=header_formatted.get('cpusubtype', ''),
                filetype_str=header_formatted.get('filetype', ''),
                flags_str=header_formatted.get('flags', '').split(', ') if header_formatted.get('flags') else [],
                architecture_str=header_formatted.get('cputype', ''),
                architectures_str=[arch_info.get('cputype', '') for arch_info in [self.macho.get_macho_header(arch=arch, formatted=True) for arch in architectures] if arch_info],
                # Additional properties
                is_64bit=is_64bit,
                is_signed=is_signed,
                number_of_load_commands=header_raw.get('ncmds', 0),
                load_commands_set=load_commands_set,
                number_of_segments=number_of_segments,
                number_of_dylibs=number_of_dylibs,
                number_of_imports=number_of_imports,
                number_of_exports=number_of_exports,
                entry_point=entry_point,
                uuid=uuid,
                version_info=version_info,
                version_info_str=version_info_str
            )
            
            return macho_features
            
        except Exception as e:
            self.log.error(f"Error extracting MachO features: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            if not self.macho:
                return None
            architectures = self.macho.get_architectures()
            if not architectures:
                return None

            # For FAT binaries, return features for all architectures
            # For single arch, return just the single result
            if len(architectures) > 1:
                # FAT binary - return list of features for each architecture
                results = []
                for arch_name in architectures:
                    features = self._extract_macho_features_for_arch(arch_name)
                    if features:
                        # Add architecture identifier to the result
                        if hasattr(features, '__dict__'):
                            # If it's a dataclass, we can access its dict
                            features.arch_identifier = arch_name
                        results.append(features)
                return results
            else:
                # Single architecture - return single result
                return self._extract_macho_features_for_arch(architectures[0])
        except Exception as e:
            self.log.error(f"Error extracting MachO features: {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 __init__)
            try:
                architectures = self.macho.get_architectures()
            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:
                # Extract features for this specific architecture
                macho_features = self._extract_macho_features_for_arch(arch_name)
                if not macho_features:
                    continue

                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific hash for {arch_name}: {e}")
                    arch_sha256 = self.sha256

                # Architecture field (kept in features table for ORDER BY)
                architecture = macho_features.cputype    # Raw CPU type value

                data.append([
                    arch_sha256,                          # sha256 (architecture-specific)
                    architecture,                         # architecture (raw CPU type)
                    # Raw values
                    macho_features.magic,                 # magic
                    macho_features.cputype,               # cputype
                    macho_features.cpusubtype,            # cpusubtype
                    macho_features.filetype,              # filetype
                    macho_features.ncmds,                 # ncmds
                    macho_features.sizeofcmds,            # sizeofcmds
                    macho_features.flags,                 # flags
                    # Human-readable values
                    macho_features.magic_str,             # magic_str
                    macho_features.cputype_str,           # cputype_str
                    macho_features.cpusubtype_str,        # cpusubtype_str
                    macho_features.filetype_str,          # filetype_str
                    macho_features.flags_str,             # flags_str
                    # Other fields
                    macho_features.is_64bit,              # is_64bit
                    macho_features.is_signed,             # is_signed
                    macho_features.entry_point if macho_features.entry_point else None,           # entry_point
                    macho_features.uuid if macho_features.uuid else None,  # uuid
                    json.dumps(macho_features.version_info) if macho_features.version_info else "{}",  # version_info
                    json.dumps(macho_features.version_info_str) if macho_features.version_info_str else "{}",  # version_info_str
                    macho_features.load_commands_set,     # load_commands_set
                    macho_features.number_of_segments,    # number_of_segments
                    macho_features.number_of_dylibs,      # number_of_dylibs
                    macho_features.number_of_imports,     # number_of_imports
                    macho_features.number_of_exports,     # number_of_exports
                    current_time,                         # analysis_date
                ])

            column_names = [
                'sha256', 'architecture',
                # Raw values
                'magic', 'cputype', 'cpusubtype', 'filetype', 'ncmds', 'sizeofcmds', 'flags',
                # Human-readable values
                'magic_str', 'cputype_str', 'cpusubtype_str', 'filetype_str', 'flags_str',
                # Other fields
                'is_64bit', 'is_signed',
                'entry_point', 'uuid', 'version_info', 'version_info_str', 'load_commands_set',
                'number_of_segments', 'number_of_dylibs', 'number_of_imports', 'number_of_exports',
                'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'Nullable(UInt32)',
                # Raw values
                'UInt32', 'UInt32', 'UInt32', 'UInt32', 'UInt32', 'UInt32', 'UInt32',
                # Human-readable values
                'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)', 'LowCardinality(String)', 'Array(LowCardinality(String))',
                # Other fields
                'UInt8', 'UInt8',
                'Nullable(UInt64)', 'Nullable(String)', 'JSON', 'JSON', 'Array(Nullable(String))',
                'UInt32', 'UInt32', 'UInt32', 'UInt32', 'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)
        
        return None

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