Victor V. Kryssanov

81 papers B 5C 1Journal 26Unranked 48
YearRankTypeTitle / Venue / Authors
2025 conf
APSIPA
Cheng-Yu Chen, Daniil Buryakov, Valentinus Roby Hananto, Victor V. Kryssanov
2025 conf
APSIPA
Michael Evan Santoso, Bhone Tay Zar Kyaw, Valentinus Roby Hananto, Victor V. Kryssanov
2025 conf
WSSE
Dana Theresa Sophia Plessing, Patricia Brockmann, Daniel Moritz Marutschke, Tri Astoto Kurniawan, Victor V. Kryssanov
2025 J jnl
Mach. Learn. Knowl. Extr.
Agus Riyadi, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2025 conf
WSSE
Daniel Moritz Marutschke, Anja Petra Metzner, Patricia Brockmann, Tri Astoto Kurniawan, Máté Kovács, Victor V. Kryssanov
2024 conf
DG.O
Ruihao Wang, Máté Kovács, Victor V. Kryssanov, Uwe Serdült
2024 conf
DG.O
Daniil Buryakov, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2024 J jnl
Frontiers Artif. Intell.
Daniil Buryakov, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2024 J jnl
Big Data Cogn. Comput.
Agus Riyadi, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2024 conf
WSSE
Daniel Moritz Marutschke, Patricia Brockmann, Tri Astoto Kurniawan, Máté Kovács, Victor V. Kryssanov
2024 conf
CSEE&T
Felix Waigner, Andreas Roessler, Michael Evan Santoso, Patricia Brockmann, Daniel Moritz Marutschke, Tri Astoto Kurniawan, Victor V. Kryssanov
2023 conf
BigComp
Agus Riyadi, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2023 conf
SIET
Annisa Dea Rachmantya, Uwe Serdült, Victor V. Kryssanov
2023 conf
LOD (1)
Alireza Hajebrahimi, Michael Evan Santoso, Máté Kovács, Victor V. Kryssanov
2023 conf
ECSEE
Nimra Ayub, Melanie Hauser, Patricia Brockmann, Daniel Moritz Marutschke, Victor V. Kryssanov
2022 J jnl
IEICE Trans. Inf. Syst.
Daniel Moritz Marutschke, Victor V. Kryssanov, Patricia Brockmann
2022 conf
ICFET
Julian Titze, Patricia Brockmann, Daniel Moritz Marutschke, Victor V. Kryssanov
2022 conf
ePart
Daniil Buryakov, Máté Kovács, Victor V. Kryssanov, Uwe Serdült
2021 J jnl
Sensors
Budi Darma Setiawan, Uwe Serdült, Victor V. Kryssanov
2021 conf
ICCDE
Valentinus Roby Hananto, Uwe Serdült, Victor V. Kryssanov
2021 conf
CCIOT
Máté Kovács, Daniil Buryakov, Victor V. Kryssanov
2021 conf
BigComp
Budi Darma Setiawan, Uwe Imre Serdült, Victor V. Kryssanov
2020 conf
IICST
Thariq M. Jauhari, Soomin Kim, Máté Kovács, Uwe Serdült, Victor V. Kryssanov
2020 conf
IICST
Valentinus Roby Hananto, Uwe Serdült, Victor V. Kryssanov
2020 conf
IC4E
Daniel Moritz Marutschke, Victor V. Kryssanov, Patricia Brockmann
2020 conf
IICST
Budi Darma Setiawan, Victor V. Kryssanov, Uwe Serdült
2020 conf
CSEE&T
Daniel Moritz Marutschke, Victor V. Kryssanov, Patricia Brockmann
2019 J jnl
ACM Trans. Asian Low Resour. Lang. Inf. Process.
Peter Lajos Ihasz, Máté Kovács, Ian Piumarta, Victor V. Kryssanov
2019 conf
I3E
Máté Kovács, Victor V. Kryssanov
2019 conf
HICSS
Daniel Moritz Marutschke, Victor V. Kryssanov, Jesús-Manuel Olivares-Ceja, Patricia Brockmann
2018 C conf
ICGSE
Daniel Moritz Marutschke, Victor V. Kryssanov, Patricia Brockmann
2018 B conf
SMC
Mikhail M. Svinin, Evgeni Magid, Igor Goncharenko, Victor V. Kryssanov
2016 conf
AsiaHaptics
Igor Goncharenko, Mikhail M. Svinin, Victor V. Kryssanov
2015 conf
Culture Computing
Peter Lajos Ihasz, Timothy H. Van, Victor V. Kryssanov
2013 conf
Culture and Computing
Victor V. Kryssanov, Frank J. Rinaldo, Hitoshi Ogawa, Evgeny L. Kuleshov
2013 conf
HCI (3)
Yugo Hayashi, Victor V. Kryssanov, Hitoshi Ogawa
2013 J jnl
CoRR
Hiromu Mori, Yoshihiro Matsumoto, Victor V. Kryssanov, Eric W. Cooper, Hitoshi Ogawa, Shoji Makino, Zbigniew R. Struzik, Tomasz M. Rutkowski
2013 conf
HAID
Hiromu Mori, Yoshihiro Matsumoto, Victor V. Kryssanov, Eric W. Cooper, Hitoshi Ogawa, Shoji Makino, Zbigniew R. Struzik, Tomasz M. Rutkowski
2012 conf
SCIS&ISIS
Masataka Yukawa, Yugo Hayashi, Hitoshi Ogawa, Victor V. Kryssanov
2012 J jnl
CoRR
Hiromu Mori, Yoshihiro Matsumito, Shoji Makino, Victor V. Kryssanov, Tomasz M. Rutkowski
2012 conf
SCIS&ISIS
Hiromu Mori, Yoshihiro Matsumito, Shoji Makino, Victor V. Kryssanov, Tomasz M. Rutkowski
2011 conf
HCI (3)
Yuki Ichiyanagi, Eric W. Cooper, Victor V. Kryssanov, Hitoshi Ogawa
2011 ed.
HAID
Eric W. Cooper, Victor V. Kryssanov, Hitoshi Ogawa, Stephen A. Brewster
2011 conf
HCI (2)
Yugo Hayashi, Victor V. Kryssanov, Kazuhisa Miwa, Hitoshi Ogawa
2011 conf
HAID
Yugo Hayashi, Eric W. Cooper, Victor V. Kryssanov, Hitoshi Ogawa
2011 B conf
IVA
Yugo Hayashi, Hung-Hsuan Huang, Victor V. Kryssanov, Akira Urao, Kazuhisa Miwa, Hitoshi Ogawa
2010 conf
HAID
Eric W. Cooper, Victor V. Kryssanov, Hitoshi Ogawa
2010 J jnl
CoRR
Victor V. Kryssanov, Shizuka Kumokawa, Igor Goncharenko, Hitoshi Ogawa
2010 J jnl
Int. J. Softw. Sci. Comput. Intell.
Victor V. Kryssanov, Shizuka Kumokawa, Igor Goncharenko, Hitoshi Ogawa
2009 B conf
ACII
Victor V. Kryssanov, Eric W. Cooper, Hitoshi Ogawa, I. Kurose
2008 conf
HAID
Victor V. Kryssanov, Shizuka Kumokawa, Igor Goncharenko, Hitoshi Ogawa
2008 B conf
IVA
Shizuka Kumokawa, Victor V. Kryssanov, Hitoshi Ogawa
2007 conf
ICTAI (2)
Takashi Kokawa, Yoshiya Takeuchi, Ryota Sakamoto, Hitoshi Ogawa, Victor V. Kryssanov
2007 J jnl
CoRR
Victor V. Kryssanov, Evgeny L. Kuleshov, Frank J. Rinaldo, Hitoshi Ogawa
2006 J jnl
CoRR
Victor V. Kryssanov, V. A. Abramov, Yoshiro Fukuda, K. Konishi
2006 J jnl
CoRR
Victor V. Kryssanov, V. A. Abramov, Hironori Hibino, Yoshiro Fukuda
2006 J jnl
CoRR
H. Tamaki, Victor V. Kryssanov, S. Kitamura
2006 conf
ICE-B
Takashi Kokawa, Ryota Sakamoto, Hitoshi Ogawa, Victor V. Kryssanov
2006 J jnl
CoRR
Victor V. Kryssanov, H. Tamaki, K. Ueda
2006 J jnl
CoRR
Victor V. Kryssanov, A. S. Kleshchev, Yoshiro Fukuda, K. Konishi
2006 J jnl
CoRR
Victor V. Kryssanov, Frank J. Rinaldo, Hitoshi Ogawa, Evgeny L. Kuleshov
2006 J jnl
CoRR
Victor V. Kryssanov, Masayuki Okabe, Koh Kakusho, Michihiko Minoh
2006 J jnl
CoRR
Victor V. Kryssanov, H. Tamaki, S. Kitamura
2006 J jnl
CoRR
Victor V. Kryssanov, Koh Kakusho
2006 J jnl
CoRR
Victor V. Kryssanov, Koh Kakusho, Evgeny L. Kuleshov, Michihiko Minoh
2006 J jnl
CoRR
Victor V. Kryssanov, Frank J. Rinaldo, Evgeny L. Kuleshov, Hitoshi Ogawa
2006 conf
ICE-B
Victor V. Kryssanov, Frank J. Rinaldo, Evgeny L. Kuleshov, Hitoshi Ogawa
2006 conf
ICETE (Selected Papers)
Victor V. Kryssanov, Frank J. Rinaldo, Evgeny L. Kuleshov, Hitoshi Ogawa
2006 conf
ICE-B
Kohei Tsuda, Frank J. Rinaldo, Victor V. Kryssanov, Ruck Thawonmas
2006 J jnl
CoRR
Victor V. Kryssanov, V. A. Abramov, Yoshiro Fukuda, K. Konishi
2006 J jnl
CoRR
Victor V. Kryssanov, H. Tamaki, S. Kitamura
2005 J jnl
Inf. Sci.
Victor V. Kryssanov, Koh Kakusho, Evgeny L. Kuleshov, Michihiko Minoh
2004 B conf
KES
Tomasz M. Rutkowski, Koh Kakusho, Victor V. Kryssanov, Michihiko Minoh
2002 conf
Engineering Information Systems in the Internet Context
Victor V. Kryssanov, Masayuki Okabe, Koh Kakusho, Michihiko Minoh
2002 conf
DIISM
Victor V. Kryssanov, Masayuki Okabe, Koh Kakusho, Michihiko Minoh
2001 conf
Australian Joint Conference on Artificial Intelligence
Victor V. Kryssanov, Masayuki Okabe, Koh Kakusho, Michihiko Minoh
2001 conf
Digital Cities
Victor V. Kryssanov, Masayuki Okabe, Koh Kakusho, Michihiko Minoh
2001 J jnl
Artif. Intell. Eng.
Victor V. Kryssanov, H. Tamaki, S. Kitamura
2000 conf
DIISM
Victor V. Kryssanov, Jan Goossenaerts
1999 conf
APMS
H. Tamaki, Victor V. Kryssanov, S. Kitamura
1998 conf
PROLAMAT
Victor V. Kryssanov, V. A. Abramov, Yoshiro Fukuda, K. Konishi
redb/extractors/macho_extractors/macho_similarity_hashes.py
← Index redb/extractors/macho_extractors/macho_similarity_hashes.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.macho_extractor import MachOExtractor


class MachOSimilarityHashExtractor(MachOExtractor):
    """Extract Mach-O similarity hashes using machofile API.

    Similarity hashes are MD5 fingerprints of sorted, deduplicated binary components:
    - dylib_hash: MD5 of dynamic library names
    - import_hash: MD5 of imported function names
    - export_hash: MD5 of exported symbol names
    - entitlement_hash: MD5 of entitlement names and array values
    - symhash: MD5 of external undefined symbols

    For FAT binaries:
    - Inserts one row per architecture slice with per-slice hashes
    - Inserts one row for the FAT container with combined hashes

    For single-arch binaries:
    - Inserts one row with that architecture's hashes

    Note: parent_sha256 and architecture relationships are tracked in redb_basic_properties,
    not duplicated here. Use JOIN with redb_basic_properties when needed.
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        macho=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            macho,
        )
        self.elastic_index = self.index_prefix + "-macho_hashes"
        self.log.debug(inspect.currentframe().f_code.co_name)

    def tag(self):
        return Tag.MACHO_HASHES.value

    def _extract_similarity_hashes(self, arch_name=None):
        """Extract similarity hashes for a specific architecture."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            similarity_hashes = self.macho.get_similarity_hashes(arch=arch_name)
            return similarity_hashes if similarity_hashes else None
        except Exception as e:
            self.log.error(f"Error extracting similarity hashes for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            if not self.macho:
                return None

            architectures = self.macho.get_architectures()
            if not architectures:
                return None

            if len(architectures) > 1:
                # FAT binary - return combined hashes + per-arch hashes
                results = []

                # First add combined hashes for the FAT container
                all_hashes = self.macho.get_similarity_hashes()
                combined_hashes = all_hashes.get('combined', {}) if all_hashes else {}
                if combined_hashes:
                    combined_hashes['arch_identifier'] = 'fat'
                    results.append(combined_hashes)

                # Then add per-arch hashes
                for arch_name in architectures:
                    hashes = self._extract_similarity_hashes(arch_name)
                    if hashes:
                        hashes['arch_identifier'] = arch_name
                        results.append(hashes)
                return results
            else:
                # Single architecture - return single result
                return self._extract_similarity_hashes(architectures[0])
        except Exception as e:
            self.log.error(f"Error extracting similarity hashes: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            if not self.macho:
                return None

            try:
                architectures = self.macho.get_architectures()
                is_fat = len(architectures) > 1
            except Exception as e:
                self.log.error(f"Could not get architectures: {e}")
                return None

            data = []
            current_time = datetime.now(timezone.utc)

            # For FAT binaries, first insert a row for the container with combined hashes
            if is_fat:
                all_hashes = self.macho.get_similarity_hashes()  # Without arch returns all including 'combined'
                combined_hashes = all_hashes.get('combined', {}) if all_hashes else {}
                if combined_hashes:
                    data.append([
                        self.sha256,                                    # sha256 (FAT container)
                        combined_hashes.get('dylib_hash'),              # dylib_hash
                        combined_hashes.get('import_hash'),             # import_hash
                        combined_hashes.get('export_hash'),             # export_hash
                        combined_hashes.get('entitlement_hash'),        # entitlement_hash
                        combined_hashes.get('symhash'),                 # symhash
                        current_time,                                   # analysis_date
                    ])

            # Insert rows for each architecture slice
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific sha256 for {arch_name}: {e}")
                    arch_sha256 = self.sha256

                # Get similarity hashes for this architecture
                similarity_hashes = self._extract_similarity_hashes(arch_name)
                if not similarity_hashes:
                    continue

                data.append([
                    arch_sha256,                                    # sha256 (arch-specific)
                    similarity_hashes.get('dylib_hash'),            # dylib_hash
                    similarity_hashes.get('import_hash'),           # import_hash
                    similarity_hashes.get('export_hash'),           # export_hash
                    similarity_hashes.get('entitlement_hash'),      # entitlement_hash
                    similarity_hashes.get('symhash'),               # symhash
                    current_time,                                   # analysis_date
                ])

            if not data:
                return None

            column_names = [
                'sha256',
                'macho_dylib_hash', 'macho_import_hash', 'macho_export_hash',
                'macho_entitlement_hash', 'macho_symhash',
                'analysis_date'
            ]

            column_type_names = [
                'FixedString(64)',
                'Nullable(FixedString(32))', 'Nullable(FixedString(32))', 'Nullable(FixedString(32))',
                'Nullable(FixedString(32))', 'Nullable(FixedString(32))',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

    def get_clickhouse_table(self) -> str:
        return "redb_hashes"