Hajar Mozaffar

15 papers Journal 11Unranked 4
YearRankTypeTitle / Venue / Authors
2025 J jnl
npj Digit. Medicine
Kathrin M. Cresswell, Robin Williams, Sheena Dungey, Stuart Anderson, Miguel O. Bernabeu, Hajar Mozaffar, Xiao Yang, Varun Sai, Sara Bea, Sally Eason
2025 J jnl
Inf. Syst. J.
Hajar Mozaffar, Marina Candi
2024 conf
ECIS
Hajar Mozaffar, Kathrin M. Cresswell
2024 J jnl
J. Am. Medical Informatics Assoc.
Kathrin M. Cresswell, Clair Sullivan, Jeremy Theal, Hajar Mozaffar, Robin Williams
2022 J jnl
J. Am. Medical Informatics Assoc.
Kathrin M. Cresswell, Aziz Sheikh, Bryony Dean Franklin, Susan Hinder, Hung The Nguyen, Marta Krasuska, Wendy Lane, Hajar Mozaffar, Kathy Mason, Sally Eason, Henry W. W. Potts, Robin Williams
2022 J jnl
Eur. J. Inf. Syst.
Hajar Mozaffar, Niki Panteli
2021 J jnl
J. Am. Medical Informatics Assoc.
Robin Williams, Aziz Sheikh, Bryony Dean Franklin, Marta Krasuska, Hung The Nguyen, Susan Hinder, Wendy Lane, Hajar Mozaffar, Kathy Mason, Sally Eason, Henry W. W. Potts, Kathrin M. Cresswell
2020 J jnl
Health Informatics J.
Valeri Wiegel, Abby King, Hajar Mozaffar, Kathrin M. Cresswell, Robin Williams, Aziz Sheik
2020 J jnl
Health Informatics J.
Kathrin M. Cresswell, Margaret Callaghan, Sheraz Khan, Zakariya Sheikh, Hajar Mozaffar, Aziz Sheikh
2018 J jnl
Int. J. Medical Informatics
Hajar Mozaffar, Robin Williams, Kathrin M. Cresswell, Aziz Sheikh
2018 conf
ECIS
Hajar Mozaffar
2016 J jnl
BMC Medical Informatics Decis. Mak.
Hajar Mozaffar, Kathrin M. Cresswell, Lisa Lee, Robin Williams, Aziz Sheikh
2016 J jnl
J. Am. Medical Informatics Assoc.
Hajar Mozaffar, Robin Williams, Kathrin M. Cresswell, Zoe Morrison, David W. Bates, Aziz Sheikh
2008 conf
FCS
Ardashir Dolati, Mehdi Sohrabi Haghighat, Saeed Safaei, Hajar Mozaffar
2008 conf
FCS
Saeed Safaei, Hajar Mozaffar, Babak Esmaeili
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())