Jan Guynes Clark

31 papers Journal 19Unranked 12
YearRankTypeTitle / Venue / Authors
2014 J jnl
Commun. Assoc. Inf. Syst.
Nima Kordzadeh, Charles Zhechao Liu, Yoris A. Au, Jan Guynes Clark
2014 J jnl
Commun. Assoc. Inf. Syst.
Humayun Zafar, Myung S. Ko, Jan Guynes Clark
2013 J jnl
Int. J. Inf. Manag.
Xiaogang Chen, Xue Li, Jan Guynes Clark, Glenn B. Dietrich
2012 conf
AMCIS
Nima Kordzadeh, Charles Zhechao Liu, Yoris A. Au, Jan Guynes Clark
2012 conf
AMCIS
Xiao Zhang, Jan Guynes Clark
2012 conf
AMCIS
Humayun Zafar, Jan Guynes Clark, Myung S. Ko
2011 J jnl
Commun. Assoc. Inf. Syst.
Jan Guynes Clark, Yoris A. Au, Diane B. Walz, John Warren
2011 conf
AMCIS
Humayun Zafar, Jan Guynes Clark, Myung S. Ko, Yoris A. Au
2011 J jnl
Decis. Support Syst.
Nicole Lang Beebe, Jan Guynes Clark, Glenn B. Dietrich, Myung S. Ko, Daijin Ko
2010 conf
AMCIS
Carlos Alberto Dorantes, Jan Guynes Clark
2009 J jnl
Commun. Assoc. Inf. Syst.
Jan Guynes Clark, John Warren, Yoris A. Au
2009 J jnl
Commun. Assoc. Inf. Syst.
Humayun Zafar, Jan Guynes Clark
2009 J jnl
Int. J. Heal. Inf. Syst. Informatics
Alexander J. McLeod Jr., Jan Guynes Clark
2009 J jnl
Inf. Manag.
Yoris A. Au, Darrell Carpenter, Xiaogang Chen, Jan Guynes Clark
2008 J jnl
Inf. Resour. Manag. J.
Myung S. Ko, Jan Guynes Clark, Daijin Ko
2008 J jnl
Commun. Assoc. Inf. Syst.
Alexander J. McLeod Jr., Jan Guynes Clark, John Warren, Glenn B. Dietrich
2008 conf
AMCIS
Myung S. Ko, Jan Guynes Clark
2008 conf
AMCIS
Darrell Carpenter, Alexander J. McLeod Jr., Jan Guynes Clark
2007 J jnl
Commun. Assoc. Inf. Syst.
Jan Guynes Clark, John Warren, Yoris A. Au
2007 J jnl
Digit. Investig.
Nicole Lang Beebe, Jan Guynes Clark
2007 conf
HICSS
Alexander J. McLeod Jr., Jan Guynes Clark
2006 conf
AMCIS
Nicole Lang Beebe, Jan Guynes Clark
2006 conf
AMCIS
Nicole Lang Beebe, Jan Guynes Clark
2006 J jnl
Commun. Assoc. Inf. Syst.
Jan Guynes Clark, John Warren
2005 J jnl
Digit. Investig.
Nicole Beebe, Jan Guynes Clark
2005 conf
IFIP Int. Conf. Digital Forensics
Nicole Beebe, Jan Guynes Clark
2004 conf
WOSIS
Jan Guynes Clark, Nicole Beebe, Andrew G. Kotulic
2004 J jnl
Inf. Manag.
Andrew G. Kotulic, Jan Guynes Clark
2003 J jnl
Commun. Assoc. Inf. Syst.
Jan Guynes Clark, Diane B. Walz, Judy L. Wynekoop
1998 J jnl
Commun. ACM
Jan Guynes Clark, Vincent S. Lai
1998 J jnl
J. Inf. Technol.
Vincent S. Lai, Jan Guynes Clark
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())