Oleg Ivanov

15 papers A 1Misc 4Journal 8Unranked 2
YearRankTypeTitle / Venue / Authors
2024 J jnl
IEEE Access
Ivan Stebakov, Alexei Kornaev, Elena Kornaeva, Nikita Litvinenko, Yuri Kazakov, Oleg Ivanov, Bulat Ibragimov
2024 J jnl
CoRR
Alexey Kornaev, Elena Kornaeva, Oleg Ivanov, Ilya Pershin, Danis Alukaev
2023 Misc conf
ICASSP
Pavel Andreev, Aibek Alanov, Oleg Ivanov, Dmitry P. Vetrov
2022 A conf
INTERSPEECH
Ivan Shchekotov, Pavel K. Andreev, Oleg Ivanov, Aibek Alanov, Dmitry P. Vetrov
2022 J jnl
CoRR
Ivan Shchekotov, Pavel Andreev, Oleg Ivanov, Aibek Alanov, Dmitry P. Vetrov
2022 J jnl
CoRR
Pavel Andreev, Aibek Alanov, Oleg Ivanov, Dmitry P. Vetrov
2019 conf
RuSCDays
Dmitry Buryak, Nina N. Popova, Vladimir V. Voevodin, Yuri Konkov, Oleg Ivanov, Denis Shaykhlislamov, Ilya D. Fateev
2019 conf
ICLR (Poster)
Oleg Ivanov, Michael Figurnov, Dmitry P. Vetrov
2018 J jnl
CoRR
Oleg Ivanov, Michael Figurnov, Dmitry P. Vetrov
2017 J jnl
CoRR
Oleg Ivanov, Sergey Bartunov
2005 J jnl
Artif. Intell. Medicine
Wendy Webber Chapman, Lee M. Christensen, Michael M. Wagner, Peter J. Haug, Oleg Ivanov, John N. Dowling, Robert T. Olszewski
2003 Misc conf
AMIA
Oleg Ivanov, Per H. Gesteland, William R. Hogan, Michael B. Mundorff, Michael M. Wagner
2003 J jnl
J. Am. Medical Informatics Assoc.
William R. Hogan, Fu-Chiang Tsui, Oleg Ivanov, Per H. Gesteland, Shaun J. Grannis, J. Marc Overhage, J. Michael Robinson, Michael M. Wagner
2002 Misc conf
AMIA
Oleg Ivanov, Michael M. Wagner, Wendy W. Chapman, Robert T. Olszewski
2002 Misc conf
AMIA
Fu-Chiang Tsui, Jeremy U. Espino, Michael M. Wagner, Per H. Gesteland, Oleg Ivanov, Robert T. Olszewski, Zhen Liu, Xiaoming Zeng, Wendy W. Chapman, Weng-Keen Wong, Andrew W. Moore
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())