Irene Luque Ruiz

71 papers B 1C 3Misc 2Journal 45Unranked 20
YearRankTypeTitle / Venue / Authors
2020 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2020 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2019 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2019 J jnl
Wirel. Commun. Mob. Comput.
I. Jimena Medina, M. A. Gómez-Luque, J. Peña Amaro, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2018 J jnl
Multim. Tools Appl.
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2018 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2018 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2017 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2017 J jnl
Int. J. Ad Hoc Ubiquitous Comput.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2017 conf
ANT/SEIT
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2017 J jnl
J. Ambient Intell. Smart Environ.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2016 conf
UCAmI (2)
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2016 J jnl
Sensors
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2014 J jnl
Mob. Inf. Syst.
Francisco Borrego-Jaraba, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2014 conf
ICCE-Berlin
Gonzalo Cerruela García, Nicolás García-Pedrajas, Francisco José Bellido Outeiriño, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2014 conf
ISAmI
Francisco Manuel Borrego-Jaraba, Gonzalo Cerruela García, Nicolás García-Pedrajas, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2014 J jnl
J. Intell. Inf. Syst.
Pilar Castro Garrido, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2013 J jnl
Sensors
Francisco Borrego-Jaraba, Pilar Castro Garrido, Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2013 J jnl
J. Univers. Comput. Sci.
Pilar Castro Garrido, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2013 J jnl
J. Ambient Intell. Smart Environ.
Francisco Borrego-Jaraba, Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2013 J jnl
J. Comput. Aided Mol. Des.
Bernardo Palacios-Bejarano, Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 conf
IWAAL
Pilar Castro Garrido, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 conf
ICCE-Berlin
Pilar Castro Garrido, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 conf
UCAmI
Francisco Manuel Borrego-Jaraba, Pilar Castro Garrido, Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 J jnl
J. Ambient Intell. Smart Environ.
Pilar Castro Garrido, Guillermo Matas Miraz, Francisco José Bellido Outeiriño, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 C conf
EDUCON
Francisco Borrego-Jaraba, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 J jnl
Educ. Inf. Technol.
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2012 conf
UCAmI
Francisco Manuel Borrego-Jaraba, Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2011 J jnl
Pers. Ubiquitous Comput.
Francisco Borrego-Jaraba, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2011 J jnl
J. Chem. Inf. Model.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2011 conf
IEA/AIE (2)
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2011 conf
IT Revolutions
Pilar Castro Garrido, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2010 conf
IEA/AIE (3)
Francisco Borrego-Jaraba, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2010 conf
ICITST
Pilar Castro Garrido, Guillermo Matas Miraz, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2008 conf
ICCS (2)
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2008 conf
ICCSA (1)
Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2008 J jnl
Eng. Lett.
Irene Luque Ruiz, Manuel Urbano-Cuadrado, Miguel Ángel Gómez-Nieto
2008 J jnl
Int. J. Comput. Math.
Manuel Urbano-Cuadrado, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2007 conf
World Congress on Engineering
Irene Luque Ruiz, Manuel Urbano-Cuadrado, Miguel Ángel Gómez-Nieto
2007 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Manuel Urbano-Cuadrado, Miguel Ángel Gómez-Nieto
2007 J jnl
J. Comput. Chem.
Manuel Urbano-Cuadrado, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2006 J jnl
J. Chem. Inf. Model.
Manuel Urbano-Cuadrado, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2006 J jnl
J. Chem. Inf. Model.
Manuel Urbano-Cuadrado, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2005 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2005 J jnl
J. Chem. Inf. Model.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto, Juan Antonio Cabrero Doncel, Antonio Guevara Plaza
2005 C conf
ISDA
Irene Luque Ruiz, Gonzalo Cerruela García, Manuel Urbano-Cuadrado, Miguel Ángel Gómez-Nieto
2004 J jnl
J. Chem. Inf. Model.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2004 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2004 J jnl
J. Chem. Inf. Model.
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2004 J jnl
J. Chem. Inf. Model.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2003 conf
PPPJ
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2003 B conf
ICWE
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2003 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2003 conf
ICEIS (4)
Enrique López Espinosa, Irene Luque Ruiz, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2002 conf
ICEIS
Irene Luque Ruiz, Enrique López Espinosa, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2002 Misc conf
International Conference on Computational Science (1)
Irene Luque Ruiz, Enrique López Espinosa, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2002 J jnl
J. Chem. Inf. Comput. Sci.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2002 conf
PARA
Gonzalo Cerruela García, Enrique López Espinosa, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2002 J jnl
J. Chem. Inf. Comput. Sci.
Gonzalo Cerruela García, Irene Luque Ruiz, Miguel Ángel Gómez-Nieto
2001 conf
ICEIS (1)
Irene Luque Ruiz, Enrique López Espinosa, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2001 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Enrique López Espinosa, Gonzalo Cerruela García, Miguel Ángel Gómez-Nieto
2001 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Carlos Martínez Pedrajas, Miguel Ángel Gómez-Nieto
2000 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Carlos Martínez Pedrajas, Miguel Ángel Gómez-Nieto
1996 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1996 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1996 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1994 Misc conf
SAC
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1994 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1993 J jnl
J. Chem. Inf. Comput. Sci.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1992 J jnl
Comput. Graph.
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
1992 C conf
IPMU
Irene Luque Ruiz, Jrene L. Cruz Soto, Miguel Ángel Gómez-Nieto
tests/unit/test_decompile_strings.py
← Index tests/unit/test_decompile_strings.py python
"""Unit tests for bninja/analysis/strings.py — StringAnalysis."""
import pytest
import math
from unittest.mock import MagicMock


# StringAnalysis has no binaryninja imports, just collections and math
from redb.extractors.decompiler.bninja.analysis.strings import StringAnalysis


# ============================================================================
# Helper mocks
# ============================================================================

class MockStringEntry:
    """Mock for a Binary Ninja string reference."""
    def __init__(self, value, raw=None, start=0, length=0, type_name="Utf8String"):
        self.value = value
        self.raw = raw if raw is not None else (value.encode("utf-8") if isinstance(value, str) else value)
        self.start = start
        self.length = length if length else len(self.raw)
        self.type = MagicMock()
        self.type.name = type_name


class MockBinaryView:
    """Mock binary view with a strings list."""
    def __init__(self, strings=None):
        self.strings = strings or []


# ============================================================================
# 6a. StringAnalysis
# ============================================================================


class TestStringAnalysisEntropy:
    def setup_method(self):
        self.sa = StringAnalysis(bv=MockBinaryView(), functions=[])

    def test_entropy_empty_string(self):
        assert self.sa.entropy("") == 0.0

    def test_entropy_single_char(self):
        assert self.sa.entropy("aaaa") == 0.0

    def test_entropy_uniform_distribution(self):
        # "abcd" -> 4 unique chars, each p=1/4, entropy = log2(4) = 2.0
        result = self.sa.entropy("abcd")
        assert result == pytest.approx(2.0)

    def test_entropy_binary_string(self):
        # "ab" -> 2 unique chars, each p=1/2, entropy = log2(2) = 1.0
        result = self.sa.entropy("ab")
        assert result == pytest.approx(1.0)


class TestStringAnalysisAnalyze:
    def test_analyze_deduplication(self):
        """Duplicate (string, encoding) pairs -> only first kept."""
        entries = [
            MockStringEntry("hello", start=100, type_name="Utf8String"),
            MockStringEntry("hello", start=200, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        assert result[0]["string_offset"] == 100

    def test_analyze_sorted_by_address(self):
        """First occurrence (lowest offset) is the one kept."""
        entries = [
            MockStringEntry("world", start=500, type_name="Utf8String"),
            MockStringEntry("world", start=100, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        # The analyze() sorts by start, so 100 comes first
        assert result[0]["string_offset"] == 100

    def test_analyze_empty_bv(self):
        bv = MockBinaryView(strings=[])
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert result == []

    def test_analyze_output_schema(self):
        entries = [MockStringEntry("test_string", start=0, type_name="Utf8String")]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        r = result[0]
        required_keys = [
            "string",
            "string_raw",
            "string_encoding",
            "string_offset",
            "string_length",
            "string_raw_length",
            "string_entropy",
        ]
        for key in required_keys:
            assert key in r, f"Missing key: {key}"