Narges Ahmidi

21 papers Journal 14Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
J. Mach. Learn. Res.
Henrik von Kleist, Alireza Zamanian, Ilya Shpitser, Narges Ahmidi
2024 J jnl
CoRR
Patrick Rockenschaub, Zhicong Xian, Alireza Zamanian, Marta Piperno, Octavia-Andreea Ciora, Elisabeth Pachl, Narges Ahmidi
2023 J jnl
CoRR
Henrik von Kleist, Alireza Zamanian, Ilya Shpitser, Narges Ahmidi
2023 J jnl
CoRR
Henrik von Kleist, Alireza Zamanian, Ilya Shpitser, Narges Ahmidi
2023 J jnl
CoRR
Alireza Zamanian, L. Mareis, Narges Ahmidi
2023 conf
TML4H
Maresa Schröder, Alireza Zamanian, Narges Ahmidi
2023 J jnl
Mach. Learn. Knowl. Extr.
Maresa Schröder, Alireza Zamanian, Narges Ahmidi
2021 J jnl
Frontiers Artif. Intell.
Hugo Loureiro, Tim Becker, Anna Bauer-Mehren, Narges Ahmidi, Janick Weberpals
2020 J jnl
CoRR
Ranjani Srinivasan, Jaron J. R. Lee, Narges Ahmidi, Ilya Shpitser
2019 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Robert S. DiPietro, Narges Ahmidi, Anand Malpani, Madeleine Waldram, Gyusung I. Lee, Mija R. Lee, S. Swaroop Vedula, Gregory D. Hager
2017 J jnl
IEEE Trans. Biomed. Eng.
Narges Ahmidi, Lingling Tao, Shahin Sefati, Yixin Gao, Colin Lea, Benjamín Béjar Haro, Luca Zappella, Sanjeev Khudanpur, René Vidal, Gregory D. Hager
2016 conf
MICCAI (1)
Robert S. DiPietro, Colin Lea, Anand Malpani, Narges Ahmidi, S. Swaroop Vedula, Gyusung I. Lee, Mija R. Lee, Gregory D. Hager
2016 J jnl
CoRR
Robert S. DiPietro, Colin Lea, Anand Malpani, Narges Ahmidi, S. Swaroop Vedula, Gyusung I. Lee, Mija R. Lee, Gregory D. Hager
2015 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Narges Ahmidi, Piyush Poddar, Jonathan D. Jones, S. Swaroop Vedula, Lisa Ishii, Gregory D. Hager, Masaru Ishii
2014 J jnl
CoRR
Piyush Poddar, Narges Ahmidi, S. Swaroop Vedula, Lisa Ishii, Gregory D. Hager, Masaru Ishii
2013 J jnl
Trans. Assoc. Comput. Linguistics
Adam Lopez, Matt Post, Chris Callison-Burch, Jonathan Weese, Juri Ganitkevitch, Narges Ahmidi, Olivia Buzek, Leah Hanson, Beaniesh Jamil, Matthias A. Lee, Ya-Ting Lin, Henry Pao, Fatima Rivera, Leili Shahriyari, Debu Sinha, Adam R. Teichert, Stephen Wampler, Michael Weinberger, Daguang Xu, Lin Yang, Shang Zhao
2013 conf
MICCAI (1)
Narges Ahmidi, Yixin Gao, Benjamín Béjar Haro, S. Swaroop Vedula, Sanjeev Khudanpur, René Vidal, Gregory D. Hager
2012 conf
MICCAI (1)
Narges Ahmidi, Gregory D. Hager, Lisa Ishii, Gary L. Gallia, Masaru Ishii
2010 conf
MICCAI (3)
Narges Ahmidi, Gregory D. Hager, Lisa Ishii, Gabor Fichtinger, Gary L. Gallia, Masaru Ishii
2009 conf
Image-Guided Procedures
Zahra Karimaghaloo, Purang Abolmaesumi, Narges Ahmidi, Thomas Kuiran Chen, David G. Gobbi, Gabor Fichtinger
2004 conf
ITCC (2)
Narges Ahmidi, Reza Safabakhsh
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())