Indranil Mallick

13 papers Journal 10Unranked 3
YearRankTypeTitle / Venue / Authors
2024 J jnl
CoRR
Saheli Saha, Debasmita Banerjee, Rishi Ram, Gowtham Reddy, Debashree Guha, Arnab Sarkar, Bapi Dutta, Moses Arunsingh, Suman Chakraborty, Indranil Mallick
2023 J jnl
Nat. Mac. Intell.
Alexandros Karargyris, Renato Umeton, Micah J. Sheller, Alejandro Aristizabal, Johnu George, Anna Wuest, Sarthak Pati, Hasan Kassem, Maximilian Zenk, Ujjwal Baid, Prakash Narayana Moorthy, Alexander Chowdhury, Junyi Guo, Sahil S. Nalawade, Jacob Rosenthal, David Kanter, Maria Xenochristou, Daniel J. Beutel, Verena Chung, Timothy Bergquist, James A. Eddy, Abubakar Abid, Lewis Tunstall, Omar Sanseviero, Dimitrios Dimitriadis, Yiming Qian, Xinxing Xu, Yong Liu, Rick Siow Mong Goh, Srini Bala, Victor Bittorf, Sreekar Reddy Puchala, Biagio Ricciuti, Soujanya Samineni, Eshna Sengupta, Akshay Chaudhari, Cody Coleman, Bala Desinghu, Gregory F. Diamos, Debo Dutta, Diane Feddema, Grigori Fursin, Xinyuan Huang, Satyananda Kashyap, Nicholas D. Lane, Indranil Mallick, Pietro Mascagni, Virendra Mehta, Cassiano Ferro Moraes, Vivek Natarajan, Nikola Nikolov, Nicolas Padoy, Gennady Pekhimenko, Vijay Janapa Reddi, G. Anthony Reina, Pablo Ribalta, Abhishek Singh, Jayaraman J. Thiagarajan, Jacob Albrecht, Thomas Wolf, Geralyn Miller, Huazhu Fu, Prashant Shah, Daguang Xu, Poonam Yadav, David Talby, Mark M. Awad, Jeremy P. Howard, Michael Rosenthal, Luigi Marchionni, Massimo Loda, Jason M. Johnson, Spyridon Bakas, Peter Mattson
2022 J jnl
J. Digit. Imaging
Surajit Kundu, Santam Chakraborty, Jayanta Mukhopadhyay, Syamantak Das, Sanjoy Chatterjee, Rimpa Basu Achari, Indranil Mallick, Partha Pratim Das, Moses Arunsingh, Tapesh Bhattacharyyaa, Soumendranath Ray
2021 J jnl
J. Medical Syst.
Indranil Mallick, Saheli Saha, Moses Arunsingh
2021 J jnl
CoRR
Alexandros Karargyris, Renato Umeton, Micah J. Sheller, Alejandro Aristizabal, Johnu George, Srini Bala, Daniel J. Beutel, Victor Bittorf, Akshay Chaudhari, Alexander Chowdhury, Cody Coleman, Bala Desinghu, Gregory F. Diamos, Debo Dutta, Diane Feddema, Grigori Fursin, Junyi Guo, Xinyuan Huang, David Kanter, Satyananda Kashyap, Nicholas D. Lane, Indranil Mallick, Pietro Mascagni, Virendra Mehta, Vivek Natarajan, Nikola Nikolov, Nicolas Padoy, Gennady Pekhimenko, Vijay Janapa Reddi, G. Anthony Reina, Pablo Ribalta, Jacob Rosenthal, Abhishek Singh, Jayaraman J. Thiagarajan, Anna Wuest, Maria Xenochristou, Daguang Xu, Poonam Yadav, Michael Rosenthal, Massimo Loda, Jason M. Johnson, Peter Mattson
2021 J jnl
J. Digit. Imaging
Surajit Kundu, Santam Chakraborty, Jayanta Mukhopadhyay, Syamantak Das, Sanjoy Chatterjee, Rimpa Basu Achari, Indranil Mallick, Partha Pratim Das, Moses Arunsingh, Tapesh Bhattacharyyaa, Soumendranath Ray
2020 J jnl
J. Medical Syst.
Surajit Kundu, Santam Chakraborty, Sanjoy Chatterjee, S. Das Bhattacharya, Rimpa Basu Achari, Jayanta Mukhopadhyay, Partha Pratim Das, Indranil Mallick, Moses Arunsingh, Tapesh Bhattacharyyaa, Soumendranath Ray
2020 J jnl
J. Medical Syst.
Surajit Kundu, Santam Chakraborty, Sanjoy Chatterjee, Sangeeta Das Bhattacharya, Rimpa Basu Achari, Jayanta Mukhopadhyay, Partha Pratim Das, Indranil Mallick, Moses Arunsingh, Tapesh Bhattacharyyaa, Soumendranath Ray
2020 J jnl
Comput. Methods Programs Biomed.
Sayantani Ghosh, Shaurav Maulik, Sanjoy Chatterjee, Indranil Mallick, Nishant Chakravorty, Jayanta Mukherjee
2018 J jnl
Pattern Recognit. Lett.
Sai Phani Kumar Malladi, Bijju Kranthi Veduruparthi, Jayanta Mukhopadhyay, Partha Pratim Das, Saswat Chakrabarti, Indranil Mallick
2017 conf
PReMI
Sai Phani Kumar Malladi, Bijju Kranthi Veduruparthi, Jayanta Mukherjee, Partha Pratim Das, Saswat Chakrabarti, Indranil Mallick
2016 conf
ICVGIP
Sai Phani Kumar Malladi, Bijju Kranthi Veduruparthi, Jayanta Mukherjee, Partha Pratim Das, Saswat Chakrabarti, Indranil Mallick
2015 conf
NCVPRIPG
Sayan Mandal, Bijju Kranthi Veduruparthi, Jayanta Mukherjee, Partha Pratim Das, Indranil Mallick
tests/unit/test_decompile_strings.py
← Index tests/unit/test_decompile_strings.py python
"""Unit tests for bninja/analysis/strings.py — StringAnalysis."""
import pytest
import math
from unittest.mock import MagicMock


# StringAnalysis has no binaryninja imports, just collections and math
from redb.extractors.decompiler.bninja.analysis.strings import StringAnalysis


# ============================================================================
# Helper mocks
# ============================================================================

class MockStringEntry:
    """Mock for a Binary Ninja string reference."""
    def __init__(self, value, raw=None, start=0, length=0, type_name="Utf8String"):
        self.value = value
        self.raw = raw if raw is not None else (value.encode("utf-8") if isinstance(value, str) else value)
        self.start = start
        self.length = length if length else len(self.raw)
        self.type = MagicMock()
        self.type.name = type_name


class MockBinaryView:
    """Mock binary view with a strings list."""
    def __init__(self, strings=None):
        self.strings = strings or []


# ============================================================================
# 6a. StringAnalysis
# ============================================================================


class TestStringAnalysisEntropy:
    def setup_method(self):
        self.sa = StringAnalysis(bv=MockBinaryView(), functions=[])

    def test_entropy_empty_string(self):
        assert self.sa.entropy("") == 0.0

    def test_entropy_single_char(self):
        assert self.sa.entropy("aaaa") == 0.0

    def test_entropy_uniform_distribution(self):
        # "abcd" -> 4 unique chars, each p=1/4, entropy = log2(4) = 2.0
        result = self.sa.entropy("abcd")
        assert result == pytest.approx(2.0)

    def test_entropy_binary_string(self):
        # "ab" -> 2 unique chars, each p=1/2, entropy = log2(2) = 1.0
        result = self.sa.entropy("ab")
        assert result == pytest.approx(1.0)


class TestStringAnalysisAnalyze:
    def test_analyze_deduplication(self):
        """Duplicate (string, encoding) pairs -> only first kept."""
        entries = [
            MockStringEntry("hello", start=100, type_name="Utf8String"),
            MockStringEntry("hello", start=200, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        assert result[0]["string_offset"] == 100

    def test_analyze_sorted_by_address(self):
        """First occurrence (lowest offset) is the one kept."""
        entries = [
            MockStringEntry("world", start=500, type_name="Utf8String"),
            MockStringEntry("world", start=100, type_name="Utf8String"),
        ]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        # The analyze() sorts by start, so 100 comes first
        assert result[0]["string_offset"] == 100

    def test_analyze_empty_bv(self):
        bv = MockBinaryView(strings=[])
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert result == []

    def test_analyze_output_schema(self):
        entries = [MockStringEntry("test_string", start=0, type_name="Utf8String")]
        bv = MockBinaryView(strings=entries)
        sa = StringAnalysis(bv=bv, functions=[])
        result = sa.analyze()
        assert len(result) == 1
        r = result[0]
        required_keys = [
            "string",
            "string_raw",
            "string_encoding",
            "string_offset",
            "string_length",
            "string_raw_length",
            "string_entropy",
        ]
        for key in required_keys:
            assert key in r, f"Missing key: {key}"