James D. Lee

17 papers A* 1Journal 8Unranked 8
YearRankTypeTitle / Venue / Authors
2024 J jnl
Symmetry
Teng Long, Leyu Wang, James D. Lee, Cing-Dao Kan
2021 J jnl
ACM Trans. Soc. Comput.
Frank L. Greitzer, Wanru Li, Kathryn B. Laskey, James D. Lee, Justin Purl
2021 J jnl
J. Wirel. Mob. Networks Ubiquitous Comput. Dependable Appl.
Frank L. Greitzer, Justin Purl, Paul J. Sticha, Martin C. Yu, James D. Lee
2020 conf
HICSS
Wanru Li, James D. Lee, Justin Purl, Frank L. Greitzer, Bahram Yousefi, Kathryn B. Laskey
2019 conf
SysCon
James D. Lee, Wanru Li, Shou Matsumoto, Mohanad Ajina, Bahram Yousefi, Kathryn B. Laskey
2019 conf
SysCon
James D. Lee, Shou Matsumoto, Abbas K. Zaidi, Kathryn B. Laskey
2003 J jnl
Decis. Support Syst.
Paul Benjamin Lowry, Conan C. Albrecht, Jay F. Nunamaker Jr., James D. Lee
2002 conf
HICSS
Paul Benjamin Lowry, Conan C. Albrecht, James D. Lee, Jay F. Nunamaker Jr.
2000 conf
HICSS
James D. Lee, Ann M. Hickey, Dongsong Zhang, Eric L. Santanen, Lina Zhou
1999 J jnl
Interact. Comput.
Mark Pendergast, Kregg Aytes, James D. Lee
1998 J jnl
J. Manag. Inf. Syst.
Douglas L. Dean, James D. Lee, Mark Pendergast, Ann M. Hickey, Jay F. Nunamaker Jr.
1997 conf
HICSS (2)
Douglas L. Dean, James D. Lee, Jay F. Nunamaker Jr.
1996 conf
HICSS (3)
Mark Pendergast, Douglas L. Dean, James D. Lee, Boris Nevstrujev, Nina Katic
1995 J jnl
J. Manag. Inf. Syst.
Douglas L. Dean, James D. Lee, Richard E. Orwig, Douglas R. Vogel
1994 conf
HICSS (4)
Douglas L. Dean, Richard E. Orwig, James D. Lee, Douglas R. Vogel
1992 J jnl
Robotics Auton. Syst.
Zheng J. Geng, Leonard S. Haynes, James D. Lee, Robert L. Carroll
1990 A* conf
ICRA
Zheng J. Geng, James D. Lee, Robert L. Carroll, Leonard Stanley Haynes
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())