M. Sasikumar

31 papers A 1B 6Journal 11Unranked 13
YearRankTypeTitle / Venue / Authors
2025 J jnl
ACM Trans. Comput. Educ.
Deepti Reddy Patil, Sridhar Iyer, M. Sasikumar
2024 J jnl
Int. J. Bio Inspired Comput.
Masooda M. Modak, Prachi Gharpure, M. Sasikumar
2024 J jnl
Res. Pract. Technol. Enhanc. Learn.
Patil Deepti Reddy, Sridhar Iyer, M. Sasikumar
2023 J jnl
ACM Trans. Asian Low Resour. Lang. Inf. Process.
Masooda M. Modak, Prachi Gharpure, M. Sasikumar
2019 J jnl
J. Intell. Syst.
Raj Nath Patel, Prakash B. Pimpale, M. Sasikumar
2018 conf
ICON
Atish Shankar Ghone, Rachana Nerpagar, Pranaw Kumar, Bira Chandra Singh, Prakash B. Pimpale, M. Sasikumar
2017 B conf
ICALT
Patil Deepti Reddy, Sridhar Iyer, M. Sasikumar
2017 J jnl
CoRR
Raj Nath Patel, Prakash B. Pimpale, M. Sasikumar
2017 A conf
INTERSPEECH
Atish Shankar Ghone, Rachana Nerpagar, Pranaw Kumar, Arun Baby, S. Aswin Shanmugam, M. Sasikumar, Hema A. Murthy
2016 B conf
ICALT
Rekha Ramesh, M. Sasikumar, Sridhar Iyer
2016 conf
LaTiCE
Rekha Ramesh, M. Sasikumar, Sridhar Iyer
2016 B conf
ITiCSE
Rekha Ramesh, M. Sasikumar, Sridhar Iyer
2016 J jnl
CoRR
Raj Nath Patel, Prakash B. Pimpale, M. Sasikumar
2016 J jnl
CoRR
Raj Nath Patel, Rohit Gupta, Prakash B. Pimpale, M. Sasikumar
2016 J jnl
CoRR
Raj Nath Patel, Prakash B. Pimpale, M. Sasikumar
2016 conf
LaTiCE
Patil Deepti Reddy, Sridhar Iyer, M. Sasikumar
2016 conf
WMT
Raj Nath Patel, M. Sasikumar
2016 J jnl
CoRR
Raj Nath Patel, M. Sasikumar
2015 B conf
ICALT
Deepika P. Vinchurkar, M. Sasikumar
2014 conf
ICON
Prakash B. Pimpale, Raj Nath Patel, M. Sasikumar
2014 conf
T4E
Rekha Ramesh, Shitanshu Mishra, M. Sasikumar, Sridhar Iyer
2014 B conf
ICALT
Patil Deepti Reddy, M. Sasikumar
2013 conf
HyTra@ACL
Raj Nath Patel, Rohit Gupta, Prakash B. Pimpale, M. Sasikumar
2012 conf
T4E
Madhavi P., Akshay Kannan, Suman Nath, Sethuram Balaji Kodeswaran, Ankit Kathuria, M. Sasikumar
2010 conf
T4E
Archana Rane-Sharma, ChandraShekhar Sharma, R. K. V. S. Raman, M. Sasikumar
2010 conf
T4E
Prashant More, Ankit Dangi, Manoj Kumar Singh, Akshay Kumar, M. Sasikumar
2010 J jnl
Int. J. Comput. Sci. Appl.
Rekha Ramesh, M. Sasikumar
2010 conf
ICWET
Rekha Ramesh, M. Sasikumar
2010 conf
ICWET
Lata R. Ragha, M. Sasikumar
2009 conf
T4E
Abhijit Joshi, M. Sasikumar
2008 B conf
IJCNLP
Ananthakrishnan Ramanathan, Jayprasad Hegde, Ritesh M. Shah, Pushpak Bhattacharyya, M. Sasikumar
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())