J. Vijayalakshmi

14 papers Journal 5Unranked 9
YearRankTypeTitle / Venue / Authors
2024 conf
ICCCNT
Govindasamy Murugesan, J. Vijayalakshmi, Ezhil Kandasamy, Arthika Jeganathan, Dharanidharan Rangasamy, Dinesh Venkatachalam, Prakash Duraisamy, S. Maheswaran
2024 conf
ICCCNT
Vibin Mammen Vinod, J. Vijayalakshmi, G. Murugesan, S. Bhoovitha, A Aravindan, S. Amirtha Varshini
2023 conf
ICCCNT
V. Dinesh, J. Vijayalakshmi, K. Jayasudha, N. Krishna, M. Mohammed Asfaq
2023 conf
ICCCNT
J. Vijayalakshmi, Vibin Mammen Vinod, V. Dinesh, Ramya T, Rohinth M. P, Naveen M
2023 conf
IC3I
Seema Raj, Sandeep Sharma, Shivangi Ghaldiyal, J. Vijayalakshmi, M. S. Gowtham, Jayashree Tamkhade
2022 J jnl
Concurr. Comput. Pract. Exp.
J. Vijayalakshmi, E. Ramaraj
2022 conf
ICCCNT
J. Vijayalakshmi, Dinesh Venkatachalam, Vibin Mammen Vinod, S. V. Swathiga, S. Swetha, R. Santhosh
2022 J jnl
Intell. Autom. Soft Comput.
R. Bhaskaran, R. Karuppathal, M. Karthick, J. Vijayalakshmi, Seifedine Nimer Kadry, Yunyoung Nam
2022 conf
ICCCNT
Dinesh Venkatachalam, J. Vijayalakshmi, K. Dineshkumar, P. Ahileswar, P. S. Bharani Sridhar
2022 conf
ICCCNT
Dinesh Venkatachalam, J. Vijayalakshmi, V. Pagalavan, R. Sanjay, S. Pradeep Kumar
2021 J jnl
Int. J. Comput. Sci. Eng.
J. Vijayalakshmi, A. Murugan
2019 J jnl
J. Circuits Syst. Comput.
J. Vijayalakshmi, G. Murugesan
2019 J jnl
Clust. Comput.
J. Vijayalakshmi, Chinnanadar Ramachandran Rene Robin
2010 conf
ICUMT
R. Vinolee, J. Vijayalakshmi
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())