M. Mohan Sondhi

27 papers Misc 10Journal 16Unranked 1
YearRankTypeTitle / Venue / Authors
2004 J jnl
IEEE Trans. Speech Audio Process.
Walter Kellermann, M. Mohan Sondhi, Diemer de Vries
2000 J jnl
Speech Commun.
M. Mohan Sondhi
1999 Misc conf
ICASSP
Jacob Benesty, Dennis R. Morgan, Joseph L. Hall, M. Mohan Sondhi
1998 J jnl
IEEE Signal Process. Lett.
Dennis R. Morgan, Jacob Benesty, M. Mohan Sondhi
1998 Misc conf
ICASSP
Jacob Benesty, Dennis R. Morgan, Joseph L. Hall, M. Mohan Sondhi
1998 J jnl
Bell Labs Tech. J.
Jacob Benesty, Dennis R. Morgan, Joseph L. Hall, M. Mohan Sondhi
1997 Misc conf
ICASSP
Jacob Benesty, Dennis R. Morgan, M. Mohan Sondhi
1995 J jnl
IEEE Signal Process. Lett.
M. Mohan Sondhi, Dennis R. Morgan, Joseph L. Hall
1994 conf
ICSLP
Oded Ghitza, M. Mohan Sondhi
1993 J jnl
Comput. Speech Lang.
Oded Ghitza, M. Mohan Sondhi
1993 J jnl
IEEE J. Sel. Areas Commun.
William Turin, M. Mohan Sondhi
1989 Misc conf
ICASSP
Juergen Schroeter, M. Mohan Sondhi
1988 Misc conf
ICASSP
Juergen Schroeter, Jerry N. Larar, M. Mohan Sondhi
1987 Misc conf
ICASSP
Frank K. Soong, M. Mohan Sondhi
1987 Misc conf
ICASSP
Juergen Schroeter, Jerry N. Larar, M. Mohan Sondhi
1986 J jnl
IEEE Trans. Inf. Theory
Biing-Hwang Juang, Stephen E. Levinson, M. Mohan Sondhi
1985 Misc conf
ICASSP
Biing-Hwang Juang, Lawrence R. Rabiner, Stephen E. Levinson, M. Mohan Sondhi
1985 J jnl
AT&T Tech. J.
Lawrence R. Rabiner, Biing-Hwang Juang, Stephen E. Levinson, M. Mohan Sondhi
1985 J jnl
AT&T Tech. J.
Lawrence R. Rabiner, Biing-Hwang Juang, Stephen E. Levinson, M. Mohan Sondhi
1984 J jnl
AT&T Bell Lab. Tech. J.
Lawrence R. Rabiner, M. Mohan Sondhi, Stephen E. Levinson
1984 Misc conf
ICASSP
Lawrence R. Rabiner, M. Mohan Sondhi, Stephen E. Levinson
1984 J jnl
AT&T Bell Lab. Tech. J.
Lawrence R. Rabiner, Stephen E. Levinson, M. Mohan Sondhi
1983 J jnl
Bell Syst. Tech. J.
Stephen E. Levinson, Lawrence R. Rabiner, M. Mohan Sondhi
1983 J jnl
Bell Syst. Tech. J.
Lawrence R. Rabiner, Stephen E. Levinson, M. Mohan Sondhi
1983 J jnl
Bell Syst. Tech. J.
M. Mohan Sondhi
1978 Misc conf
ICASSP
M. Mohan Sondhi, Stephen E. Levinson
1970 J jnl
Bell Syst. Tech. J.
B. Gopinath, M. Mohan Sondhi
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())