Carola Kruse

27 papers C 1Journal 22Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Comput. Appl. Math.
Julian Litz, Philippe Leleux, Carola Kruse, Joscha Gedicke, Martin J. Kühn
2025 J jnl
J. Parallel Distributed Comput.
Philippe Leleux, Christina Schwarz, Martin J. Kühn, Carola Kruse, Ulrich Rüde
2025 J jnl
SIAM J. Sci. Comput.
Ettaouchi El Mehdi, Luc Giraud, Carola Kruse, Nicolas Tardieu
2025 J jnl
Comput. Appl. Math.
Yongseok Jang, Jérôme Bonelle, Carola Kruse, Frank Hülsemann, Ulrich Rüde
2025 J jnl
SIAM J. Matrix Anal. Appl.
Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2025 ed.
ISC Workshops
Michèle Weiland, Sarah Neuwirth, Carola Kruse, Tobias Weinzierl
2025 J jnl
CoRR
Julian Litz, Philippe Leleux, Carola Kruse, Joscha Gedicke, Martin J. Kühn
2024 conf
PPAM (3)
Hadrien Godé, Carola Kruse, Richard Angersbach, Harald Köstler, Michael Bauerheim, Ulrich Rüde
2024 J jnl
SIAM J. Matrix Anal. Appl.
Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2023 J jnl
CoRR
Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2023 J jnl
CoRR
Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2023 C ed.
ISC
Abhinav Bhatele, Jeff R. Hammond, Marc Baboulin, Carola Kruse
2023 ed.
ISC Workshops
Amanda Bienz, Michèle Weiland, Marc Baboulin, Carola Kruse
2023 J jnl
Numer. Linear Algebra Appl.
Vincent Darrigrand, Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2023 J jnl
Adv. Model. Simul. Eng. Sci.
Ana C. Ordonez, Nicolas Tardieu, Carola Kruse, Daniel Ruiz, Sylvie Granet
2023 J jnl
J. Comput. Phys.
Emily Bourne, Philippe Leleux, Katharina Kormann, Carola Kruse, Virginie Grandgirard, Yaman Güçlü, Martin Joachim Kühn, Ulrich Rüde, Eric Sonnendrücker, Edoardo Zoni
2022 J jnl
J. Sci. Comput.
Martin Joachim Kühn, Carola Kruse, Ulrich Rüde
2022 J jnl
CoRR
Vincent Darrigrand, Andrei Dumitrasc, Carola Kruse, Ulrich Rüde
2021 J jnl
SIAM J. Sci. Comput.
Martin Joachim Kühn, Carola Kruse, Ulrich Rüde
2021 J jnl
Concurr. Comput. Pract. Exp.
Carola Kruse, Masha Sosonkina, Mario Arioli, Nicolas Tardieu, Ulrich Rüde
2020 J jnl
Adv. Model. Simul. Eng. Sci.
Carola Kruse, Vincent Darrigrand, Nicolas Tardieu, Mario Arioli, Ulrich Rüde
2020 J jnl
CoRR
Carola Kruse, Masha Sosonkina, Mario Arioli, Nicolas Tardieu, Ulrich Rüde
2019 conf
PPAM (1)
Carola Kruse, Masha Sosonkina, Mario Arioli, Nicolas Tardieu, Ulrich Rüde
2018 J jnl
CoRR
Mario Arioli, Carola Kruse, Ulrich Rüde, Nicolas Tardieu
2015 J jnl
CoRR
H. T. Banks, Marie Doumic Jauffret, Carola Kruse, Stephanie Prigent, Human Rezaei
2014 J jnl
SIAM J. Sci. Comput.
Carola Kruse, Simon Shaw
2013 J jnl
Comput. Methods Appl. Math.
Carola Kruse, Matthias Maischak
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())