Orlando P. Simonetti

13 papers Journal 5Unranked 8
YearRankTypeTitle / Venue / Authors
2025 conf
ISBI
Parker Martin, Christopher Crabtree, Matthew S. Tong, Orlando P. Simonetti, Yuan Xue
2025 conf
ISBI
Yixuan Liu, Yu Ding, Yingmin Liu, Chong Chen, Kelvin Chow, Ning Jin, Axel Krafft, Florian Maier, Aimee Armstrong, Rizwan Ahmad, Orlando P. Simonetti, Yuan Xue
2025 conf
ISBI
Yu Ding, Matthew S. Tong, Parker Martin, Yu Kang, Nikita Nair, Yuchi Han, Orlando P. Simonetti
2025 conf
MICCAI (3)
Yidong Zhao, Peter Kellman, Hui Xue, Tongyun Yang, Yi Zhang, Yuchi Han, Orlando P. Simonetti, Qian Tao
2025 J jnl
CoRR
Yidong Zhao, Peter Kellman, Hui Xue, Tongyun Yang, Yi Zhang, Yuchi Han, Orlando P. Simonetti, Qian Tao
2024 J jnl
CoRR
Dilek Mirgun Yalcinkaya, Khalid Youssef, Bobak Heydari, Janet Wei, Noel Bairey Merz, Robert Judd, Rohan Dharmakumar, Orlando P. Simonetti, Jonathan W. Weinsaft, Subha V. Raman, Behzad Sharif
2024 conf
MICCAI (9)
Yidong Zhao, Yi Zhang, Orlando P. Simonetti, Yuchi Han, Qian Tao
2024 J jnl
CoRR
Yidong Zhao, Yi Zhang, Orlando P. Simonetti, Yuchi Han, Qian Tao
2023 conf
MICCAI (3)
Dilek Mirgun Yalcinkaya, Khalid Youssef, Bobak Heydari, Orlando P. Simonetti, Rohan Dharmakumar, Subha Raman, Behzad Sharif
2023 J jnl
CoRR
Dilek Mirgun Yalcinkaya, Khalid Youssef, Bobak Heydari, Orlando P. Simonetti, Rohan Dharmakumar, Subha Raman, Behzad Sharif
2020 conf
ISBI
Chong Chen, Yingmin Liu, Orlando P. Simonetti, Rizwan Ahmad
2011 conf
MICCAI (1)
Hui Xue, Yu Ding, Christoph Guetter, Marie-Pierre Jolly, Jens Guehring, Sven Zühlsdorff, Orlando P. Simonetti
1993 J jnl
IEEE Trans. Medical Imaging
Orlando P. Simonetti, Jeffrey L. Duerk, Vira Chankong
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())