M. M. Sufyan Beg

54 papers B 2Misc 2Journal 29Unranked 19
YearRankTypeTitle / Venue / Authors
2024 conf
ICECET
Hera Neyaz, Muhammad Inamullah, M. M. Sufyan Beg
2024 conf
ICECET
Sara Amjad, M. Azhar Aziz, M. M. Sufyan Beg
2023 J jnl
SN Comput. Sci.
Bushra Siddique, M. M. Sufyan Beg
2022 J jnl
SN Comput. Sci.
Samar Wazir, M. M. Sufyan Beg, Tanvir Ahmad
2022 J jnl
IEEE Access
Bushra Siddique, M. M. Sufyan Beg
2021 J jnl
CoRR
Asra Aslam, Ekram Khan, Mohammad Samar Ansari, M. M. Sufyan Beg
2021 J jnl
CoRR
Mohd Zeeshan Ansari, Tanvir Ahmad, M. M. Sufyan Beg, Asma Ikram
2021 J jnl
Future Gener. Comput. Syst.
Md. Muzakkir Hussain, M. M. Sufyan Beg
2021 conf
ICCI*CC
Mohd Zeeshan Ansari, M. M. Sufyan Beg, Tanvir Ahmad, Mohd Jazib Khan, Ghazali Wasim
2021 J jnl
CoRR
Mohd Zeeshan Ansari, M. M. Sufyan Beg, Tanvir Ahmad, Mohd Jazib Khan, Ghazali Wasim
2020 J jnl
Computación y Sistemas
Shashi Shekhar, Dilip Kumar Sharma, M. M. Sufyan Beg
2020 J jnl
Int. J. Comput. Vis. Robotics
Shashi Shekhar, Dilip Kumar Sharma, M. M. Sufyan Beg
2020 J jnl
J. Intell. Fuzzy Syst.
Nadeem Akhtar, M. M. Sufyan Beg, Md. Muzakkir Hussain
2020 J jnl
Wirel. Pers. Commun.
Md. Muzakkir Hussain, M. M. Sufyan Beg, Mohammad Saad Alam
2020 J jnl
J. Intell. Fuzzy Syst.
Md. Muzakkir Hussain, Mohammad Saad Alam, M. M. Sufyan Beg, Nadeem Akhtar
2020 J jnl
Mach. Vis. Appl.
Tawseef Ayoub Shaikh, Rashid Ali, M. M. Sufyan Beg
2019 J jnl
Int. J. Knowl. Based Intell. Eng. Syst.
Shashi Shekhar, Dilip Kumar Sharma, M. M. Sufyan Beg
2019 J jnl
Int. J. Digit. Crime Forensics
Md. Muzakkir Hussain, M. M. Sufyan Beg, Mohammad Saad Alam, Shahedul Haque Laskar
2019 conf
IC3I
Shashi Shekhar, Dilip Kumar Sharma, M. M. Sufyan Beg
2019 ch.
Fog and Edge Computing
Md. Muzakkir Hussain, Mohammad Saad Alam, M. M. Sufyan Beg
2019 J jnl
Big Data Cogn. Comput.
Md. Muzakkir Hussain, M. M. Sufyan Beg
2019 ch.
Smart Data
Md. Muzakkir Hussain, Mohammad Saad Alam, M. M. Sufyan Beg, S. M. Shariff
2019 conf
IC3
Nadeem Akhtar, M. M. Sufyan Beg, Hira Javed
2019 conf
ICACDS (2)
Nadeem Akhtar, M. M. Sufyan Beg, Hira Javed
2019 J jnl
J. Intell. Fuzzy Syst.
Nadeem Akhtar, M. M. Sufyan Beg
2018 J jnl
IEEE Access
Amer Awad Alzaidi, Musheer Ahmad, Mohammad Najam Doja, Eesa A. Alsolami, M. M. Sufyan Beg
2018 conf
SSCC
Musheer Ahmad, Mohammad Najam Doja, M. M. Sufyan Beg
2018 J jnl
Comput. J.
Lalit Mohan Goyal, M. M. Sufyan Beg, Tanvir Ahmad
2018 conf
ICCI*CC
Md. Muzakkir Hussain, Sheikh Amanur Rahman, M. M. Sufyan Beg, Rashid Ali
2018 conf
BigCom
Md. Muzakkir Hussain, M. M. Sufyan Beg, Mohammad Saad Alam, Mahesh Krishnamurthy, Qazi Mazhar Ali
2018 J jnl
CoRR
Md. Muzakkir Hussain, Mohammad Saad Alam, M. M. Sufyan Beg
2018 J jnl
CoRR
Md. Muzakkir Hussain, Mohammad Saad Alam, M. M. Sufyan Beg
2018 J jnl
Int. J. Rough Sets Data Anal.
Mohd Zeeshan Ansari, M. M. Sufyan Beg
2016 J jnl
Int. J. Intell. Syst.
Gulfam Ahamad, S. Kazim Naqvi, M. M. Sufyan Beg
2016 conf
WCSC
Samar Wazir, Tanvir Ahmad, M. M. Sufyan Beg
2015 conf
SCSE
Gulfam Ahamad, S. Kazim Naqvi, M. M. Sufyan Beg, Tanvir Ahmed
2015 conf
SCSE
Sherin Zafar, M. K. Soni, M. M. Sufyan Beg
2015 J jnl
Int. J. Mach. Learn. Cybern.
Abdul Rahman, M. M. Sufyan Beg
2015 conf
SCSE
Abdul Rahman, Tanvir Ahmad, M. M. Sufyan Beg
2014 J jnl
CoRR
Parvez Mahmood Khan, M. M. Sufyan Beg
2014 J jnl
CoRR
Parvez Mahmood Khan, M. M. Sufyan Beg
2013 B conf
FUZZ-IEEE
Abdul Rahman, M. M. Sufyan Beg
2013 B conf
FUZZ-IEEE
Bindu Garg, M. M. Sufyan Beg, Abdul Quaiyum Ansari
2013 conf
WCSC
Abdul Rahman, M. M. Sufyan Beg
2013 conf
WCSC
Gulfam Ahamad, S. Kazim Naqvi, M. M. Sufyan Beg
2012 J jnl
Int. J. Granul. Comput. Rough Sets Intell. Syst.
Vaibhav Sharma, M. M. Sufyan Beg
2011 J jnl
Int. J. Granul. Comput. Rough Sets Intell. Syst.
B. Mohammed Imran, M. M. Sufyan Beg
2011 conf
NaBIC
Bindu Garg, M. M. Sufyan Beg, Abdul Quaiyum Ansari
2011 conf
NaBIC
Bindu Garg, M. M. Sufyan Beg, Abdul Quaiyum Ansari
2011 conf
ICISTM
Bindu Garg, M. M. Sufyan Beg, Abdul Quaiyum Ansari, B. Mohammed Imran
2011 conf
ICISTM
Bindu Garg, M. M. Sufyan Beg, Abdul Quaiyum Ansari, B. Mohammed Imran
2010 Misc conf
GrC
Vaibhav Sharma, M. M. Sufyan Beg
2010 Misc conf
GrC
B. Mohammed Imran, M. M. Sufyan Beg
2005 J jnl
Inf. Sci.
M. M. Sufyan Beg
tests/integration/test_pe_extractor.py
← Index tests/integration/test_pe_extractor.py python
"""
Integration tests for the PEExtractor base class.
"""
import pytest
from unittest.mock import Mock, patch, MagicMock

pytestmark = [pytest.mark.integration, pytest.mark.pe]


class TestPEExtractorInitialization:
    """Tests for PEExtractor initialization."""

    def test_pe_extractor_with_valid_pe(self, pe_binary_path, mock_logger):
        """Test PEExtractor initialization with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            assert extractor.pe is not None
            assert extractor.filepath == pe_binary_path

    def test_pe_extractor_with_provided_pe_object(self, pe_binary_path, mock_logger, pe_object):
        """Test PEExtractor initialization with pre-existing PE object."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger, pe=pe_object)

            # Should use the provided PE object, not create a new one
            assert extractor.pe is pe_object

    def test_pe_extractor_with_invalid_file(self, elf_binary_path, mock_logger):
        """Test PEExtractor initialization with non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return None for pe when file is not a valid PE
            assert extractor.pe is None
            # Logger should have recorded an error
            assert mock_logger.error.called


class TestPEExtractorMethods:
    """Tests for PEExtractor helper methods."""

    def test_check_dotnet_true(self, pe_binary_path, mock_logger):
        """Test _check_dotnet returns True for .NET PE."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The test PE file is a .NET binary
            if extractor.pe is not None:
                result = extractor._check_dotnet()
                # d8637bdbcfc9112fcb1f0167b398e771 is a .NET binary
                assert result is True

    def test_check_dotnet_false(self, elf_binary_path, mock_logger):
        """Test _check_dotnet returns False for non-PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(elf_binary_path, mock_logger)

            # Should return False when PE is None
            result = extractor._check_dotnet()
            assert result is False

    def test_is_signed_false(self, pe_binary_path, mock_logger):
        """Test _is_signed method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._is_signed()
                # Result depends on the actual binary
                assert isinstance(result, bool)

    def test_has_overlay(self, pe_binary_path, mock_logger):
        """Test _has_overlay method."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                result = extractor._has_overlay()
                assert isinstance(result, bool)


class TestGeneratePEFileObject:
    """Tests for _generate_pefile_object method."""

    def test_generate_pefile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_pefile_object with valid PE file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            # The PE object should be created successfully
            assert extractor.pe is not None

    def test_generate_pefile_object_invalid(self, temp_text_file, mock_logger):
        """Test _generate_pefile_object with invalid file."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(temp_text_file, mock_logger)

            # Should return None for invalid PE
            assert extractor.pe is None


class TestGenerateDotNetFileObject:
    """Tests for _generate_dotnetfile_object method."""

    def test_generate_dotnetfile_object_valid(self, pe_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with .NET PE file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None and extractor._check_dotnet():
                dotnet, error = extractor._generate_dotnetfile_object()
                # Should create dotnet object for .NET PE
                assert dotnet is not None
                assert error is None

    def test_generate_dotnetfile_object_invalid(self, elf_binary_path, mock_logger):
        """Test _generate_dotnetfile_object with non-.NET file."""
        from redb.extractors.pe_extractors.pe_dotnet import PEDotNetExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEDotNetExtractor(elf_binary_path, mock_logger)

            dotnet, error = extractor._generate_dotnetfile_object()
            # Should return error for non-.NET file
            assert dotnet is None
            assert error is not None


class TestPEExtractorTag:
    """Tests for tag method in PE extractors."""

    def test_pe_features_tag(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_FEATURES.value

    def test_pe_import_tag(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_IMPORT.value

    def test_pe_section_tag(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct tag."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor
        from redb.extractors.enum import Tag

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.tag() == Tag.PE_SECTION.value


class TestPEExtractorClickHouseTable:
    """Tests for get_clickhouse_table method in PE extractors."""

    def test_pe_features_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEFeaturesExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_features"

    def test_pe_import_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PEImportExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_imports import PEImportExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEImportExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_imports"

    def test_pe_section_clickhouse_table(self, pe_binary_path, mock_logger):
        """Test that PESectionExtractor returns correct ClickHouse table name."""
        from redb.extractors.pe_extractors.pe_sections import PESectionExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PESectionExtractor(pe_binary_path, mock_logger)
            assert extractor.get_clickhouse_table() == "redb_pe_sections"


class TestPEExtractorPrepareExportData:
    """Tests for prepare_export_data method in PE extractors."""

    def test_pe_features_prepare_export_elasticsearch(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for Elasticsearch."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ElasticsearchExporter")
                # Should return the pe_features dataclass
                assert result is extractor.pe_features

    def test_pe_features_prepare_export_clickhouse(self, pe_binary_path, mock_logger):
        """Test prepare_export_data for ClickHouse."""
        from redb.extractors.pe_extractors.pe_features import PEFeaturesExtractor

        with patch('redb.settings.ELASTIC_BINARIES_COLLECTION', 'test'):
            extractor = PEFeaturesExtractor(pe_binary_path, mock_logger)

            if extractor.pe is not None:
                # First extract
                extractor.extract()
                result = extractor.prepare_export_data("ClickHouseExporter")

                # Should return tuple of (data, column_names, column_type_names)
                assert isinstance(result, tuple)
                assert len(result) == 3
                data, column_names, column_type_names = result
                assert isinstance(data, list)
                assert isinstance(column_names, list)
                assert isinstance(column_type_names, list)
                # Column names and types should match in length
                assert len(column_names) == len(column_type_names)