Veraldo Liesenberg

38 papers C 4Journal 31Unranked 3
YearRankTypeTitle / Venue / Authors
2024 J jnl
Remote. Sens.
Bill Herbert Ziegelmaier Neto, Marcos Benedito Schimalski, Veraldo Liesenberg, Camile Sothe, Rorai Pereira Martins-Neto, Mireli Moura Pitz Floriani
2024 conf
Agro-Geoinformatics
Leila Lucia Camintia, Veraldo Liesenberg, Andre Felipe Hess, Fabio Henrique De Barros, Marcos Benedito Schimalski, Fábio Marcelo Breunig, Leonardo Josoé Biffi
2024 conf
Agro-Geoinformatics
Veraldo Liesenberg, Marchante Olimpio Assura Ambrósio, Gustavo Bassoli Branco, Vitoria Regina Vinciguera, Marcos Benedito Schimalski, Michel T. R. N. de Omena
2024 J jnl
Remote. Sens.
Fábio Marcelo Breunig, Ricardo Dalagnol, Lênio Soares Galvão, Polyanna da Conceição Bispo, Qing Liu, Elias Fernando Berra, William Gaida, Veraldo Liesenberg, Tony Vinicius Moreira Sampaio
2023 J jnl
ISPRS Int. J. Geo Inf.
Sílvio Luís Rafaeli Neto, Vanessa Jutel dos Santos, Emili Louise Diconcili Schutz, Leticia Margarete de Moliner, Cristiane Gracieli Kloth, Daiane Teixeira Schier, Arsalan Ahmed Othman, Veraldo Liesenberg, Polyanna da Conceição Bispo
2023 J jnl
Remote. Sens.
Arsalan Ahmed Othman, Salahalddin S. Ali, Sarkawt G. Salar, Ahmed K. Obaid, Omeed Al-Kakey, Veraldo Liesenberg
2022 J jnl
Remote. Sens.
Leandro Higa, José Marcato Junior, Thiago R. Rodrigues, Pedro Zamboni, Rodrigo Silva, Laisa Almeida, Veraldo Liesenberg, Fábio Roque, Renata Libonati, Wesley Nunes Gonçalves, Jonathan de Andrade Silva
2022 C conf
IGARSS
Veraldo Liesenberg
2022 C conf
IGARSS
Veraldo Liesenberg
2021 J jnl
Remote. Sens.
Leonardo Josoé Biffi, Edson A. Mitishita, Veraldo Liesenberg, Anderson Aparecido dos Santos, Diogo Nunes Gonçalves, Nayara V. Estrabis, Jonathan de Andrade Silva, Lucas Prado Osco, Ana Paula Marques Ramos, Jorge Antonio Silva Centeno, Marcos Benedito Schimalski, Leo Rufato, Sílvio Luís Rafaeli Neto, José Marcato Junior, Wesley Nunes Gonçalves
2021 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Xin Yao, Yiping Chen, Donglie Liu, Zhenkai Zhou, Veraldo Liesenberg, José Marcato Junior, Jonathan Li
2021 J jnl
Remote. Sens.
Jessica da Silva Costa, Veraldo Liesenberg, Marcos Benedito Schimalski, Raquel Valério de Sousa, Leonardo Josoé Biffi, Alessandra Rodrigues Gomes, Sílvio Luís Rafaeli Neto, Edson A. Mitishita, Polyanna da Conceição Bispo
2021 J jnl
Ecol. Informatics
José Augusto Correa Martins, Geazy Menezes, Wesley Nunes Gonçalves, Diego André Sant'Ana, Lucas Prado Osco, Veraldo Liesenberg, Jonathan Li, Lingfei Ma, Paulo Tarso Sanches de Oliveira, Gilberto Astolfi, Hemerson Pistori, José Marcato Junior
2021 J jnl
ISPRS Int. J. Geo Inf.
Arsalan Ahmed Othman, Ahmed K. Obaid, Diary Ali Mohammed Al-Manmi, Ahmed F. Al-Maamar, Syed E. Hasan, Veraldo Liesenberg, Ahmed T. Shihab, Younus I. Al-Saady
2021 J jnl
Remote. Sens.
José Augusto Correa Martins, Keiller Nogueira, Lucas Prado Osco, Felipe David Georges Gomes, Danielle Elis Garcia Furuya, Wesley Nunes Gonçalves, Diego André Sant'Ana, Ana Paula Marques Ramos, Veraldo Liesenberg, Jefersson Alex dos Santos, Paulo Tarso Sanches de Oliveira, José Marcato Junior
2020 J jnl
CoRR
Lucas Prado Osco, Mauro dos Santos de Arruda, Diogo Nunes Gonçalves, Alexandre Dias, Juliana Batistoti, Maurício de Souza, Felipe David Georges Gomes, Ana Paula Marques Ramos, Lúcio André de Castro Jorge, Veraldo Liesenberg, Jonathan Li, Lingfei Ma, José Marcato Junior, Wesley Nunes Gonçalves
2020 J jnl
Remote. Sens.
Danielle Elis Garcia Furuya, João Alex Floriano Aguiar, Nayara V. Estrabis, Mayara Maezano Faita Pinheiro, Michelle Taís Garcia Furuya, Danillo Roberto Pereira, Wesley Nunes Gonçalves, Veraldo Liesenberg, Jonathan Li, José Marcato Junior, Lucas Prado Osco, Ana Paula Marques Ramos
2020 J jnl
Remote. Sens.
Lucas Prado Osco, Ana Paula Marques Ramos, Mayara Maezano Faita Pinheiro, Érika Akemi Saito Moriya, Nilton Nobuhiro Imai, Nayara V. Estrabis, Felipe Ianczyk, Fábio Fernando de Araújo, Veraldo Liesenberg, Lúcio André de Castro Jorge, Jonathan Li, Lingfei Ma, Wesley Nunes Gonçalves, José Marcato Junior, José Eduardo Creste
2020 J jnl
Sensors
Daliana Lobo Torres, Raul Queiroz Feitosa, Patrick Nigri Happ, Laura Elena Cue La Rosa, José Marcato Junior, José Augusto Correa Martins, Patrik Olã Bressan, Wesley Nunes Gonçalves, Veraldo Liesenberg
2020 J jnl
Remote. Sens.
Natalia Cristina Wiederkehr, Fábio F. Gama, Paulo B. N. Castro, Polyanna da Conceição Bispo, Heiko Balzter, Edson Eyji Sano, Veraldo Liesenberg, João Roberto dos Santos, José C. Mura
2020 J jnl
ISPRS Int. J. Geo Inf.
Arsalan Ahmed Othman, Ahmed F. Al-Maamar, Diary Ali Mohammed Al-Manmi, Veraldo Liesenberg, Syed E. Hasan, Ahmed K. Obaid, Ayad M. Fadhil Al-Quraishi
2019 J jnl
Remote. Sens.
Arsalan Ahmed Othman, Ahmed F. Al-Maamar, Diary Ali Mohammed Al-Manmi, Veraldo Liesenberg, Syed E. Hasan, Younus I. Al-Saady, Ahmed T. Shihab, Kareem Khwedim
2019 J jnl
Sensors
Anderson Aparecido dos Santos, José Marcato Junior, Márcio Santos Araújo, David Robledo Di Martini, Everton Castelao Tetila, Henrique Lopes Siqueira, Camila Aoki, Anette Eltner, Edson Takashi Matsubara, Hemerson Pistori, Raul Queiroz Feitosa, Veraldo Liesenberg, Wesley Nunes Gonçalves
2019 J jnl
Remote. Sens.
Juliana Batistoti, José Marcato Junior, Luís Ítavo, Edson Takashi Matsubara, Eva Gomes, Bianca Oliveira, Maurício de Souza, Henrique Lopes Siqueira, Geison Salgado Filho, Thales Akiyama, Wesley Nunes Gonçalves, Veraldo Liesenberg, Jonathan Li, Alexandre Dias
2019 C conf
IGARSS
David Robledo Di Martini, Veraldo Liesenberg, Everton Castelão Tetila, José Marcato Junior, Edson Takashi Matsubara, Henrique Lopes Siqueira, Amaury Antônio de Castro Junior, Márcio Santos Araújo, Carlos Henrique Monteiro, Hemerson Pistori
2019 J jnl
Remote. Sens.
Lucas Prado Osco, Ana Paula Marques Ramos, Érika Akemi Saito Moriya, Lorrayne Guimarães Bavaresco, Bruna Coelho de Lima, Nayara V. Estrabis, Danillo Roberto Pereira, José Eduardo Creste, José Marcato Junior, Wesley Nunes Gonçalves, Nilton Nobuhiro Imai, Jonathan Li, Veraldo Liesenberg, Fábio Fernando de Araújo
2019 J jnl
Remote. Sens.
Flávia de Souza Mendes, Daniel Baron, Gerhard Gerold, Veraldo Liesenberg, Stefan Erasmi
2019 J jnl
Remote. Sens.
Lucas Prado Osco, Ana Paula Marques Ramos, Danillo Roberto Pereira, Érika Akemi Saito Moriya, Nilton Nobuhiro Imai, Edson Takashi Matsubara, Nayara V. Estrabis, Maurício de Souza, José Marcato Junior, Wesley Nunes Gonçalves, Jonathan Li, Veraldo Liesenberg, José Eduardo Creste
2019 J jnl
Remote. Sens.
Camile Sothe, Michele Dalponte, Cláudia Maria de Almeida, Marcos Benedito Schimalski, Carla Luciane Lima, Veraldo Liesenberg, Gabriela Takahashi Miyoshi, Antonio Maria Garcia Tommaselli
2018 C conf
IGARSS
Camile Sothe, Cláudia Maria de Almeida, Marcos Benedito Schimalski, Veraldo Liesenberg
2018 J jnl
Remote. Sens.
Luciana O. Pereira, Luiz F. A. Furtado, Evlyn Marcia Leão de Moraes Novo, Sidnei J. S. Sant'Anna, Veraldo Liesenberg, Thiago Sanna Freire Silva
2017 J jnl
Remote. Sens.
Camile Sothe, Cláudia Maria de Almeida, Veraldo Liesenberg, Marcos Benedito Schimalski
2016 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Veraldo Liesenberg, Carlos Roberto de Souza Filho, Richard Gloaguen
2013 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Veraldo Liesenberg, Richard Gloaguen
2013 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Hans-Dieter Viktor Boehm, Veraldo Liesenberg, Suwido H. Limin
2013 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Gaia Vaglio Laurin, Veraldo Liesenberg, Qi Chen, Leila Guerriero, Fabio Del Frate, Antonio Bartolini, David Coomes, Beccy Wilebore, Jeremy A. Lindsell, Riccardo Valentini
2009 J jnl
Int. J. Appl. Earth Obs. Geoinformation
Lênio Soares Galvão, Flávio Jorge Ponzoni, Veraldo Liesenberg, João Roberto dos Santos
2009 conf
IGARSS (2)
Veraldo Liesenberg, Hans-Dieter Viktor Boehm, Richard Gloaguen
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"
)