Varun Gupta

101 papers A* 6A 7B 1C 1Journal 65Unranked 20
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Varun Gupta, Vijay Kamble
2026 J jnl
IEEE Signal Process. Lett.
Mohan Bansal, Kartheek Budime, Varun Gupta
2025 J jnl
Int. J. Bioinform. Res. Appl.
Varun Gupta
2025 J jnl
CoRR
Jiaxin Shan, Varun Gupta, Le Xu, Haiyang Shi, Jingyuan Zhang, Ning Wang, Linhui Xu, Rong Kang, Tongping Liu, Yifei Zhang, Yiqing Zhu, Shuowei Jin, Gangmuk Lim, Binbin Chen, Zuzhi Chen, Xiao Liu, Xin Chen, Kante Yin, Chak-Pong Chung, Chenyu Jiang, Yicheng Lu, Jianjun Chen, Caixue Lin, Wu Xiang, Rui Shi, Liguang Xie
2025 J jnl
IEEE Access
Varun Gupta, Vivek Kumar, Prince, Saurabh Singh, Young-Seok Lee, In-Ho Ra
2025 J jnl
Appl. Intell.
Varun Gupta, Vaibhav Srivastava, Ankit Yadav, Dinesh Kumar Vishwakarma, Narendra Kumar
2025 J jnl
CoRR
Sarvesh Ravichandran Iyer, Himadri Mandal, Dhruman Gupta, Rushil Gupta, Agniv Bandhyopadhyay, Achal Bassamboo, Varun Gupta, Sandeep Juneja
2025 J jnl
J. Signal Process. Syst.
Varun Gupta, Sourav Diwania, Balram Tamrakar, Nikhil Rathi, Jyoti Srivastava
2025 J jnl
CoRR
Pranav Pawar, Dhwaj Jain, Varun Gupta, Kaustav Dedhia, Dashrath Kale, Sudhir Dhekane
2025 J jnl
Int. J. Autom. Control.
Abhas Kanungo, Varun Gupta, Sourav Diwania, Sachin Sharma, Neeraj Kumar Gupta
2024 J jnl
Eng. Appl. Artif. Intell.
Abhas Kanungo, Pankaj Kumar, Varun Gupta, Salim, Nitin Kumar Saxena
2024 J jnl
Wirel. Pers. Commun.
Varun Gupta, Nitin Kumar Saxena, Abhas Kanungo, Parvin Kumar, Sourav Diwania
2024 J jnl
Syst.
Varun Gupta
2024 J jnl
Wirel. Pers. Commun.
Varun Gupta, Danish Ather
2024 J jnl
Int. J. Syst. Assur. Eng. Manag.
Varun Gupta, Nitin Kumar Saxena, Abhas Kanungo, Sourav Diwania, Parvin Kumar, Vaishali Gupta
2024 conf
ITU K
Pimmy Gandotra, Varun Gupta, Brejesh Lall, Abdelaali Chaoub
2024 J jnl
SIGMETRICS Perform. Evaluation Rev.
Anton Braverman, Varun Gupta
2024 J jnl
Expert Syst. Appl.
Varun Gupta, Ankit Yadav, Dinesh Kumar Vishwakarma
2023 B conf
XP
Abdullah Aldaeej, Anh Nguyen-Duc, Varun Gupta
2023 J jnl
Multim. Tools Appl.
Varun Gupta, Abhas Kanungo, Pankaj Kumar, Neeraj Kumar Gupta, Chandan Choubey
2023 J jnl
Wirel. Pers. Commun.
Varun Gupta, Abhas Kanungo, Nitin Kumar Saxena, Pankaj Kumar, Parvin Kumar
2023 J jnl
Wirel. Pers. Commun.
Varun Gupta, Nitin Kumar Saxena, Abhas Kanungo, Salim, Gavendra Singh
2023 J jnl
Int. J. Medical Eng. Informatics
Varun Gupta
2023 J jnl
Multim. Tools Appl.
Abhas Kanungo, Chandan Choubey, Varun Gupta, Pankaj Kumar, Neeraj Kumar Gupta
2023 conf
SoCC
Wu Xiang, Yakun Li, Yuquan Ren, Fan Jiang, Chaohui Xin, Varun Gupta, Chao Xiang, Xinyi Song, Meng Liu, Bing Li, Kaiyang Shao, Chen Xu, Wei Shao, YuQi Fu, Wilson Wang, Cong Xu, Wei Xu, Caixue Lin, Rui Shi, Yuming Liang
2023 J jnl
CoRR
Sumit Kumar, Varun Gupta, Sankalp Sagar, Sachin Kumar Singh
2023 J jnl
CoRR
Ayoub Foussoul, Vineet Goyal, Varun Gupta
2023 conf
CDC
Jing Yu, Varun Gupta, Adam Wierman
2023 J jnl
CoRR
Jing Yu, Varun Gupta, Adam Wierman
2023 J jnl
Wirel. Pers. Commun.
Parvin Kumar, Amik Garg, Sanjay Kumar Sharma, Shelly Singla, Varun Gupta, Abhishek Sharma
2023 J jnl
Int. J. Data Anal. Tech. Strateg.
Varun Gupta, Parvin Kumar, Sourav Diwania, Nitin Kumar Saxena, Natwar Singh Rathore
2023 J jnl
J. Ambient Intell. Humaniz. Comput.
Varun Gupta
2022 J jnl
Wirel. Pers. Commun.
Varun Gupta, Monika Mittal, Vikas Mittal
2022 J jnl
Wirel. Pers. Commun.
Pankaj Kumar, S. Shilpi, Abhas Kanungo, Varun Gupta, Neeraj Kumar Gupta
2022 J jnl
Int. J. Syst. Assur. Eng. Manag.
Varun Gupta, Nitin Kumar Saxena, Abhas Kanungo, Anmol Gupta, Parvin Kumar, Salim
2022 J jnl
Int. J. Medical Eng. Informatics
Varun Gupta, Monika Mittal, Vikas Mittal, Anshu Gupta
2022 J jnl
Int. J. Artif. Intell. Educ.
Ekaterina Kochmar, Dung Do Vu, Robert Belfer, Varun Gupta, Iulian Vlad Serban, Joelle Pineau
2022 J jnl
Int. J. Appl. Pattern Recognit.
Kunal Karda, Namit Dubey, Abhas Kanungo, Varun Gupta
2022 J jnl
J. Ambient Intell. Humaniz. Comput.
Varun Gupta, Monika Mittal, Vikas Mittal, Yatender Chaturvedi
2022 conf
SIGMETRICS (Abstracts)
Yuwei Luo, Varun Gupta, Mladen Kolar
2022 J jnl
Proc. ACM Meas. Anal. Comput. Syst.
Yuwei Luo, Varun Gupta, Mladen Kolar
2022 J jnl
Int. J. Appl. Pattern Recognit.
Varun Gupta, Natwar Singh Rathore, Amit Kumar Arora, Sharad Gupta, Abhas Kanungo, Salim, Neeraj Kumar Gupta
2022 J jnl
Int. J. Circuit Theory Appl.
Nitin Kumar Saxena, David Wenzhong Gao, Ashwani Kumar, Saad Mekhilef, Varun Gupta
2022 conf
CCNC
Rushang Gupta, Varun Gupta, Akash Kumar Mandal, Swades De
2022 conf
IC3I
V. Kiruthiga, Sunanda Kondapalli, Varun Gupta, R. Aarthy, J. Sasidevi, C. Sasthi Kumar
2022 A* conf
SIGCOMM
Satyajeet Singh Ahuja, Vinayak Dangui, Kirtesh Patil, Manikandan Somasundaram, Varun Gupta, Mario A. Sánchez, Guanqing Yan, Max Noormohammadpour, Alaleh Razmjoo, Grace Smith, Hao Zhong, Abhinav Triguna, Soshant Bali, Yuxiang Xiang, Yilun Chen, Prabhakaran Ganesan, Mikel Jimenez Fernandez, Petr Lapukhov, Guyue Liu, Ying Zhang
2022 J jnl
Int. J. Syst. Assur. Eng. Manag.
Varun Gupta, Nitin Kumar Saxena, Abhas Kanungo, Parvin Kumar, Sourav Diwania
2022 conf
ONDM
Srivatsan Balasubramanian, Bodhisattwa Gangopadhyay, Vinayak Dangui, Satyajeet Singh Ahuja, Varun Gupta, Grigory Pastukhov, Max Noormohammadpour, Alexander Nikolaidis, Ariyani Copley, Xueqi He, Jiachuan Tian, Jiajia Chen, Arash Vakili, Chiunlin Lim, Guanqing Yan, Anand Gokul, Biao Lu, Debottym Mukherjee
2022 J jnl
Wirel. Pers. Commun.
Abhas Kanungo, Monika Mittal, Lillie Dewan, Vikas Mittal, Varun Gupta
2021 J jnl
Wirel. Pers. Commun.
Varun Gupta, Monika Mittal, Vikas Mittal
2021 A* conf
SIGCOMM
Satyajeet Singh Ahuja, Varun Gupta, Vinayak Dangui, Soshant Bali, Abishek Gopalan, Hao Zhong, Petr Lapukhov, Yiting Xia, Ying Zhang
2021 J jnl
Wirel. Pers. Commun.
Varun Gupta, Monika Mittal, Vikas Mittal
2021 conf
REFSQ Workshops
Varun Gupta, Jose Maria
2021 J jnl
CoRR
Yuwei Luo, Varun Gupta, Mladen Kolar
2021 J jnl
Iran J. Comput. Sci.
Varun Gupta, Monika Mittal, Vikas Mittal, Anshu Gupta
2021 J jnl
CoRR
Varun Gupta
2021 A* conf
SIGCOMM
Hang Zhu, Varun Gupta, Satyajeet Singh Ahuja, Yuandong Tian, Ying Zhang, Xin Jin
2021 conf
RE Workshops
Anh Nguyen-Duc, Varun Gupta, Chetan Arora, Pekka Abrahamsson, Jan Bosch
2021 J jnl
Int. J. Medical Eng. Informatics
Varun Gupta, Monika Mittal
2021 J jnl
Digit. Gov. Res. Pract.
Varun Gupta
2020 conf
AIED (2)
Iulian Vlad Serban, Varun Gupta, Ekaterina Kochmar, Dung Do Vu, Robert Belfer, Joelle Pineau, Aaron C. Courville, Laurent Charlin, Yoshua Bengio
2020 J jnl
CoRR
Iulian Vlad Serban, Varun Gupta, Ekaterina Kochmar, Dung Do Vu, Robert Belfer, Joelle Pineau, Aaron C. Courville, Laurent Charlin, Yoshua Bengio
2020 J jnl
Int. J. Medical Eng. Informatics
Varun Gupta, Monika Mittal
2020 conf
ICCS (3)
Varun Gupta, Adam Krzyzak
2020 A* conf
SIGCOMM
Ahmed Saeed, Varun Gupta, Prateesh Goyal, Milad Sharif, Rong Pan, Mostafa H. Ammar, Ellen W. Zegura, Keon Jang, Mohammad Alizadeh, Abdul Kabbani, Amin Vahdat
2020 conf
AIED (2)
Ekaterina Kochmar, Dung Do Vu, Robert Belfer, Varun Gupta, Iulian Vlad Serban, Joelle Pineau
2020 J jnl
CoRR
Ekaterina Kochmar, Dung Do Vu, Robert Belfer, Varun Gupta, Iulian Vlad Serban, Joelle Pineau
2020 J jnl
Int. J. Prod. Res.
Varun Gupta, Dmitry A. Ivanov
2020 J jnl
J. Mach. Learn. Res.
Ming Yu, Varun Gupta, Mladen Kolar
2020 J jnl
Eur. J. Oper. Res.
Sandun C. Perera, Varun Gupta, Winston S. Buckley
2020 A conf
ICDCS
Tarek Elgamal, Shu Shi, Varun Gupta, Rittwik Jana, Klara Nahrstedt
2020 J jnl
CoRR
Tarek Elgamal, Shu Shi, Varun Gupta, Rittwik Jana, Klara Nahrstedt
2020 J jnl
J. Mach. Learn. Res.
Ming Yu, Varun Gupta, Mladen Kolar
2020 J jnl
Int. Trans. Oper. Res.
Varun Gupta, Anshuman Chutani
2019 conf
NEAT@SIGCOMM
Zhehui Zhang, Shu Shi, Varun Gupta, Rittwik Jana
2019 A conf
MobiSys
Shu Shi, Varun Gupta, Rittwik Jana
2019 J jnl
J. Comput. Appl. Math.
Yongcheng Zhou, Varun Gupta
2019 A conf
MobiSys
Shu Shi, Michael Hwang, Varun Gupta, Rittwik Jana
2019 A conf
AISTATS
Ming Yu, Varun Gupta, Mladen Kolar
2019 A conf
MMSys
Shu Shi, Varun Gupta, Michael Hwang, Rittwik Jana
2019 conf
AffComp@IJCAI
Moumita Sinha, Jennifer Healey, Faran Ahmad, Varun Gupta, Niloy Ganguly
2019 J jnl
Int. J. Comput. Intell. Stud.
Akshat Jain, Ashim Bhasin, Varun Gupta
2019 A conf
MMSys
Shu Shi, Michael Hwang, Varun Gupta, Bo Han, Vijay Gopalakrishnan, Rittwik Jana
2019 J jnl
Int. J. Comput. Intell. Stud.
Varun Gupta, Mujahid Ahmad
2018 conf
APPIS
Varun Gupta, Namita Sengar, Malay Kishore Dutta, Carlos Manuel Travieso-González
2018 J jnl
CoRR
Ming Yu, Varun Gupta, Mladen Kolar
2017 A* conf
ICDM
Ming Yu, Varun Gupta, Mladen Kolar
2017 J jnl
CoRR
Ming Yu, Varun Gupta, Mladen Kolar
2017 conf
ICEGOV
Durgaprasad Misra, Alka Mishra, Sunil Babbar, Varun Gupta
2017 conf
VTC Spring
Ankit Kudeshia, Varun Gupta, Neharika Valecha, Aditya K. Jagannatham
2016 conf
ICACDS
Varun Gupta, Abhas Kanungo, Piyush Chandra Ojha, Pankaj Kumar
2016 conf
NIPS
Ming Yu, Mladen Kolar, Varun Gupta
2011 J jnl
Biol. Cybern.
Karmeshu, Varun Gupta, K. V. Kadambari
2011
Varun Gupta
2010 conf
BAIP
Sanchit Gupta, Himanshu Gahlot, Varun Gupta, Banshi Dhar Chaudhary
2010 J jnl
IEEE/ACM Trans. Netw.
Milan Vojnovic, Varun Gupta, Thomas Karagiannis, Christos Gkantsidis
2009 C conf
ISCAS
Nitin Krishnapura, Varun Gupta, Nagendra Agrawal
2008 J jnl
SIGMETRICS Perform. Evaluation Rev.
Varun Gupta
2008 J jnl
SIGMETRICS Perform. Evaluation Rev.
Varun Gupta, Peter G. Harrison
2008 A* conf
INFOCOM
Milan Vojnovic, Varun Gupta, Thomas Karagiannis, Christos Gkantsidis
2008 A conf
IPDPS
Akshay Lal, Varun Gupta, Khaled Harfoush, Injong Rhee
redb/extractors/macho_extractors/macho_universal.py
← Index redb/extractors/macho_extractors/macho_universal.py python
import hashlib
import inspect
import json
from datetime import datetime, timezone
from typing import Any, List

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


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

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

    def _extract_universal_info(self):
        """Extract Universal/FAT binary architecture information using new API."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Parse at Universal level first (new API requirement)
            self.macho.parse()

            # Get architectures using new API
            architectures = self.macho.get_architectures()
            if not architectures:
                return None

            # Check if this is a FAT binary
            is_fat = len(architectures) > 1

            architecture_info = []

            # Extract info for each architecture
            for arch_name in architectures:
                try:
                    # Get general info for this architecture
                    general_info = self.macho.get_general_info(arch=arch_name)

                    # Get header info for this architecture
                    header_info = self.macho.get_macho_header(arch=arch_name)

                    # Get architecture-specific MachO instance for detailed analysis
                    arch_macho = self.macho.get_macho_for_arch(arch_name)

                    # Calculate architecture slice hash (if we can access the raw data)
                    arch_sha256 = None
                    arch_md5 = None
                    arch_sha1 = None

                    # For FAT binaries, try to get slice-specific info
                    if is_fat and arch_macho:
                        try:
                            # This would require access to the slice data
                            # For now, we'll use the general file info
                            arch_sha256 = general_info.get('SHA256', '') if general_info else ''
                            arch_md5 = general_info.get('MD5', '') if general_info else ''
                            arch_sha1 = general_info.get('SHA1', '') if general_info else ''
                        except Exception as e:
                            self.log.debug(f"Could not extract slice hash for {arch_name}: {e}")

                    architecture_info.append({
                        'architecture': arch_name,
                        'arch_sha256': arch_sha256,
                        'arch_md5': arch_md5,
                        'arch_sha1': arch_sha1,
                        'cputype': header_info.get('cputype') if header_info else None,
                        'cpusubtype': header_info.get('cpusubtype') if header_info else None,
                        'filetype': header_info.get('filetype') if header_info else None
                    })

                except Exception as e:
                    self.log.warning(f"Error extracting info for architecture {arch_name}: {e}")
                    continue

            # Create Universal dataclass
            macho_universal = MachOUniversal(
                is_fat=is_fat,
                architecture_count=len(architectures),
                architectures=architectures,
                architecture_info=architecture_info,
                fat_hash=self.sha256,
                fat_md5=self.md5,
                fat_sha1=self.sha1
            )

            return macho_universal

        except Exception as e:
            self.log.error(f"Error extracting MachO Universal info: {e}")
            return None

    def _extract_fat_architecture_mappings(self):
        """Extract detailed FAT binary architecture mappings for database relationships."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return []

        try:
            # Parse at Universal level first
            self.macho.parse()

            # Get architectures using new API
            architectures = self.macho.get_architectures()
            if not architectures or len(architectures) <= 1:
                return []  # Not a FAT binary

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

            # For each architecture, create a mapping record
            for arch_name in architectures:
                try:
                    # Get general info
                    general_info = self.macho.get_general_info()

                    # Create mapping record for FAT binary architecture table
                    mapping = {
                        'fat_hash': self.sha256,  # SHA256 of the FAT binary
                        'architecture': arch_name,
                        'arch_sha256': general_info.get('SHA256', '') if general_info else '',  # Will need proper slice extraction
                        'arch_md5': general_info.get('MD5', '') if general_info else '',
                        'arch_sha1': general_info.get('SHA1', '') if general_info else '',
                        'arch_filename': f"{general_info.get('Filename', '')}.{arch_name}" if general_info else '',
                        'analysis_date': current_time
                    }
                    mappings.append(mapping)

                except Exception as e:
                    self.log.warning(f"Error creating mapping for architecture {arch_name}: {e}")
                    continue

            return mappings

        except Exception as e:
            self.log.error(f"Error extracting FAT architecture mappings: {e}")
            return []

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            universal_info = self._extract_universal_info()
            return universal_info
        except Exception as e:
            self.log.error(f"Error extracting MachO Universal info: {e}")
            return None

    def extract_fat_binary_basic_properties_data(self):
        """Extract data needed for creating multiple BasicProperties records for FAT binaries.

        Returns:
            Tuple: (is_fat, fat_sha256, architectures_info) where:
                - is_fat: bool indicating if this is a FAT binary
                - fat_sha256: SHA256 of the FAT wrapper
                - architectures_info: dict with arch names and their hashes
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return False, None, {}

        try:
            # Parse at Universal level first
            self.macho.parse()

            # Get architectures using new API
            architectures = self.macho.get_architectures()
            if not architectures or len(architectures) <= 1:
                return False, None, {}  # Not a FAT binary

            # This is a FAT binary
            architectures_info = {}

            for arch_name in architectures:
                try:
                    # Get general info for this architecture
                    general_info = self.macho.get_general_info(arch=arch_name)

                    if general_info:
                        architectures_info[arch_name] = {
                            'sha256': general_info.get('SHA256', ''),
                            'md5': general_info.get('MD5', ''),
                            'sha1': general_info.get('SHA1', ''),
                            'filename': general_info.get('Filename', ''),
                            'filesize': general_info.get('Filesize', 0)
                        }
                except Exception as e:
                    self.log.warning(f"Error extracting info for architecture {arch_name}: {e}")
                    continue

            return True, self.sha256, architectures_info

        except Exception as e:
            self.log.error(f"Error extracting FAT binary data: {e}")
            return False, None, {}

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

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

            # Get architecture info for the binary
            try:
                if universal_info.is_fat:
                    # For FAT binaries, architecture fields should be NULL since it contains multiple
                    architecture_raw = None
                    architecture_str = None
                else:
                    # For single-arch binaries, get the actual architecture info
                    header_info = self.macho.get_macho_header()
                    architecture_raw = header_info.get('cputype', 0) if header_info else 0
                    architecture_str = universal_info.architectures[0] if universal_info.architectures else None
            except Exception as e:
                self.log.warning(f"Could not get architecture info for binary: {e}")
                architecture_raw = None
                architecture_str = None

            # Main Universal binary record
            data.append([
                self.sha256,                              # sha256
                self.md5,                                 # md5
                self.sha1,                                # sha1
                None,                                     # parent_sha256 (always None for main FAT binary)
                architecture_raw,                         # architecture (raw CPU type)
                architecture_str,                         # architecture_str (human-readable)
                universal_info.is_fat,                    # is_fat
                universal_info.architecture_count,       # architecture_count
                universal_info.architectures,            # architectures (array)
                json.dumps(universal_info.architecture_info[0] if len(universal_info.architecture_info) == 1 else {"architectures": universal_info.architecture_info}) if universal_info.architecture_info else None,  # architecture_info (JSON)
                current_time,                             # analysis_date
            ])

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'architecture', 'architecture_str',
                'is_fat', 'architecture_count', 'architectures', 'architecture_info',
                'analysis_date'
            ]

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'Nullable(FixedString(64))', 'Nullable(UInt32)', 'LowCardinality(Nullable(String))',
                'UInt8', 'UInt32', 'Array(LowCardinality(String))', 'JSON',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

    def prepare_fat_architecture_export_data(self) -> Any:
        """Prepare export data for the FAT binary architecture mapping table."""
        mappings = self._extract_fat_architecture_mappings()
        if not mappings:
            return None

        data = []
        for mapping in mappings:
            data.append([
                mapping['fat_hash'],
                mapping['architecture'],
                mapping['arch_sha256'],
                mapping['arch_md5'],
                mapping['arch_sha1'],
                mapping['arch_filename'],
                mapping['analysis_date'],
            ])

        column_names = [
            'fat_hash', 'architecture', 'arch_sha256', 'arch_md5', 'arch_sha1',
            'arch_filename', 'analysis_date'
        ]

        column_type_names = [
            'FixedString(64)', 'LowCardinality(String)', 'FixedString(64)',
            'FixedString(32)', 'FixedString(40)', 'String',
            'DateTime64(3, \'UTC\')'
        ]

        return (data, column_names, column_type_names)

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

    # def get_fat_architecture_table(self) -> str:
    #     """Return table name for FAT binary architecture mappings."""
    #     return "redb_fat_binary_architectures"