Vassilis Tsogkas

23 papers B 2C 4Journal 6Unranked 11
YearRankTypeTitle / Venue / Authors
2017 B conf
GLOBECOM
Ioannis Prevezanos, Christos Tselios, Andreas Angelou, Michael J. McGrath, Rufael Mekuria, Vassilis Tsogkas, George Tsolis
2017 conf
CAMAD
Ioannis Prevezanos, Andreas Angelou, Christos Tselios, Alexandros Stergiakis, Vassilis Tsogkas, George Tsolis
2017 J jnl
Int. J. Mach. Learn. Cybern.
Christos Bouras, Vassilis Tsogkas
2016 J jnl
Int. J. Mach. Learn. Cybern.
Christos Bouras, Vassilis Tsogkas
2014 C conf
DATA
Christos Bouras, Vassilis Tsogkas
2013 C conf
DATA
Christos Bouras, Vassilis Tsogkas
2012 J jnl
Knowl. Based Syst.
Christos Bouras, Vassilis Tsogkas
2012 conf
CSE
Christos Bouras, Vassilis Tsogkas
2012 B conf
KES
Christos Bouras, Vassilis Tsogkas
2011 conf
SITIS
Christos Bouras, Vassilis Tsogkas
2010 J jnl
J. Netw. Comput. Appl.
Christos Bouras, Vassilis Poulopoulos, Vassilis Tsogkas
2010 J jnl
Data Knowl. Eng.
Christos Bouras, Vassilis Tsogkas
2010 conf
KES (3)
Christos Bouras, Vassilis Tsogkas
2009 conf
IADIS AC (1)
Christos Bouras, George Tsichritzis, Vassilis Tsogkas
2009 conf
CCNC
Christos Bouras, Vassilis Poulopoulos, Vassilis Tsogkas
2009 C conf
ICIW
Christos Bouras, Vassilis Tsogkas
2009 conf
IADIS AC (1)
Christos Bouras, Vassilis Tsogkas, Vassilis Poulopoulos, George Tsichritzis
2008 conf
ICDM (Posters and Workshops)
Christos Bouras, Vassilis Poulopoulos, Vassilis Tsogkas
2008 conf
KES (2)
Christos Bouras, Vassilis Tsogkas
2008 C conf
ICIW
Christos Bouras, Vassilis Poulopoulos, Ioannis Sengounis, Vassilis Tsogkas
2008 J jnl
Data Knowl. Eng.
Christos Bouras, Vassilis Poulopoulos, Vassilis Tsogkas
2007 conf
DMIN
Christos Bouras, Vassilis Poulopoulos, Vassilis Tsogkas
2006 conf
International Conference on Internet Computing
Christos Bouras, Charis Dimitriou, Vassilis Poulopoulos, Vassilis Tsogkas
redb/extractors/decompiler/bninja/analysis/strings.py
← Index redb/extractors/decompiler/bninja/analysis/strings.py python
from collections import Counter
import math

class StringAnalysis:
    def __init__(self, bv, functions):
        self.bv = bv
        self.functions = functions

    def entropy(self, s: str) -> float:
        """Compute Shannon entropy of a string."""
        if not s:
            return 0.0
        freq = Counter(s)
        length = len(s)
        return -sum((count / length) * math.log2(count / length) for count in freq.values())

    def analyze(self):
        """
        Extract unique strings from the binary.

        Deduplicates by (string, encoding) within the same binary, keeping the
        first occurrence (lowest offset). Cross-binary deduplication and
        aggregation is handled by ClickHouse materialized views.
        """
        strings = {}

        # Sort strings by their starting address
        sorted_entries = sorted(self.bv.strings, key=lambda e: e.start)

        for entry in sorted_entries:
            # Key is the string and its encoding
            key = (entry.value, entry.type.name)

            # Skip if this string (value + encoding) was already added.
            # Because entries are sorted by address, the first one is always kept.
            if key in strings:
                continue

            # Store only the first occurrence with schema-matching field names
            # entry.length is the raw byte length, len(entry.value) is decoded string length
            string_entry = {
                "string": entry.value,
                "string_raw": entry.raw,
                "string_encoding": entry.type.name,
                "string_offset": entry.start,
                "string_length": len(entry.value),
                "string_raw_length": entry.length,
                "string_entropy": self.entropy(entry.value),
            }

            strings[key] = string_entry

        # Return as list for export compatibility
        return list(strings.values())