Ilya Pollak

69 papers B 4Misc 5Journal 22Unranked 29
YearRankTypeTitle / Venue / Authors
2016 J jnl
IEEE J. Sel. Top. Signal Process.
Deepan Palguna, Ilya Pollak
2016 J jnl
IEEE Trans. Wirel. Commun.
Deepan S. Palguna, David James Love, Ilya Pollak
2014 J jnl
CoRR
Zhang Li, Xiaojun Lin, Borja Peleato-Inarrea, Ilya Pollak
2014 J jnl
CoRR
Deepan Palguna, David James Love, Ilya Pollak
2013 conf
GlobalSIP
Zhang Li, Xiaojun Lin, Ilya Pollak
2013 conf
Computational Imaging
Landis M. Huffman, Jeff P. Simmons, Marc De Graef, Ilya Pollak
2013 ed.
Computational Imaging
Charles A. Bouman, Ilya Pollak, Patrick J. Wolfe
2013 conf
Computational Imaging
Landis M. Huffman, Ilya Pollak
2013 J jnl
IEEE Trans. Image Process.
Tak-Shing Wong, Charles A. Bouman, Ilya Pollak
2013 conf
GlobalSIP
Deepan Palguna, Ilya Pollak
2013 B conf
ITW
Deepan Palguna, Ilya Pollak
2013 conf
Allerton
Deepan Palguna, David J. Love, Ilya Pollak
2013 Misc conf
ICASSP
Zhang Li, Ilya Pollak
2012 ed.
Computational Imaging
Charles A. Bouman, Ilya Pollak, Patrick J. Wolfe
2012 conf
SAM
Ilya Pollak
2012 J jnl
IEEE J. Sel. Top. Signal Process.
Mayur Agrawal, Debabrata Mohapatra, Ilya Pollak
2012 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Kai-Lung Hua, Rong Zhang, Mary L. Comer, Ilya Pollak
2012 conf
SSP
Deepan Palguna, Ilya Pollak
2012 J jnl
CoRR
Zhang Li, Ilya Pollak
2011 Misc conf
ICASSP
Ka Ki Ng, Priyanka Agarwal, Nathan Mullen, Dzung Du, Ilya Pollak
2011 ed.
Computational Imaging
Charles A. Bouman, Ilya Pollak, Patrick J. Wolfe
2011 conf
ACSCC
Kai-Lung Hua, Rong Zhang, Mary L. Comer, Ilya Pollak
2011 Misc conf
ICASSP
Mayur Agrawal, Debabrata Mohapatra, Ilya Pollak
2011 J jnl
IEEE Signal Process. Mag.
Ilya Pollak, Marco Avellaneda, Emmanuel Bacry, Rama Cont, Sanjeev R. Kulkarni
2011 J jnl
IEEE Signal Process. Mag.
Ilya Pollak
2011 J jnl
IEEE Signal Process. Mag.
Ilya Pollak
2011 conf
CAMSAP
Ilya Pollak
2010 ed.
Computational Imaging
Charles A. Bouman, Ilya Pollak, Patrick J. Wolfe
2009 J jnl
IEEE Trans. Image Process.
Tak-Shing Wong, Charles A. Bouman, Ilya Pollak, Zhigang Fan
2009 conf
Computational Imaging
Jianing Wei, Thomas M. Talavage, Ilya Pollak
2009 ed.
Computational Imaging
Charles A. Bouman, Eric L. Miller, Ilya Pollak
2008 B conf
ICIP
Hsiao-Chiang Chuang, Landis M. Huffman, Mary L. Comer, Jeff P. Simmons, Ilya Pollak
2008 ed.
Computational Imaging
Charles A. Bouman, Eric L. Miller, Ilya Pollak
2008 J jnl
J. Electronic Imaging
Xiaogang Dong, Kai-Lung Hua, Peter Majewicz, Gordon McNutt, Charles A. Bouman, Jan P. Allebach, Ilya Pollak
2008 conf
Computational Imaging
Landis M. Huffman, Jeff P. Simmons, Ilya Pollak
2007 conf
ICIP (3)
Xiaogang Dong, Peter Majewicz, Gordon McNutt, Charles A. Bouman, Jan P. Allebach, Ilya Pollak
2007 conf
ICIP (5)
Jianing Wei, Ilya Pollak
2007 conf
ICASSP (3)
Wiley Wang, Vlad Portnoy, Ilya Pollak
2007 conf
Computational Imaging
Wiley Wang, Ilya Pollak
2007 ed.
Computational Imaging
Charles A. Bouman, Eric L. Miller, Ilya Pollak
2007 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Jeffrey Mark Siskind, James Sherman Jr., Ilya Pollak, Mary P. Harper, Charles A. Bouman
2006 Misc conf
CSR
Xiaogang Dong, Ilya Pollak
2006 J jnl
IEEE Trans. Signal Process.
Yan Huang, Ilya Pollak, Charles A. Bouman, Minh N. Do
2006 B conf
ICIP
Xiaogang Dong, Ilya Pollak
2006 ed.
Computational Imaging
Charles A. Bouman, Eric L. Miller, Ilya Pollak
2006 J jnl
IEEE Trans. Image Process.
Yan Huang, Ilya Pollak, Minh N. Do, Charles A. Bouman
2006 J jnl
IEEE Trans. Image Process.
Wiley Wang, Ilya Pollak, Tak-Shing Wong, Charles A. Bouman, Mary P. Harper, Jeffrey Mark Siskind
2006 conf
Computational Imaging
Wiley Wang, Tak-Shing Wong, Ilya Pollak, Charles A. Bouman, Mary P. Harper
2006 J jnl
IEEE Trans. Image Process.
Xiaogang Dong, Ilya Pollak
2006 B conf
ICIP
Kai-Lung Hua, Ilya Pollak, Mary L. Comer
2005 conf
ICASSP (2)
Yan Huang, Ilya Pollak, Charles A. Bouman
2005 J jnl
IEEE Signal Process. Lett.
Yan Huang, Ilya Pollak
2005 conf
ICIP (3)
Xiaogang Dong, Ilya Pollak
2005 J jnl
IEEE Trans. Signal Process.
Ilya Pollak, Alan S. Willsky, Yan Huang
2005 conf
ICIP (1)
Yan Huang, Ilya Pollak, Minh N. Do, Charles A. Bouman
2004 conf
ICASSP (2)
Yan Huang, Ilya Pollak, Charles A. Bouman, Minh N. Do
2004 conf
Computational Imaging
Yan Huang, Ilya Pollak, Charles A. Bouman, Minh N. Do
2003 conf
ICASSP (3)
Ilya Pollak, Jeffrey Mark Siskind, Mary P. Harper, Charles A. Bouman
2003 conf
ICIP (1)
Ilya Pollak, Jeffrey Mark Siskind, Mary P. Harper, Charles A. Bouman
2003 conf
VLBV
Cüneyt M. Taskiran, Ilya Pollak, Charles A. Bouman, Edward J. Delp
2002 J jnl
IEEE Signal Process. Mag.
Ilya Pollak
2001 conf
ICIP (2)
Ilya Pollak
2000 J jnl
IEEE Trans. Image Process.
Ilya Pollak, Alan S. Willsky, Hamid Krim
1999 Misc conf
ICASSP
Ilya Pollak, Alan S. Willsky, Hamid Krim
1999
Ilya Pollak
1998 conf
EUSIPCO
B. Pouye, Amel Benazza-Benyahia, Ilya Pollak, Jean-Christophe Pesquet, Hamid Krim
1998 conf
ICIP (3)
Jianbo Gao, Jun Zhang, Matthew G. Fleming, Ilya Pollak, Armand B. Cognetta Jr.
1998 conf
ICIP (3)
Ilya Pollak, Hamid Krim, Alan S. Willsky
1997 conf
Scale-Space
Ilya Pollak, Alan S. Willsky, Hamid Krim
redb/extractors/macho_extractors/macho_exports.py
← Index redb/extractors/macho_extractors/macho_exports.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
from redb.models.dataclasses import MachOExport


class MachOExportExtractor(MachOExtractor):

    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_exports"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_exports(self, arch_name=None):
        """Extract export information from the MachO binary for a specific architecture."""
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.macho:
            return None

        try:
            # Get exported symbols using new API for specific architecture
            exported_symbols = self.macho.get_exported_symbols(arch=arch_name)

            # Extract all exported symbols (may be empty for some binaries)
            # Handle None or empty dict
            if not exported_symbols:
                exported_symbols = {}
            all_symbols = []
            for dylib_name, symbols in exported_symbols.items():
                # Process symbol names
                for symbol in symbols:
                    if isinstance(symbol, bytes):
                        symbol = symbol.decode('utf-8', errors='replace')
                    all_symbols.append(symbol)

            # Create export dataclass
            macho_export = MachOExport(
                macho_exports_total=len(all_symbols),
                macho_export_symbols=all_symbols  # Empty list is fine, but None is not allowed for Array type
            )

            return macho_export

        except Exception as e:
            self.log.error(f"Error extracting MachO exports for arch {arch_name}: {e}")
            return None

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Get architectures (macho is already parsed in base class)
            architectures = self.macho.get_architectures()
            if len(architectures) > 1:
                # FAT binary - return list of exports for each architecture
                results = []
                for arch_name in architectures:
                    exports = self._extract_exports(arch_name)
                    if exports:
                        exports.arch_identifier = arch_name
                        results.append(exports)
                return results
            else:
                # Single architecture - return single result
                return self._extract_exports(architectures[0] if architectures else None)
        except Exception as e:
            self.log.error(f"Error extracting MachO exports: {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

            # Get architectures (macho is already parsed in base class)
            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)

            # Loop through each architecture (1 for single, multiple for FAT)
            for arch_name in architectures:
                # Get architecture-specific sha256
                try:
                    arch_general_info = self.macho.get_general_info(arch=arch_name)
                    arch_header_raw = self.macho.get_macho_header(arch=arch_name)
                    arch_sha256 = arch_general_info.get('SHA256', self.sha256)
                    arch_cputype_raw = arch_header_raw.get('cputype', 0) if arch_header_raw else 0
                except Exception as e:
                    self.log.warning(f"Could not get arch-specific data for {arch_name}: {e}")
                    arch_sha256 = self.sha256
                    arch_cputype_raw = 0

                # Get exports for this architecture
                macho_export = self._extract_exports(arch_name)
                if not macho_export:
                    continue

                data.append([
                    arch_sha256,                          # sha256 (arch-specific)
                    macho_export.macho_exports_total,     # macho_exports_total
                    macho_export.macho_export_symbols,    # macho_export_symbols (keep as array!)
                    current_time,                         # analysis_date
                ])

            column_names = [
                'sha256',
                'macho_exports_total', 'macho_export_symbols',
                'analysis_date'
            ]

            if not data:
                return None

            column_type_names = [
                'FixedString(64)',
                'UInt32', 'Array(Nullable(String))',
                'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

        return None

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