Malcolm Slaney

104 papers A* 9A 6B 3C 1Misc 20Journal 28Unranked 35
YearRankTypeTitle / Venue / Authors
2024 J jnl
CoRR
Richard F. Lyon, Rob Schonberger, Malcolm Slaney, Mihajlo Velimirovic, Honglin Yu
2023 Misc conf
ICASSP
Ahmed Omran, Neil Zeghidour, Zalán Borsos, Félix de Chaumont Quitry, Malcolm Slaney, Marco Tagliasacchi
2023 J jnl
Neural Comput. Appl.
Daniel T. Speckhard, Karolis Misiunas, Sagi Perel, Tenghui Zhu, Simon Carlile, Malcolm Slaney
2022 J jnl
CoRR
Ahmed Omran, Neil Zeghidour, Zalán Borsos, Félix de Chaumont Quitry, Malcolm Slaney, Marco Tagliasacchi
2022 Misc conf
ICASSP
Cong Han, Emine Merve Kaya, Kyle Hoefer, Malcolm Slaney, Simon Carlile
2022 J jnl
CoRR
Cong Han, Emine Merve Kaya, Kyle Hoefer, Malcolm Slaney, Simon Carlile
2022 J jnl
CoRR
Daniel T. Speckhard, Karolis Misiunas, Sagi Perel, Tenghui Zhu, Simon Carlile, Malcolm Slaney
2021 A* conf
UIST
Artem Dementyev, Pascal Getreuer, Dimitri Kanevsky, Malcolm Slaney, Richard F. Lyon
2020 conf
EMBC
Jaswanth Reddy Katthi, Sriram Ganapathy, Sandeep Kothinti, Malcolm Slaney
2018 J jnl
NeuroImage
Alain de Cheveigné, Daniel D. E. Wong, Giovanni M. Di Liberto, Jens Hjortkjær, Malcolm Slaney, Edmund C. Lalor
2018 conf
EMBC
Markham H. Anderson, Britt W. Yazel, Matthew P. F. Stickle, Fernando D. Espinosa, Nathaniel-Georg S. Gutierrez, Malcolm Slaney, Sanjay S. Joshi, Lee M. Miller
2018 Misc conf
ICASSP
Ken Hoover, Sourish Chaudhuri, Caroline Pantofaru, Ian Sturdy, Malcolm Slaney
2017 Misc conf
ICASSP
Shawn Hershey, Sourish Chaudhuri, Daniel P. W. Ellis, Jort F. Gemmeke, Aren Jansen, R. Channing Moore, Manoj Plakal, Devin Platt, Rif A. Saurous, Bryan Seybold, Malcolm Slaney, Ron J. Weiss, Kevin W. Wilson
2017 J jnl
CoRR
Ken Hoover, Sourish Chaudhuri, Caroline Pantofaru, Malcolm Slaney, Ian Sturdy
2016 J jnl
CoRR
Shawn Hershey, Sourish Chaudhuri, Daniel P. W. Ellis, Jort F. Gemmeke, Aren Jansen, R. Channing Moore, Manoj Plakal, Devin Platt, Rif A. Saurous, Bryan Seybold, Malcolm Slaney, Ron J. Weiss, Kevin W. Wilson
2015 J jnl
IEEE Trans. Multim.
T. J. Tsai, Andreas Stolcke, Malcolm Slaney
2015 Misc conf
ICASSP
T. J. Tsai, Andreas Stolcke, Malcolm Slaney
2015 Misc conf
ICASSP
Anna Prokofieva, Malcolm Slaney, Dilek Hakkani-Tür
2014 conf
SLT
Sree Harsha Yella, Andreas Stolcke, Malcolm Slaney
2014 B conf
ICMI
Dilek Hakkani-Tür, Malcolm Slaney, Asli Celikyilmaz, Larry P. Heck
2014 conf
SLT
Anna Prokofieva, Dilek Hakkani-Tür, Malcolm Slaney
2014 Misc conf
ICASSP
Malcolm Slaney, Rahul Rajan, Andreas Stolcke, Partha Parthasarathy
2014 B conf
ICMI
Malcolm Slaney, Andreas Stolcke, Dilek Hakkani-Tür
2014 A conf
INTERSPEECH
Malcolm Slaney, Michael L. Seltzer
2014 A conf
INTERSPEECH
Yan Huang, Malcolm Slaney, Michael L. Seltzer, Yifan Gong
2013 A conf
INTERSPEECH
Jieun Oh, Eunjoon Cho, Malcolm Slaney
2013 Misc conf
ITA
Ivan Tashev, Malcolm Slaney
2013 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Klara Nahrstedt, Rainer Lienhart, Malcolm Slaney
2013 J jnl
IEEE Multim.
Ramesh C. Jain, Malcolm Slaney
2013 A conf
INTERSPEECH
Malcolm Slaney, Elizabeth Shriberg, Jui-Ting Huang
2013 conf
ISMIR
Blair Kaneshiro, Hyung-Suk Kim, Jorge Herrera, Jieun Oh, Jonathan Berger, Malcolm Slaney
2012 Misc conf
ICASSP
Malcolm Slaney, Trevor Agus, Shih-Chii Liu, Emine Merve Kaya, Mounya Elhilali
2012 J jnl
CoRR
Benjamin M. Marlin, Richard S. Zemel, Sam T. Roweis, Malcolm Slaney
2012 A* conf
ACM Multimedia
Klara Nahrstedt, Malcolm Slaney
2012 J jnl
IEEE Multim.
David A. Shamma, Malcolm Slaney
2012 conf
ISMIR
Juhan Nam, Jorge Herrera, Malcolm Slaney, Julius O. Smith III
2012 J jnl
Proc. IEEE
Malcolm Slaney, Yury Lifshits, Junfeng He
2012 J jnl
IEEE Multim.
Aisling Kelliher, Malcolm Slaney
2012 J jnl
Proc. IEEE
Edward Y. Chang, Shih-Fu Chang, Alexander G. Hauptmann, Thomas S. Huang, Malcolm Slaney
2011 conf
ISMIR
Juhan Nam, Jiquan Ngiam, Honglak Lee, Malcolm Slaney
2011 J jnl
IEEE Multim.
Cees G. M. Snoek, Malcolm Slaney
2011 J jnl
IEEE Signal Process. Mag.
Malcolm Slaney, Patrick A. Naylor
2011 A* conf
ACM Multimedia
Lyndon Kennedy, Malcolm Slaney
2011 J jnl
IEEE Multim.
Malcolm Slaney
2011 A* conf
IJCAI
Benjamin M. Marlin, Richard S. Zemel, Sam T. Roweis, Malcolm Slaney
2011 conf
CHI Extended Abstracts
Vidhya Navalpakkam, Justin Rao, Malcolm Slaney
2011 J jnl
IEEE Multim.
Malcolm Slaney
2010 A* conf
ACM Multimedia
Dhruv Kumar Mahajan, Malcolm Slaney
2010 conf
Multimedia Information Retrieval
Malcolm Slaney
2010 A* conf
ACM Multimedia
Malcolm Slaney, Edward Y. Chang
2010 J jnl
EURASIP J. Audio Speech Music. Process.
Bhiksha Raj, Paris Smaragdis, Malcolm Slaney, Chung-Hsien Wu, Liming Chen, Hyoung-Gook Kim
2010 J jnl
IEEE Trans. Speech Audio Process.
Gregory Sell, Malcolm Slaney
2010 Misc conf
ICASSP
Gregory Sell, Malcolm Slaney
2009 C conf
ISCAS
Theodore Yu, Andrew Schwartz, John G. Harris, Malcolm Slaney, Shih-Chii Liu
2009 Misc conf
ICASSP
Misha Pavel, Malcolm Slaney, Hynek Hermansky
2009 conf
LS-MMRM@ACM Multimedia
Eva Hörster, Malcolm Slaney, Marc'Aurelio Ranzato, Kilian Q. Weinberger
2008 J jnl
IEEE Trans. Speech Audio Process.
Kyogu Lee, Malcolm Slaney
2008 J jnl
IEEE Trans. Speech Audio Process.
Michael A. Casey, Christophe Rhodes, Malcolm Slaney
2008 conf
DAGM-Symposium
Eva Hörster, Thomas Greif, Rainer Lienhart, Malcolm Slaney
2008 J jnl
Proc. IEEE
Michael A. Casey, Remco C. Veltkamp, Masataka Goto, Marc Leman, Christophe Rhodes, Malcolm Slaney
2008 conf
CIVR
Eva Hörster, Rainer Lienhart, Malcolm Slaney
2008 conf
ISMIR
Malcolm Slaney, Kilian Q. Weinberger, William White
2008 J jnl
IEEE Signal Process. Mag.
Malcolm Slaney, Michael A. Casey
2008 A* conf
ACM Multimedia
Kilian Q. Weinberger, Malcolm Slaney, Roelof van Zwol
2007 conf
ISMIR
Kyogu Lee, Malcolm Slaney
2007 A conf
UAI
Benjamin M. Marlin, Richard S. Zemel, Sam T. Roweis, Malcolm Slaney
2007 conf
ICASSP (4)
Michael A. Casey, Malcolm Slaney
2007 conf
CIVR
Eva Hörster, Rainer Lienhart, Malcolm Slaney
2007 conf
ICASSP (4)
Rainer Lienhart, Malcolm Slaney
2007 conf
ISMIR
Malcolm Slaney, William White
2007 conf
ICASSP (4)
David V. Anderson, Sourabh Ravindran, Malcolm Slaney
2006 conf
SAPA@INTERSPEECH
Hiroko Terasawa, Malcolm Slaney, Jonathan Berger
2006 conf
ISMIR
Kyogu Lee, Malcolm Slaney
2006 conf
HICSS
Daniel M. Russell, Malcolm Slaney, Yan Qu, Mave Houston
2006 J jnl
IEEE Trans. Speech Audio Process.
Nima Mesgarani, Malcolm Slaney, Shihab A. Shamma
2006 conf
SAPA@INTERSPEECH
Sourabh Ravindran, David V. Anderson, Malcolm Slaney
2006 conf
ISMIR
Michael A. Casey, Malcolm Slaney
2006 conf
ICASSP (5)
Michael A. Casey, Malcolm Slaney
2005 A conf
INTERSPEECH
Hiroko Terasawa, Malcolm Slaney, Jonathan Berger
2005 B conf
INTERACT
Grace Crowder, Sterling Foster, Daniel M. Russell, Malcolm Slaney, Lisa Yanguas
2005 conf
HICSS
Malcolm Slaney, Daniel M. Russell
2005 ch.
Speech Separation by Humans and Machines
Malcolm Slaney
2004 conf
ICASSP (4)
Sourabh Ravindran, David V. Anderson, Malcolm Slaney
2004 conf
ICASSP (1)
Nima Mesgarani, Shihab A. Shamma, Malcolm Slaney
2003 J jnl
Speech Commun.
Malcolm Slaney, Gerald McRoberts
2003 conf
User Modeling
Malcolm Slaney, Jayashree Subrahmonia, Paul P. Maglio
2002 conf
ICME (1)
Malcolm Slaney
2002 Misc conf
ICASSP
Malcolm Slaney
2001 Misc conf
ICASSP
Michele Covell, Malcolm Slaney, Art Rothstein
2001 Misc conf
ICASSP
Malcolm Slaney, Dulce B. Ponceleon
2001 A* conf
ACM Multimedia
Malcolm Slaney, Dulce B. Ponceleon, James H. Kaufman
2001 book
Principles of computerized tomographic imaging.
Avinash C. Kak, Malcolm Slaney
2001 conf
IEEE Workshop on Detection and Recognition of Events in Video
Malcolm Slaney, Dulce B. Ponceleon, James H. Kaufman
2000 conf
NIPS
Malcolm Slaney, Michele Covell
1998 Misc conf
ICASSP
Malcolm Slaney, Gerald McRoberts
1998 Misc conf
ICASSP
Michele Covell, Margaret Withgott, Malcolm Slaney
1997 Misc conf
ICASSP
Eric D. Scheirer, Malcolm Slaney
1997 A* conf
SIGGRAPH
Christoph Bregler, Michele Covell, Malcolm Slaney
1997 conf
AVSP
Christoph Bregler, Michele Covell, Malcolm Slaney
1996 Misc conf
ICASSP
Malcolm Slaney, Michele Covell, Bud Lassiter
1994 conf
ICASSP (2)
Malcolm Slaney, Daniel Naar, Richard F. Lyon
1994 conf
NIPS
Malcolm Slaney
1990 Misc conf
ICASSP
Malcolm Slaney, Richard F. Lyon
1990 Misc conf
ICASSP
Yeshwant K. Muthusamy, Ronald A. Cole, Malcolm Slaney
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"