Vassilis Moustakis

43 papers B 2C 1Misc 1Journal 21Unranked 18
YearRankTypeTitle / Venue / Authors
2016 J jnl
PLoS Comput. Biol.
Lefteris Koumakis, Alexandros Kanterakis, Evgenia Kartsaki, Maria Chatzimina, Michalis E. Zervakis, Manolis Tsiknakis, Despoina Vassou, Dimitris Kafetzopoulos, Kostas Marias, Vassilis Moustakis, George Potamias
2015 J jnl
Netw. Model. Anal. Health Informatics Bioinform.
Lefteris Koumakis, Kamana Sigdel, George Potamias, Stelios Sfakianakis, Jasper van Leeuwen, George Zacharioudakis, Vassilis Moustakis, Michalis E. Zervakis, Anca I. D. Bucur, Kostas Marias, Norbert M. Graf, Manolis Tsiknakis
2014 J jnl
Eur. J. Inf. Syst.
Christos D. Melas, Leonidas A. Zampetakis, Anastasia Dimopoulou, Vassilis Moustakis
2014 J jnl
Behav. Inf. Technol.
Christos D. Melas, Leonidas A. Zampetakis, Anastasia Dimopoulou, Vassilis Moustakis
2014 C conf
BIBE
Lefteris Koumakis, George Potamias, Stelios Sfakianakis, Vassilis Moustakis, Michalis E. Zervakis, Norbert M. Graf, Manolis Tsiknakis
2012 conf
SETN
Lefteris Koumakis, Vassilis Moustakis, Michalis E. Zervakis, Dimitris Kafetzopoulos, George Potamias
2012 J jnl
Computing
Victor Maojo, Martin Fritts, Fernando Martín-Sánchez, Diana de la Iglesia, Raul E. Cachau, Miguel García-Remesal, José Crespo, Joyce A. Mitchell, Alberto Anguita, Nathan A. Baker, José María Barreiro, Sonia E. Benitez, Guillermo de la Calle, Julio C. Facelli, Peter Ghazal, Antoine Geissbühler, Fernando D. González Nilo, Norbert M. Graf, Pierre Grangeat, Isabel Hermosilla, Rada Hussein, Josipa Kern, Sabine Koch, Yannick Legré, Victoria López-Alonso, Guillermo López-Campos, Luciano Milanesi, Vassilis Moustakis, Cristian R. Munteanu, Paula Otero, Alejandro Pazos, David Pérez-Rey, George Potamias, Ferran Sanz, Casimir A. Kulikowski
2011 J jnl
J. Biomed. Informatics
Christos D. Melas, Leonidas A. Zampetakis, Anastasia Dimopoulou, Vassilis Moustakis
2010 conf
SETN
George Potamias, Lefteris Koumakis, Alexandros Kanterakis, Vassilis Moustakis
2009 J jnl
Bus. Process. Manag. J.
Loukas Tsironis, Kiriakos Anastasiou, Vassilis Moustakis
2009 conf
AIAI (Workshops)
George Potamias, Vassilis Moustakis
2009 conf
AIAI (Workshops)
Lefteris Koumakis, Stelios Sfakianakis, Vassilis Moustakis, George Potamias
2009 conf
MIE
Diana de la Iglesia, Stefano Chiesa, Josipa Kern, Victor Maojo, Fernando Martín-Sánchez, George Potamias, Vassilis Moustakis, Joyce A. Mitchell
2009 conf
AIAI (Workshops)
Alexandros Kanterakis, Vassilis Moustakis, Dimitris Kafetzopoulos, George Potamias
2008 conf
SETN
Alexandros Kanterakis, Dimitris Kafetzopoulos, Vassilis Moustakis, George Potamias
2008 J jnl
Eur. J. Oper. Res.
Evangelos Grigoroudis, Charalambos Litos, Vassilis Moustakis, Yannis Politis, Loukas Tsironis
2007 conf
ICTAI (1)
George Potamias, Lefteris Koumakis, Alexandros Kanterakis, Stelios Sfakianakis, Anastasia Analyti, Vassilis Moustakis, Dimitris Kafetzopoulos, Stefan Rüping, Manolis Tsiknakis
2007 Misc conf
AIAI
George Potamias, Lefteris Koumakis, Alexandros Kanterakis, Vassilis Moustakis, Dimitris Kafetzopoulos, Manolis Tsiknakis
2006 conf
ICWMC
Angelos Amanatiadis, Konstantinos Drakatos, Loukas Tsironis, Vassilis Moustakis
2006 conf
SETN
Lefteris Koumakis, Vassilis Moustakis, Alexandros Kanterakis, George Potamias
2006 conf
SETN
Vassilis Moustakis
2005 J jnl
Ingénierie des Systèmes d Inf.
George Potamias, Lefteris Koumakis, Vassilis Moustakis
2004 conf
SETN
George Potamias, Lefteris Koumakis, Vassilis Moustakis
2004 conf
SETN
George Potamias, Vassilis Moustakis
2004 conf
ICIQ
Vassilis Moustakis, Charalambos Litos, Andreas Dalivigas, Loukas Tsironis
2003 conf
HCI (4)
George Potamias, Lefteris Koumakis, Giorgos Charissis, Vassilis Moustakis, Manolis Tsiknakis, Stelios C. Orphanoudakis
2002 J jnl
Behav. Inf. Technol.
Tom Kontogiannis, Vassilis Moustakis
2001 J jnl
Integr. Comput. Aided Eng.
Georgios Dounias, Georgios Tselentis, Vassilis Moustakis
1998 J jnl
Appl. Artif. Intell.
Vassilis Moustakis, Michalis Blazadonakis, Manolis Marazakis, George Potamias
1997 B conf
AIME
Saso Dzeroski, George Potamias, Vassilis Moustakis, Giorgos Charissis
1997 conf
HCI (2)
Vassilis Moustakis
1997 J jnl
Appl. Artif. Intell.
George Potamias, Vassilis Moustakis, Giorgos Charissis
1997 J jnl
Appl. Artif. Intell.
Vassilis Moustakis, Jürgen Herrmann
1996 J jnl
Artif. Intell. Medicine
Michalis Blazadonakis, Vassilis Moustakis, Giorgos Charissis
1996 J jnl
Artif. Intell. Medicine
Christian Ohmann, Vassilis Moustakis, Q. Yang, Konrad Lang
1996 J jnl
Behav. Inf. Technol.
Panayotis Vassilakis, Vassilis Moustakis
1996 J jnl
Int. J. Hum. Comput. Interact.
Vassilis Moustakis
1996 conf
IQ
Vassilis Moustakis, Loukas Tsironis
1996 J jnl
Int. J. Hum. Comput. Interact.
Vassilis Moustakis, Mark R. Lehto, Gavriel Salvendy
1995 B conf
AIME
Christian Ohmann, Q. Yang, Vassilis Moustakis, Konrad Lang, P. J. van Elk
1994 J jnl
Appl. Artif. Intell.
Yves Kodratoff, Vassilis Moustakis, Nicolas Graner
1994 J jnl
Appl. Artif. Intell.
Katharina Morik, George Potamias, Vassilis Moustakis, Giorgos Charissis
1993 conf
ECML
Lena Gaga, Vassilis Moustakis, Giorgos Charissis, Stelios C. Orphanoudakis
tests/unit/test_decompile_utils.py
← Index tests/unit/test_decompile_utils.py python
"""Unit tests for decompiler utility modules:
- bninja/utils/hashes.py
- bninja/utils/json_encoder.py
- bninja/analysis/low_level_normalization.py
"""
import hashlib
import json
import pytest


# ============================================================================
# 1a. hashes.py
# ============================================================================

from redb.extractors.decompiler.bninja.utils.hashes import (
    calculate_md5,
    calculate_sha256,
    calculate_tlsh,
)


class TestCalculateMD5:
    def test_calculate_md5_known_value(self):
        expected = hashlib.md5(b"test").hexdigest()
        assert calculate_md5("test") == expected

    def test_calculate_md5_empty(self):
        expected = hashlib.md5(b"").hexdigest()
        assert calculate_md5("") == expected


class TestCalculateSHA256:
    def test_calculate_sha256_known_value(self):
        expected = hashlib.sha256(b"hello world").hexdigest()
        assert calculate_sha256("hello world") == expected

    def test_calculate_sha256_empty_string(self):
        result = calculate_sha256("")
        assert len(result) == 64
        assert all(c in "0123456789abcdef" for c in result)


class TestCalculateTLSH:
    def test_calculate_tlsh_long_data(self):
        # TLSH requires >= 50 bytes
        data = "A" * 100
        result = calculate_tlsh(data)
        assert result is not None
        assert isinstance(result, str)

    def test_calculate_tlsh_short_data(self):
        data = "A" * 10
        result = calculate_tlsh(data)
        assert result is None

    def test_calculate_tlsh_deterministic(self):
        data = "x" * 200
        assert calculate_tlsh(data) == calculate_tlsh(data)



# ============================================================================
# 1b. json_encoder.py
# ============================================================================

from redb.extractors.decompiler.bninja.utils.json_encoder import BinaryNinjaEncoder


class TestBinaryNinjaEncoder:
    def test_encode_value_confidence_object(self):
        obj = type("VC", (), {"value": 42, "confidence": 255})()
        result = json.dumps(obj, cls=BinaryNinjaEncoder)
        assert json.loads(result) == 42

    def test_encode_str_fallback(self):
        obj = type("Obj", (), {"__str__": lambda self: "custom_repr"})()
        result = json.dumps(obj, cls=BinaryNinjaEncoder)
        assert json.loads(result) == "custom_repr"

    def test_encode_normal_types(self):
        data = {"a": 1, "b": [2, 3], "c": "hello"}
        result = json.dumps(data, cls=BinaryNinjaEncoder)
        assert json.loads(result) == data

    def test_encode_set_via_str(self):
        # Python sets have __str__, so BinaryNinjaEncoder converts them
        # to their string repr instead of raising TypeError.
        result = json.dumps(set([1, 2, 3]), cls=BinaryNinjaEncoder)
        parsed = json.loads(result)
        assert isinstance(parsed, str)
        assert "1" in parsed


# ============================================================================
# 1c. low_level_normalization.py
# ============================================================================

from redb.extractors.decompiler.bninja.analysis.low_level_normalization import (
    LowLevelNormalization,
)


class MockIL:
    """Mock IL node for normalization tests."""
    def __init__(self, operation, operands=None):
        self.operation = operation
        self.operands = operands or []


class TestLowLevelNormalization:
    def setup_method(self):
        self.normalizer = LowLevelNormalization()

    def test_normalize_single_instruction(self):
        node = MockIL(operation=5)
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [5]

    def test_normalize_nested_operands(self):
        child1 = MockIL(operation=10)
        child2 = MockIL(operation=20)
        root = MockIL(operation=1, operands=[child1, child2])
        result = self.normalizer.normalize_instruction_all_levels(root)
        assert result == [1, 10, 20]

    def test_normalize_empty_operands(self):
        node = MockIL(operation=42, operands=[])
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [42]

    def test_normalize_list_operands(self):
        # Simulates phi-node style list operands
        inner = MockIL(operation=99)
        node = MockIL(operation=7, operands=[[inner]])
        result = self.normalizer.normalize_instruction_all_levels(node)
        assert result == [7, 99]

    def test_normalize_none_input(self):
        result = self.normalizer.normalize_instruction_all_levels(None)
        assert result == []