Carlton H. Scott

20 papers Journal 16Unranked 3
YearRankTypeTitle / Venue / Authors
2018 J jnl
Int. J. Heal. Inf. Syst. Informatics
Judy E. Scott, Carlton H. Scott
2017 conf
HICSS
Judy E. Scott, Carlton H. Scott
2016 J jnl
Networks
Zvi Drezner, Carlton H. Scott, John G. Turner
2013 J jnl
Math. Methods Oper. Res.
Zvi Drezner, Carlton H. Scott
2011 conf
QTNA
Carlton H. Scott, Thomas R. Jefferson
2009 J jnl
Comput. Oper. Res.
Tammy Drezner, Zvi Drezner, Carlton H. Scott
2008 ch.
Wiley Encyclopedia of Computer Science and Engineering
Thomas R. Jefferson, Carlton H. Scott
2008 conf
HICSS
Judy E. Scott, Carlton H. Scott
2007 J jnl
Math. Methods Oper. Res.
Carlton H. Scott, Thomas R. Jefferson
2004 J jnl
Adv. Decis. Sci.
Carlton H. Scott, Thomas R. Jefferson, Soheila Jorjani
2001 J jnl
Ann. Oper. Res.
Thomas R. Jefferson, Carlton H. Scott
2000 J jnl
J. Oper. Res. Soc.
Carlton H. Scott, O. G. Skelton, Erik Rolland
1999 J jnl
Eur. J. Oper. Res.
Zvi Drezner, Carlton H. Scott
1998 J jnl
J. Glob. Optim.
Carlton H. Scott, Thomas R. Jefferson, J. B. G. Frenk
1994 J jnl
Oper. Res.
Kut C. So, Carlton H. Scott
1985 J jnl
Inf. Sci.
Carlton H. Scott, Thomas R. Jefferson, Soheila Jorjani
1985 J jnl
Math. Program.
Thomas R. Jefferson, Carlton H. Scott
1980 J jnl
Inf. Sci.
Carlton H. Scott, Thomas R. Jefferson
1979 J jnl
Z. Oper. Research
Thomas R. Jefferson, Carlton H. Scott, John M. Cozzolino
1977 J jnl
Inf. Sci.
Carlton H. Scott, Thomas R. Jefferson
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())