Rafael Bassi Stern

24 papers A 1Journal 22Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
Trans. Mach. Learn. Res.
Luben M. C. Cabezas, Guilherme Soares, Thiago R. Ramos, Rafael Bassi Stern, Rafael Izbicki
2025 J jnl
Int. J. Approx. Reason.
Rodrigo F. L. Lassance, Rafael Izbicki, Rafael Bassi Stern
2025 conf
ISIPTA
Mark J. Schervish, Teddy Seidenfeld, Ruobin Gong, Joseph B. Kadane, Rafael Bassi Stern
2025 J jnl
Inf. Sci.
Luben M. C. Cabezas, Mateus P. Otto, Rafael Izbicki, Rafael Bassi Stern
2025 J jnl
Rev. Symb. Log.
Mark J. Schervish, Teddy Seidenfeld, Joseph B. Kadane, Ruobin Gong, Rafael Bassi Stern
2024 J jnl
CoRR
Luben M. C. Cabezas, Mateus P. Otto, Rafael Izbicki, Rafael Bassi Stern
2023 J jnl
CoRR
Gustavo Grivol, Rafael Izbicki, Alex A. Okuno, Rafael Bassi Stern
2023 J jnl
Appl. Soft Comput.
Luben M. C. Cabezas, Rafael Izbicki, Rafael Bassi Stern
2023 J jnl
Int. J. Approx. Reason.
Luís Gustavo Esteves, Rafael Izbicki, Julio Michael Stern, Rafael Bassi Stern
2022 J jnl
J. Mach. Learn. Res.
Rafael Izbicki, Gilson Y. Shimizu, Rafael Bassi Stern
2022 J jnl
Int. J. Approx. Reason.
Ruobin Gong, Joseph B. Kadane, Mark J. Schervish, Teddy Seidenfeld, Rafael Bassi Stern
2021 J jnl
CoRR
Luben M. C. Cabezas, Rafael Izbicki, Rafael Bassi Stern
2020 J jnl
CoRR
Rafael Izbicki, Gilson Y. Shimizu, Rafael Bassi Stern
2020 A conf
AISTATS
Rafael Izbicki, Gilson Y. Shimizu, Rafael Bassi Stern
2019 J jnl
CoRR
Marco Henrique de Almeida Inácio, Rafael Izbicki, Rafael Bassi Stern
2019 J jnl
CoRR
Rafael Izbicki, Gilson Y. Shimizu, Rafael Bassi Stern
2019 J jnl
Entropy
Luís Gustavo Esteves, Rafael Izbicki, Julio Michael Stern, Rafael Bassi Stern
2019 J jnl
J. Mach. Learn. Res.
Afonso Fernandes Vaz, Rafael Izbicki, Rafael Bassi Stern
2018 J jnl
CoRR
Afonso Fernandes Vaz, Rafael Izbicki, Rafael Bassi Stern
2017 J jnl
Log. J. IGPL
Julio Michael Stern, Rafael Izbicki, Luís Gustavo Esteves, Rafael Bassi Stern
2016 J jnl
Entropy
Luís Gustavo Esteves, Rafael Izbicki, Julio Michael Stern, Rafael Bassi Stern
2014 J jnl
CoRR
Rafael Izbicki, Rafael Bassi Stern
2013 J jnl
Stat. Anal. Data Min.
Rafael Izbicki, Rafael Bassi Stern
2012 J jnl
Entropy
Rafael Bassi Stern, Carlos A. de B. Pereira
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())