Nader Motee

133 papers A* 2A 2C 29Journal 64Unranked 36
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Amirhossein Mollaei Khass, Guangyi Liu, Vivek Pandey, Wen Jiang, Boshu Lei, Kostas Daniilidis, Nader Motee
2025 J jnl
CoRR
Panpan Chen, Nader Motee, Qiyu Sun
2025 J jnl
CoRR
Nader Motee, Qiyu Sun
2025 conf
CDC
Vivek Pandey, Milad Siami, Nader Motee
2025 J jnl
CoRR
Vivek Pandey, Nader Motee
2025 J jnl
CoRR
Vivek Pandey, Nader Motee
2025 J jnl
CoRR
Vivek Pandey, Amirhossein Mollaei, Nader Motee
2025 J jnl
IEEE Trans. Control. Netw. Syst.
Arash Amini, Qiyu Sun, Nader Motee
2024 J jnl
CoRR
Guangyi Liu, Wen Jiang, Boshu Lei, Vivek Pandey, Kostas Daniilidis, Nader Motee
2024 J jnl
CoRR
Panpan Chen, Nader Motee, Qiyu Sun
2024 C conf
ACC
Guangyi Liu, Arash Amini, Vivek Pandey, Nader Motee
2024 A conf
IROS
Vivek Pandey, Arash Amini, Guangyi Liu, Ufuk Topcu, Qiyu Sun, Kostas Daniilidis, Nader Motee
2024 J jnl
CoRR
Vivek Pandey, Arash Amini, Guangyi Liu, Ufuk Topcu, Qiyu Sun, Kostas Daniilidis, Nader Motee
2023 C conf
ACC
Guangyi Liu, Vivek Pandey, Christoforos Somarakis, Nader Motee
2023 J jnl
CoRR
Guangyi Liu, Vivek Pandey, Christoforos Somarakis, Nader Motee
2023 J jnl
CoRR
Guangyi Liu, Arash Amini, Vivek Pandey, Nader Motee
2023 conf
CDC
Arash Amini, Guangyi Liu, Vivek Pandey, Nader Motee
2023 conf
CDC
Vivek Pandey, Guangyi Liu, Arash Amini, Nader Motee
2023 J jnl
CoRR
Vivek Pandey, Guangyi Liu, Arash Amini, Nader Motee
2023 J jnl
CoRR
Guangyi Liu, Christoforos Somarakis, Nader Motee
2023 J jnl
IEEE Trans. Autom. Control.
Christoforos Somarakis, Guangyi Liu, Nader Motee
2023 J jnl
IEEE Trans. Control. Netw. Syst.
Arash Amini, Hossein K. Mousavi, Qiyu Sun, Nader Motee
2023 C conf
ACC
Guangyi Liu, Disha Kamale, Cristian-Ioan Vasile, Nader Motee
2023 J jnl
CoRR
Guangyi Liu, Disha Kamale, Cristian-Ioan Vasile, Nader Motee
2022 J jnl
CoRR
Arash Amini, Cong Zheng, Qiyu Sun, Nader Motee
2022 conf
CDC
Guangyi Liu, Christoforos Somarakis, Nader Motee
2022 J jnl
CoRR
Arash Amini, Qiyu Sun, Nader Motee
2022 conf
CDC
Arash Amini, Qiyu Sun, Nader Motee
2022 J jnl
SIAM J. Control. Optim.
Nader Motee, Qiyu Sun
2022 J jnl
IEEE Trans. Control. Netw. Syst.
Shima Dezfulian, Yaser Ghaedsharaf, Nader Motee
2022 C conf
ACC
Guangyi Liu, Vivek Pandey, Christoforos Somarakis, Nader Motee
2022 J jnl
CoRR
Guangyi Liu, Arash Amini, Martin Takác, Nader Motee
2021 J jnl
Autom.
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2021 conf
DARS
Guangyi Liu, Arash Amini, Martin Takác, Nader Motee
2021 J jnl
CoRR
Guangyi Liu, Christoforos Somarakis, Nader Motee
2021 conf
CDC
Guangyi Liu, Christoforos Somarakis, Nader Motee
2021 J jnl
CoRR
Guangyi Liu, Christoforos Somarakis, Nader Motee
2021 J jnl
CoRR
Christoforos Somarakis, Guangyi Liu, Nader Motee
2021 conf
CDC
Arash Amini, Guangyi Liu, Nader Motee
2021 J jnl
CoRR
Arash Amini, Guangyi Liu, Nader Motee
2020 J jnl
IEEE Trans. Control. Netw. Syst.
Christoforos Somarakis, Nader Motee
2020 C conf
ACC
Arash Amini, Qiyu Sun, Nader Motee
2020 C conf
ACC
Christoforos Somarakis, Nader Motee
2020 J jnl
IEEE Robotics Autom. Lett.
Hossein K. Mousavi, Nader Motee
2020 J jnl
IEEE Trans. Control. Netw. Syst.
Hossein K. Mousavi, Nader Motee
2020 J jnl
IEEE Trans. Autom. Control.
Milad Siami, Nader Motee, Gentian Buzi, Bassam Bamieh, Mustafa Khammash, John C. Doyle
2020 conf
CDC
Arash Amini, Qiyu Sun, Nader Motee
2020 J jnl
CoRR
Guangyi Liu, Arash Amini, Martin Takác, Héctor Muñoz-Avila, Nader Motee
2020 J jnl
IEEE Trans. Autom. Control.
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2019 J jnl
CoRR
Hossein K. Mousavi, Guangyi Liu, Weihang Yuan, Martin Takác, Héctor Muñoz-Avila, Nader Motee
2019 J jnl
CoRR
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2019 J jnl
CoRR
Hossein K. Mousavi, Nader Motee
2019 J jnl
CoRR
Hossein K. Mousavi, Nader Motee
2019 C conf
ACC
Hossein K. Mousavi, Qiyu Sun, Nader Motee
2019 A conf
IROS
Hossein K. Mousavi, MohammadReza Nazari, Martin Takác, Nader Motee
2019 J jnl
CoRR
Hossein K. Mousavi, MohammadReza Nazari, Martin Takác, Nader Motee
2019 J jnl
IEEE Trans. Autom. Control.
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2019 J jnl
IEEE Trans. Autom. Control.
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 J jnl
CoRR
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 C conf
ACC
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 J jnl
IEEE Trans. Control. Netw. Syst.
Milad Siami, Sadegh Bolouki, Bassam Bamieh, Nader Motee
2018 J jnl
IEEE Trans. Control. Netw. Syst.
Christoforos Somarakis, Evripidis Paraskevas, John S. Baras, Nader Motee
2018 conf
CDC
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 J jnl
IEEE Trans. Autom. Control.
Milad Siami, Nader Motee
2018 J jnl
CoRR
Hossein K. Mousavi, Christoforos Somarakis, Nader Motee
2018 J jnl
IEEE Trans. Autom. Control.
Milad Siami, Nader Motee
2018 C conf
ACC
Shima Dezfulian, Yaser Ghaedsharaf, Nader Motee
2018 J jnl
CoRR
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2018 C conf
ACC
Hossein K. Mousavi, Nader Motee
2018 C conf
ACC
Yaser Ghaedsharaf, Christoforos Somarakis, Nader Motee
2018 J jnl
CoRR
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 conf
CDC
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2018 J jnl
CoRR
Hossein K. Mousavi, Qiyu Sun, Nader Motee
2018 J jnl
CoRR
MirSaleh Bahavarnia, Hossein K. Mousavi, Nader Motee
2018 J jnl
CoRR
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2017 J jnl
CoRR
Milad Siami, Nader Motee
2017 C conf
ACC
Christoforos Somarakis, Yaser Ghaedsharaf, Nader Motee
2017 conf
CDC
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2017 J jnl
CoRR
Milad Siami, Nader Motee, Gentian Buzi, Bassam Bamieh, Mustafa Khammash, John C. Doyle
2017 J jnl
CoRR
Milad Siami, Nader Motee
2017 conf
CDC
MirSaleh Bahavarnia, Paulo Tabuada, Christoforos Somarakis, Nader Motee
2017 J jnl
Autom.
Milad Siami, Nader Motee
2017 C conf
ACC
Hossein K. Mousavi, Christoforos Somarakis, MirSaleh Bahavarnia, Nader Motee
2017 C conf
ACC
Yaser Ghaedsharaf, Nader Motee
2017 conf
MED
MirSaleh Bahavarnia, Nader Motee
2017 J jnl
SIAM J. Control. Optim.
Nader Motee, Qiyu Sun
2017 conf
CDC
Hossein K. Mousavi, Christoforos Somarakis, Nader Motee
2017 conf
CDC
MirSaleh Bahavarnia, Christoforos Somarakis, Nader Motee
2017 J jnl
IEEE Trans. Control. Netw. Syst.
Sadegh Bolouki, Roland P. Malhamé, Milad Siami, Nader Motee
2016 conf
CDC
Reza Arastoo, MirSaleh Bahavarnia, Mayuresh V. Kothare, Nader Motee
2016 J jnl
IEEE Trans. Autom. Control.
Milad Siami, Nader Motee
2016 conf
ECC
Yaser Ghaedsharaf, Milad Siami, Christoforos Somarakis, Nader Motee
2016 conf
CDC
Hossein K. Mousavi, Christoforos Somarakis, Nader Motee
2016 conf
CDC
Nader Motee, Qiyu Sun
2016 conf
CDC
Milad Siami, Bassam Bamieh, Sadegh Bolouki, Nader Motee
2016 C conf
ACC
Reza Arastoo, Yaser Ghaedsharaf, Mayuresh V. Kothare, Nader Motee
2016 conf
Allerton
MirSaleh Bahavarnia, Nader Motee
2016 conf
MED
Christoforos Somarakis, Evripidis Paraskevas, John S. Baras, Nader Motee
2016 C conf
ACC
Milad Siami, Nader Motee
2015 C conf
ACC
Milad Siami, Nader Motee
2015 J jnl
CoRR
Milad Siami, Nader Motee
2014 conf
CDC
Sadegh Bolouki, Roland P. Malhamé, Milad Siami, Nader Motee
2014 J jnl
CoRR
Sadegh Bolouki, Roland P. Malhamé, Milad Siami, Nader Motee
2014 conf
Allerton
Sadegh Bolouki, Milad Siami, Roland P. Malhamé, Nader Motee
2014 C conf
ACC
Milad Siami, Nader Motee
2014 C conf
ACC
Nader Motee, Qiyu Sun
2014 J jnl
CoRR
Milad Siami, Nader Motee
2014 conf
CDC
Milad Siami, Nader Motee
2013 C conf
ACC
Milad Siami, Nader Motee, Gentian Buzi
2013 conf
MED
Milad Siami, Nader Motee
2013 conf
CDC
Milad Siami, Nader Motee
2013 conf
CDC
Nader Motee, Qiyu Sun
2013 conf
SIAM Conf. on Control and its Applications
Milad Siami, Nader Motee
2012 J jnl
Autom.
Nader Motee, Bassam Bamieh, Mustafa Khammash
2010 A* conf
ICRA
Nader Motee, Ali Jadbabaie, George J. Pappas
2010 conf
CDC
Nader Motee, Bassam Bamieh, Mustafa Khammash
2010 C conf
ACC
Nader Motee, Ali Jadbabaie, George J. Pappas
2010 conf
CDC
Nader Motee, Fiona Chandra, Bassam Bamieh, Mustafa Khammash, John C. Doyle
2010 C conf
ACC
Nader Motee, Bassam Bamieh, Mustafa Khammash
2009 C conf
ACC
Nader Motee, Ali Jadbabaie
2009 J jnl
IEEE Trans. Autom. Control.
Nader Motee, Ali Jadbabaie
2009 A* conf
ICRA
Ali Ahmadzadeh, Nader Motee, Ali Jadbabaie, George J. Pappas
2008 C conf
ACC
Nader Motee, Ali Jadbabaie, Bassam Bamieh
2008 J jnl
IEEE Trans. Autom. Control.
Nader Motee, Ali Jadbabaie
2007 conf
CDC
Nader Motee, Ali Jadbabaie
2007 C conf
ACC
Nader Motee, Ali Jadbabaie
2006 C conf
ACC
Nader Motee, Ali Jadbabaie
2006 conf
CDC
Nader Motee, Ali Jadbabaie
2004 C conf
ACC
Ali Jadbabaie, Nader Motee, Mauricio Barahona
2003 conf
CDC
Nader Motee, Marcio S. de Queiroz
2003 C conf
ACC
Nader Motee, Bijan Sayyar-Rodsari
2002 C conf
ACC
Nader Motee, Marcio S. de Queiroz, Yongchun Fang, Darren M. Dawson
2002 conf
CDC
Nader Motee, Marcio S. de Queiroz
tests/scripts/test_macho_extractors_local.py
← Index tests/scripts/test_macho_extractors_local.py python
#!/usr/bin/env python3
"""
Local MachO extractors test - test actual extractors without server connections
"""

import sys
import os
import logging
import hashlib
from datetime import datetime, timezone
from typing import Dict, Any, Optional
from unittest.mock import Mock, patch

# Add the redb directory to the path so we can import the extractors
sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'redb'))

# Mock settings to avoid database connections
with patch.dict('os.environ', {'REDB_ENV': 'test'}):
    # Import the actual extractors
    from redb.extractors.macho_extractors.macho_features import MachOFeaturesExtractor
    from redb.extractors.macho_extractors.macho_segments import MachOSegmentExtractor
    from redb.extractors.macho_extractors.macho_imports import MachOImportExtractor
    from redb.extractors.macho_extractors.macho_exports import MachOExportExtractor
    from redb.extractors.macho_extractors.macho_dylibs import MachODylibExtractor
    from redb.extractors.macho_extractors.macho_signature import MachOSignatureExtractor
    from redb.extractors.macho_extractors.macho_universal import MachOUniversalExtractor

def setup_logging():
    """Setup basic logging configuration."""
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s'
    )
    return logging.getLogger(__name__)

class MockLogger:
    """Mock logger for testing without RedB dependencies."""
    def __init__(self):
        self.logger = logging.getLogger(__name__)
    
    def debug(self, msg):
        self.logger.debug(msg)
    
    def info(self, msg):
        self.logger.info(msg)
    
    def warning(self, msg):
        self.logger.warning(msg)
    
    def error(self, msg):
        self.logger.error(msg)

class MockExporter:
    """Mock exporter that does nothing."""
    def export(self, data):
        pass

def create_mock_extractor(extractor_class, filepath):
    """Create an extractor instance with mocked dependencies."""
    log = MockLogger()
    
    # Mock the exporters to avoid database connections
    mock_exporters = [MockExporter()]
    
    # Create the extractor with mocked dependencies
    extractor = extractor_class(
        filepath=filepath,
        log=log,
        exporters=mock_exporters,
        index_prefix="test",
        elastic_index="test_macho",
        known_benign=False,
        known_malicious=False
    )
    
    return extractor

def test_extractor(extractor_class, filepath, extractor_name):
    """Test a specific extractor."""
    log = setup_logging()
    log.info(f"Testing {extractor_name}...")
    
    try:
        # Create the extractor with mocked dependencies
        extractor = create_mock_extractor(extractor_class, filepath)
        
        if not extractor.macho:
            log.error(f"{extractor_name}: No MachO object created")
            return False

        # Test the actual extract method
        result = extractor.extract()
        
        if result:
            log.info(f"{extractor_name}: Successfully extracted data")
            print(f"\n{'='*60}")
            print(f"=== {extractor_name.upper()} RESULTS ===")
            print(f"{'='*60}")
            
            if isinstance(result, list):
                print(f"📊 Extracted {len(result)} items")
                print()
                for i, item in enumerate(result):
                    print(f"📦 Item {i+1}:")
                    print(f"   {'─'*40}")
                    # Handle dataclass objects in lists
                    if hasattr(item, '__dataclass_fields__'):
                        from dataclasses import asdict
                        item_dict = asdict(item)
                        for key, value in item_dict.items():
                            if isinstance(value, (list, dict)):
                                if isinstance(value, list):
                                    print(f"   🔹 {key}: List with {len(value)} items")
                                    print(f"      {value}")
                                elif isinstance(value, dict):
                                    print(f"   🔹 {key}: Dict with {len(value)} keys")
                                    for k, v in value.items():
                                        print(f"      {k}: {v}")
                            else:
                                print(f"   🔹 {key}: {value}")
                    else:
                        # Regular dict
                        for key, value in item.items():
                            if isinstance(value, (list, dict)):
                                if isinstance(value, list):
                                    print(f"   🔹 {key}: List with {len(value)} items")
                                    print(f"      {value}")
                                elif isinstance(value, dict):
                                    print(f"   🔹 {key}: Dict with {len(value)} keys")
                                    for k, v in value.items():
                                        print(f"      {k}: {v}")
                            else:
                                print(f"   🔹 {key}: {value}")
                    print()
            else:
                print("📊 Extracted data:")
                print()
                # Handle dataclass objects
                if hasattr(result, '__dataclass_fields__'):
                    # It's a dataclass, use dataclasses.asdict
                    from dataclasses import asdict
                    result_dict = asdict(result)
                    for key, value in result_dict.items():
                        if isinstance(value, (list, dict)):
                            if isinstance(value, list):
                                print(f"🔹 {key}: List with {len(value)} items")
                                print(f"   {value}")
                            elif isinstance(value, dict):
                                print(f"🔹 {key}: Dict with {len(value)} keys")
                                for k, v in value.items():
                                    print(f"   {k}: {v}")
                        else:
                            print(f"🔹 {key}: {value}")
                        print()
                else:
                    # It's a regular dict
                    for key, value in result.items():
                        if isinstance(value, (list, dict)):
                            if isinstance(value, list):
                                print(f"🔹 {key}: List with {len(value)} items")
                                print(f"   {value}")
                            elif isinstance(value, dict):
                                print(f"🔹 {key}: Dict with {len(value)} keys")
                                for k, v in value.items():
                                    print(f"   {k}: {v}")
                        else:
                            print(f"🔹 {key}: {value}")
                        print()
        else:
            log.warning(f"{extractor_name}: No data extracted")
            print(f"\n❌ {extractor_name}: No data extracted")
        
        return True
        
    except Exception as e:
        log.error(f"{extractor_name}: Error during extraction: {e}")
        import traceback
        traceback.print_exc()
        return False

def main():
    """Main function."""
    if len(sys.argv) < 2:
        print("Usage: python test_macho_extractors_local.py <macho_file> [extractor_name]")
        print("\nAvailable extractors:")
        print("  features    - Basic MachO header and metadata")
        print("  segments    - Segment information and analysis")
        print("  imports     - Imported functions and libraries")
        print("  exports     - Exported symbols")
        print("  dylibs      - Dynamic library dependencies")
        print("  signature   - Code signing information")
        print("  universal   - FAT/Universal binary information")
        print("  all         - Test all extractors")
        sys.exit(1)
    
    filepath = sys.argv[1]
    extractor_name = sys.argv[2] if len(sys.argv) > 2 else "all"
    
    if not os.path.exists(filepath):
        print(f"File not found: {filepath}")
        sys.exit(1)
    
    # Define extractors
    extractors = {
        'features': (MachOFeaturesExtractor, "MachO Features"),
        'segments': (MachOSegmentExtractor, "MachO Segments"),
        'imports': (MachOImportExtractor, "MachO Imports"),
        'exports': (MachOExportExtractor, "MachO Exports"),
        'dylibs': (MachODylibExtractor, "MachO Dylibs"),
        'signature': (MachOSignatureExtractor, "MachO Code Signature"),
        'universal': (MachOUniversalExtractor, "MachO Universal/FAT"),
    }
    
    if extractor_name == "all":
        print(f"Testing all extractors with file: {filepath}")
        success_count = 0
        for name, (extractor_class, display_name) in extractors.items():
            if test_extractor(extractor_class, filepath, display_name):
                success_count += 1
            print("-" * 50)
        
        print(f"\n✅ {success_count}/{len(extractors)} extractors completed successfully")
        
    elif extractor_name in extractors:
        extractor_class, display_name = extractors[extractor_name]
        success = test_extractor(extractor_class, filepath, display_name)
        
        if success:
            print(f"\n✅ {display_name} testing completed successfully")
        else:
            print(f"\n❌ {display_name} testing failed")
            sys.exit(1)
    else:
        print(f"Unknown extractor: {extractor_name}")
        print("Available extractors:", ", ".join(extractors.keys()) + ", all")
        sys.exit(1)

if __name__ == "__main__":
    main()