Maja Matijasevic

70 papers B 7C 3Misc 7Journal 24Unranked 27
YearRankTypeTitle / Venue / Authors
2024 J jnl
Sensors
Erich Leitgeb, Maja Matijasevic, Wilfried Gappmair, Mario Kusek
2020 J jnl
CoRR
Jose Saldana, Mirko Suznjevic, Luis Sequeira, Julián Fernández-Navajas, Maja Matijasevic, José Ruíz-Mas
2019 J jnl
Multim. Syst.
Mirko Suznjevic, Lea Skorin-Kapov, Aleksandra Cerekovic, Maja Matijasevic
2017 conf
ConTEL
Maja Matijasevic, Erich Leitgeb, Mario Kusek, Ivan Gojmerac
2017 B conf
QoMEX
Mirko Suznjevic, Matija Mandurov, Maja Matijasevic
2016 J jnl
J. Netw. Comput. Appl.
Krunoslav Ivesic, Lea Skorin-Kapov, Maja Matijasevic
2015 B conf
CNSM
Ognjen Dobrijevic, Matija Santl, Maja Matijasevic
2015 conf
NETGAMES
Mirko Suznjevic, Maja Matijasevic, Jelena Konfic
2015 conf
WWIC
Ranko Maric, Tomislav Grgic, Maja Matijasevic, Ignac Lovrek
2015 conf
ConTEL
Mirko Suznjevic, Maja Matijasevic
2014 J jnl
Int. J. Comput. Games Technol.
Mirko Suznjevic, Jose Saldana, Maja Matijasevic, Julián Fernández-Navajas, José Ruíz-Mas
2014 J jnl
J. Netw. Comput. Appl.
Krunoslav Ivesic, Lea Skorin-Kapov, Maja Matijasevic
2014 J jnl
Multim. Syst.
Marc Manzano, Manuel Urueña, Mirko Suznjevic, Eusebi Calle, José Alberto Hernández, Maja Matijasevic
2014 conf
NETGAMES
Ivan Slivar, Mirko Suznjevic, Lea Skorin-Kapov, Maja Matijasevic
2014 conf
WWIC
Ognjen Dobrijevic, Andreas J. Kassler, Lea Skorin-Kapov, Maja Matijasevic
2014 conf
GLOBECOM Workshops
Marko Skomersic, Maja Matijasevic, Ivan Gojmerac
2014 Misc conf
SoftCOM
Aleksandar Antonic, Vedran Bilas, Martina Marjanovic, Maja Matijasevic, Dinko Oletic, Marko Pavelic, Ivana Podnar Zarko, Kresimir Pripuzic, Lea Skorin-Kapov
2013 J jnl
Multim. Syst.
Mirko Suznjevic, Ivana Stupar, Maja Matijasevic
2013 conf
EUROCON
Krunoslav Ivesic, Lea Skorin-Kapov, Maja Matijasevic
2013 J jnl
Int. J. Netw. Manag.
Tomislav Grgic, Maja Matijasevic
2013 J jnl
CoRR
Neven Caplar, Mirko Suznjevic, Maja Matijasevic
2013 C conf
FDG
Neven Caplar, Mirko Suznjevic, Maja Matijasevic
2013 book
Data Traffic Monitoring and Analysis
Ernst W. Biersack, Christian Callegari, Maja Matijasevic
2013 J jnl
Multim. Syst.
Mirko Suznjevic, Maja Matijasevic
2013 conf
ICC Workshops
Marie-José Montpetit, Henry Holtzman, Kanti Chakrabarti, Maja Matijasevic
2013 conf
NetGames
Mirko Suznjevic, Lea Skorin-Kapov, Maja Matijasevic
2012 conf
WMNC
Tomislav Grgic, Maja Matijasevic
2012 Misc conf
SoftCOM
Ognjen Dobrijevic, Velimir Svedek, Maja Matijasevic
2012 Misc conf
SoftCOM
Valter Vasic, Mirko Suznjevic, Miljenko Mikuc, Maja Matijasevic
2012 J jnl
IEEE Trans. Multim.
Oscar Martínez Bonastre, Marie-José Montpetit, Pablo César, Jon Crowcroft, Maja Matijasevic, Zhu Liu
2012 conf
MIPRO
Mirko Suznjevic, Maja Matijasevic, Borna Brozovic
2012 J jnl
CoRR
Marie-José Montpetit, Pablo César, Maja Matijasevic, Zhu Liu, Jon Crowcroft, Oscar Martínez Bonastre
2012 B conf
ICCCN
Jose Saldana, Mirko Suznjevic, Luis Sequeira, Julián Fernández-Navajas, Maja Matijasevic, José Ruíz-Mas
2012 Misc conf
SoftCOM
Andreas Kassler, Lea Skorin-Kapov, Ognjen Dobrijevic, Maja Matijasevic, Peter Dely
2012 conf
HAVE
Mirko Suznjevic, Maja Matijasevic
2011 Misc conf
SoftCOM
Zdravko Jukic, Mario Weber, Maja Matijasevic
2011 conf
NETGAMES
Mirko Suznjevic, Ivana Stupar, Maja Matijasevic
2011 Misc conf
SoftCOM
Tomislav Grgic, Niko Boskovic, Maja Matijasevic
2011 B conf
CNSM
Krunoslav Ivesic, Maja Matijasevic, Lea Skorin-Kapov
2011 Misc conf
SoftCOM
Velimir Svedek, Ognjen Dobrijevic, Maja Matijasevic, Ivana Golub, Tomislav Stivojevic
2011 conf
SimuTools
Mirko Suznjevic, Ivana Stupar, Maja Matijasevic
2010 J jnl
Int. J. Intell. Inf. Database Syst.
Tomislav Grgic, Maja Matijasevic
2010 B conf
PIMRC
Krunoslav Ivesic, Maja Matijasevic, Lea Skorin-Kapov
2010 J jnl
Int. J. Adv. Media Commun.
Mirko Suznjevic, Maja Matijasevic
2009 conf
SOCASE
Vedran Podobnik, Maja Matijasevic, Ignac Lovrek, Lea Skorin-Kapov, Sasa Desic
2009 conf
NETGAMES
Mirko Suznjevic, Ognjen Dobrijevic, Maja Matijasevic
2009 J jnl
Multim. Tools Appl.
Mirko Suznjevic, Ognjen Dobrijevic, Maja Matijasevic
2009 conf
MMNS
Lea Skorin-Kapov, Maja Matijasevic
2008 conf
NETGAMES
Mirko Suznjevic, Maja Matijasevic, Ognjen Dobrijevic
2008 C conf
MoMM
Ognjen Dobrijevic, Maja Matijasevic
2008 ch.
New Directions in Intelligent Interactive Multimedia
Tomislav Grgic, Vedran Huskic, Maja Matijasevic
2008 conf
ISWPC
Agata Brajdic, Ozren Lapcevic, Maja Matijasevic, Miran Mosmondor
2007 conf
MobiMedia
Lea Skorin-Kapov, Maja Matijasevic
2007 J jnl
IEEE Commun. Mag.
Lea Skorin-Kapov, Miran Mosmondor, Ognjen Dobrijevic, Maja Matijasevic
2007 conf
ITNG
Ognjen Dobrijevic, Miran Mosmondor, Maja Matijasevic
2006 conf
NEW2AN
Lea Skorin-Kapov, Maja Matijasevic
2006 J jnl
Telecommun. Syst.
Maja Matijasevic, Branimir Pejcinovic
2006 J jnl
Mob. Inf. Syst.
Tomislav Kosutic, Miran Mosmondor, Ivan Andrisek, Mario Weber, Maja Matijasevic, Igor S. Pandzic
2005 C conf
WOWMOM
Lea Skorin-Kapov, Maja Matijasevic
2005 conf
KES (2)
Gordan Gledec, Maja Matijasevic, Damir Juric
2005 conf
EGC
Lea Skorin-Kapov, Igor S. Pandzic, Maja Matijasevic, Hrvoje Komericki, Miran Mosmondor
2005 J jnl
J. Mobile Multimedia
Lea Skorin-Kapov, Hrvoje Komericki, Maja Matijasevic, Igor S. Pandzic, Miran Mosmondor
2005 conf
KES (3)
Darije Ramljak, Maja Matijasevic
2004 J jnl
IEEE Commun. Mag.
Maja Matijasevic, Igor S. Pandzic, Algirdas Pakstas
2003 J jnl
Future Gener. Comput. Syst.
Maja Matijasevic, Lea Skorin-Kapov
2002 J jnl
IEEE Trans. Syst. Man Cybern. Part B
Maja Matijasevic, Denis Gracanin, Kimon P. Valavanis, Ignac Lovrek
2002 B conf
LCN
Dario Mikic, Danko Vilendecic, Lea Skorin-Kapov, Maja Matijasevic
1999 B conf
LCN
Maja Matijasevic, Denis Gracanin, Kimon P. Valavanis, Ignac Lovrek
1999 J jnl
IEEE Robotics Autom. Mag.
Denis Gracanin, Kimon P. Valavanis, Nikos Tsourveloudis, Maja Matijasevic
1996 conf
Modelling and Evaluation of ATM Networks
Ilias Andrikopoulos, Tolga Örs, Maja Matijasevic, Herbert Leitold, Reinhard Posch
tests/conftest.py
← Index tests/conftest.py python
"""
Pytest configuration and shared fixtures for REDB unit tests.
"""
import os
import sys
import pytest
import logging
import tempfile
import hashlib
from unittest.mock import Mock, MagicMock, patch
from pathlib import Path

# Add the project root to the path
sys.path.insert(0, str(Path(__file__).parent.parent))

# Test files directory
TEST_FILES_DIR = Path(__file__).parent.parent / "test_files"


# ============================================================================
# Logger Fixtures
# ============================================================================

@pytest.fixture
def mock_logger():
    """Create a mock logger for testing."""
    logger = Mock()
    logger.debug = Mock()
    logger.info = Mock()
    logger.warning = Mock()
    logger.error = Mock()
    return logger


@pytest.fixture
def real_logger():
    """Create a real logger for testing with debug output."""
    logger = logging.getLogger("test_logger")
    logger.setLevel(logging.DEBUG)
    if not logger.handlers:
        handler = logging.StreamHandler()
        handler.setLevel(logging.DEBUG)
        formatter = logging.Formatter('%(levelname)s - %(message)s')
        handler.setFormatter(formatter)
        logger.addHandler(handler)
    return logger


# ============================================================================
# Test Binary Files Fixtures
# ============================================================================

@pytest.fixture
def elf_binary_path():
    """Path to the ELF test binary."""
    path = TEST_FILES_DIR / "hello"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_advanced_binary_path():
    """Path to the advanced ELF test binary."""
    path = TEST_FILES_DIR / "hello_advanced"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def pe_binary_path():
    """Path to the PE test binary (.NET PE)."""
    path = TEST_FILES_DIR / "d8637bdbcfc9112fcb1f0167b398e771"
    if not path.exists():
        pytest.skip(f"Test file not found: {path}")
    return str(path)


@pytest.fixture
def elf_binary_content(elf_binary_path):
    """Read the ELF test binary content."""
    with open(elf_binary_path, "rb") as f:
        return f.read()


@pytest.fixture
def pe_binary_content(pe_binary_path):
    """Read the PE test binary content."""
    with open(pe_binary_path, "rb") as f:
        return f.read()


# ============================================================================
# Temporary Files Fixtures
# ============================================================================

@pytest.fixture
def temp_binary_file():
    """Create a temporary binary file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".bin") as f:
        # Write some test data
        f.write(b"\x7fELF" + b"\x00" * 100 + b"test data")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_text_file():
    """Create a temporary text file for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".txt", mode="w") as f:
        f.write("This is a test file with some text content.")
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


@pytest.fixture
def temp_pe_like_file():
    """Create a temporary file with PE-like header for testing."""
    with tempfile.NamedTemporaryFile(delete=False, suffix=".exe") as f:
        # MZ header
        f.write(b"MZ" + b"\x00" * 58)
        # e_lfanew pointing to PE header at offset 64
        f.write(b"\x40\x00\x00\x00")
        # PE signature at offset 64
        f.write(b"PE\x00\x00")
        # Minimal COFF header (20 bytes)
        f.write(b"\x4c\x01")  # Machine (i386)
        f.write(b"\x01\x00")  # NumberOfSections
        f.write(b"\x00" * 16)  # Rest of COFF header
        temp_path = f.name

    yield temp_path

    # Cleanup
    if os.path.exists(temp_path):
        os.unlink(temp_path)


# ============================================================================
# Mock Exporter Fixtures
# ============================================================================

@pytest.fixture
def mock_print_exporter(mock_logger):
    """Create a mock PrintExporter."""
    from redb.extractors.database_exporters import PrintExporter
    exporter = PrintExporter(mock_logger, "test_index")
    return exporter


@pytest.fixture
def mock_elasticsearch_exporter(mock_logger):
    """Create a mock ElasticsearchExporter with mocked client."""
    with patch('redb.settings.get_elasticsearch_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ElasticsearchExporter
        exporter = ElasticsearchExporter(mock_logger, "test_index")
        return exporter


@pytest.fixture
def mock_clickhouse_exporter(mock_logger):
    """Create a mock ClickHouseExporter with mocked client."""
    with patch('redb.settings.create_clickhouse_client') as mock_client:
        mock_client.return_value = Mock()
        from redb.extractors.database_exporters import ClickHouseExporter
        exporter = ClickHouseExporter(mock_logger, "test_index", client=Mock())
        return exporter


# ============================================================================
# Mock Settings Fixtures
# ============================================================================

@pytest.fixture
def mock_settings():
    """Mock the redb.settings module."""
    with patch.multiple(
        'redb.settings',
        ELASTIC_BINARIES_COLLECTION="test_collection",
        get_elasticsearch_client=Mock(return_value=Mock()),
        create_clickhouse_client=Mock(return_value=Mock()),
    ):
        yield


# ============================================================================
# Hash Fixtures
# ============================================================================

@pytest.fixture
def known_hashes(elf_binary_content):
    """Compute known hashes for the ELF test binary."""
    return {
        'md5': hashlib.md5(elf_binary_content).hexdigest(),
        'sha1': hashlib.sha1(elf_binary_content).hexdigest(),
        'sha256': hashlib.sha256(elf_binary_content).hexdigest(),
    }


@pytest.fixture
def pe_known_hashes(pe_binary_content):
    """Compute known hashes for the PE test binary."""
    return {
        'md5': hashlib.md5(pe_binary_content).hexdigest(),
        'sha1': hashlib.sha1(pe_binary_content).hexdigest(),
        'sha256': hashlib.sha256(pe_binary_content).hexdigest(),
    }


# ============================================================================
# Sample Data Fixtures
# ============================================================================

@pytest.fixture
def sample_binary_data():
    """Sample binary data for entropy and hash testing."""
    return b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f" * 16


@pytest.fixture
def high_entropy_data():
    """High entropy random-like data for testing."""
    import random
    random.seed(42)  # Reproducible
    return bytes(random.randint(0, 255) for _ in range(256))


@pytest.fixture
def low_entropy_data():
    """Low entropy repetitive data for testing."""
    return b"\x00" * 256


# ============================================================================
# PE Object Fixtures
# ============================================================================

@pytest.fixture
def pe_object(pe_binary_path):
    """Create a pefile PE object for testing."""
    import pefile
    try:
        pe = pefile.PE(pe_binary_path)
        yield pe
        pe.close()
    except Exception as e:
        pytest.skip(f"Failed to parse PE file: {e}")


# ============================================================================
# ELF Object Fixtures
# ============================================================================

@pytest.fixture
def elf_object(elf_binary_path):
    """Create an ELFFile object for testing."""
    from elftools.elf.elffile import ELFFile
    try:
        with open(elf_binary_path, 'rb') as f:
            elf = ELFFile(f)
            # We need to keep the file open for ELFFile to work
            yield elf
    except Exception as e:
        pytest.skip(f"Failed to parse ELF file: {e}")


# ============================================================================
# Dataclass Fixtures
# ============================================================================

@pytest.fixture
def sample_hash_dataclass():
    """Create a sample Hash dataclass."""
    from redb.models.dataclasses import Hash
    return Hash(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
    )


@pytest.fixture
def sample_hashes_dataclass():
    """Create a sample Hashes dataclass."""
    from redb.models.dataclasses import Hashes
    return Hashes(
        md5="d41d8cd98f00b204e9800998ecf8427e",
        sha1="da39a3ee5e6b4b0d3255bfef95601890afd80709",
        sha256="e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        ssdeep_hash="3::",
        tlsh_hash=""
    )


@pytest.fixture
def sample_basic_properties():
    """Create a sample BasicProperties dataclass."""
    from redb.models.dataclasses import BasicProperties
    return BasicProperties(
        filename="test.exe",
        sample_name="test.exe",
        filesize=1024,
        filetype="PE32 executable",
        filetype_mime="application/x-dosexec",
        filetype_magika="pebin",
        file_entropy=6.5
    )


# ============================================================================
# Utility Functions for Tests
# ============================================================================

def compute_entropy(data):
    """Compute entropy of data for verification in tests."""
    import math
    from collections import Counter

    if not data:
        return 0.0

    if isinstance(data, str):
        counts = Counter(data)
        frequencies = (i / len(data) for i in counts.values())
        return -sum(f * math.log(f, 2) for f in frequencies)
    else:
        occurrences = Counter(bytearray(data))
        entropy = 0
        for x in occurrences.values():
            p_x = float(x) / len(data)
            entropy -= p_x * math.log(p_x, 2)
        return entropy


# Make the function available as a fixture
@pytest.fixture
def entropy_calculator():
    """Return the entropy calculation function."""
    return compute_entropy


# ============================================================================
# Skip Markers
# ============================================================================

# Mark tests that require external tools
requires_die = pytest.mark.skipif(
    not os.path.exists("/usr/bin/diec") and not os.path.exists("/usr/local/bin/diec"),
    reason="Detect It Easy (diec) not installed"
)

requires_capa = pytest.mark.skipif(
    not os.path.exists("/usr/bin/capa") and not os.path.exists("/usr/local/bin/capa"),
    reason="capa not installed"
)

requires_floss = pytest.mark.skipif(
    not os.path.exists("/usr/bin/floss") and not os.path.exists("/usr/local/bin/floss"),
    reason="floss not installed"
)