I-Hsien Ting

106 papers B 15C 3Journal 34Unranked 37
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Mei-Yun Hsu, I-Hsien Ting, Yun-Hsiu Liu, Kazunori Minetaki
2026 J jnl
CoRR
I-Hsien Ting, Yi-Jun Tseng, Yu-Sheng Lin
2026 J jnl
CoRR
Yun-Hao Zhang, I-Hsien Ting, Dario Liberona, Yun-Hsiu Liu, Kazunori Minetaki
2026 J jnl
CoRR
I-Hsien Ting, Yen-Chih Chiu, Yun-Hsiu Liu, Kazunori Minetaki, Chia-Sung Yen
2025 ed.
ASONAM (Workshops)
I-Hsien Ting, Reda Alhajj, Panagiotis Karampelas, Min-Yuh Day
2025 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2024 conf
MISNC
Yi-Yun Chao, I-Hsien Ting, Kazunori Minetaki, Mei-Yun Hsu
2024 conf
MISNC
Wan-Ju Chen, I-Hsien Ting, Yun Hao Zhang, Kazunori Minetaki, Mei-Yun Hsu
2024 conf
ASONAM (Workshops)
I-Hsien Ting, Mei-Yun Hsu, Chia-Sung Yen, Chian-Hsueng Chao
2024 J jnl
Rev. Socionetwork Strateg.
Kazunori Minetaki, I-Hsien Ting
2024 conf
ASONAM (Workshops)
Chia-Sung Yen, I-Hsien Ting
2024 conf
MISNC
Yi-Xuan Liu, I-Hsien Ting, Dario Liberona, Mei-Yun Hsu
2024 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2024 J jnl
Int. J. Web Grid Serv.
I-Hsien Ting, Ying-Ling Tang, Kazunori Minetaki
2023 B conf
ASONAM
I-Hsien Ting, Kazunori Minetaki, Mei-Yun Hsu, Chia-Sung Yen
2023 conf
KMO
Mei-Yun Hsu, I-Hsien Ting
2023 conf
MISNC
Chia-Sung Yen, I-Hsien Ting, Shu-Chen Yang, Chia-Yin Kang
2023 ed.
KMO
Lorna Uden, I-Hsien Ting
2023 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2023 conf
ICEA
I-Hsien Ting, Yi-Jun Tseng, Yu-Sheng Lin
2022 conf
MISNC
I-Hsien Ting, Chia-Chun Kang, Shu-Chen Yang, Chia-Sung Yen
2022 B conf
ASONAM
I-Hsien Ting, Chia-Sung Yen, Chia-Chun Kang, Shu-Chen Yang
2022 conf
LTEC
Katherine Andrea Cuartas Castro, I-Hsien Ting, Giovanny Mauricio Tarazona Bermúdez
2022 J jnl
Decis. Support Syst.
Charles Perez, I-Hsien Ting
2022 J jnl
Rev. Socionetwork Strateg.
Chia-Sung Yen, I-Hsien Ting, Shu-Chen Yang, Chia-Yin Kang
2022 ed.
KMO
Lorna Uden, I-Hsien Ting, Birgit Feldmann
2022 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2022 conf
MISNC
Chian-Hsueng Chao, I-Hsien Ting, Yi-Jun Tseng, Bing-Wen Wang, Shin-Hua Wang, Yu-Qing Wang
2022 conf
MISNC
Chian-Hsueng Chao, I-Hsien Ting, Yi-Jun Tseng, Bing-Wen Wang, Shin-Hua Wang, Yu-Qing Wang, Ming-Chun Chen
2021 ed.
KMO
Lorna Uden, I-Hsien Ting, Kai Wang
2021 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2021 conf
MISNC
I-Hsien Ting, Chia-Sung Yen, Shu-Chen Yang
2021 B conf
ASONAM
I-Hsien Ting, Chia-Sung Yen
2020 J jnl
World Wide Web
Yu-Chuan Tsai, Shyue-Liang Wang, I-Hsien Ting, Tzung-Pei Hong
2020 B conf
ASONAM
I-Hsien Ting, Su-Chen Yang, Chia-Sung Yen, Tsung-Hsing Tsai
2019 J jnl
Expert Syst. Appl.
Moloud Abdar, Mariam Zomorodi Moghadam, Resul Das, I-Hsien Ting
2019 conf
IC4E
Andi Mursidi, Eka Murdani, Soeharto, Sumarli, I-Hsien Ting, James C. Wu
2019 ed.
KMO
Lorna Uden, I-Hsien Ting, Juan Manuel Corchado
2019 ed.
MISNC
Jerry Chun-Wei Lin, I-Hsien Ting, Tiffany Tang, Kai Wang
2019 conf
TAAI
Chian-Hsueng Chao, I-Hsien Ting, Tsung-Hsing Tsai, Ming-Chun Chen
2019 J jnl
Rev. Socionetwork Strateg.
I-Hsien Ting
2019 J jnl
Int. J. Knowl. Manag.
Didi Sundiman, Chien-Hsing Wu, Andi Mursidi, I-Hsien Ting
2019 conf
LTEC
Andi Mursidi, Yudi Darma, Rustam, Suherdiyanto, T. Yani Achmad, I-Hsien Ting
2018 conf
MISNC
Jia-Rong Wu, I-Hsien Ting, Chih-Wei Hsu
2018 conf
LTEC@KMO
Katherine Andrea Cuartas Castro, Íngrid Paola Hernández Sibo, I-Hsien Ting
2018 conf
BESC
Joamir Espiritusanto Delarosa, ChienHsing Wu, Katherine Andrea Cuartas Castro, I-Hsien Ting
2018 conf
BESC
Yu-Chuan Tsai, Shyue-Liang Wang, I-Hsien Ting, Tzung-Pei Hong
2018 ed.
KMO
Lorna Uden, Branislav Hadzima, I-Hsien Ting
2017 conf
MISNC
Jen-Hao Chen, Ting-Lin Lee, I-Hsien Ting
2017 J jnl
Intell. Data Anal.
Shyue-Liang Wang, Min-Jye Hsiu, Yu-Chuan Tsai, I-Hsien Ting, Tzung-Pei Hong
2017 ed.
KMO
Lorna Uden, Wei Lu, I-Hsien Ting
2017 J jnl
Expert Syst. Appl.
Moloud Abdar, Mariam Zomorodi Moghadam, Resul Das, I-Hsien Ting
2017 conf
MISNC
I-Hsien Ting, Bo-Yu Chen, Hsiu-Feng Liu
2017 conf
MISNC
I-Hsien Ting, Hao-Ting Kao
2017 conf
BESC
I-Hsien Ting, Wun Sheng Liou, Dario Liberona, Shyue-Liang Wang, Giovanny Mauricio Tarazona Bermúdez
2016 conf
MISNC
I-Hsien Ting, Zhenjiang Zhang, Shyue-Liang Leon Wang
2016 J jnl
J. Univers. Comput. Sci.
I-Hsien Ting, Babiga Birregah
2016 J jnl
J. Univers. Comput. Sci.
I-Hsien Ting
2016 J jnl
J. Intell. Inf. Syst.
I-Hsien Ting
2016 J jnl
J. Web Eng.
Shyue-Liang Wang, Jia-Wei Chen, I-Hsien Ting, Tzung-Pei Hong
2016 conf
KMO
I-Hsien Ting, Pei-Lun Yu
2016 conf
MISNC
Yu-Chuan Tsai, Shyue-Liang Wang, Cheng-Yu Song, I-Hsien Ting
2016 ed.
KMO
Lorna Uden, I-Hsien Ting, Manuel Santos-Trigo
2015 conf
LTEC@KMO
I-Hsien Ting, Wei-Jie Wu, Hao-Ting Kao, David Wang
2015 J jnl
Online Inf. Rev.
I-Hsien Ting
2015 ed.
KMO
Lorna Uden, Marjan Hericko, I-Hsien Ting
2015 ed.
MISNC
Leon S. L. Wang, Shiro Uesugi, I-Hsien Ting, Koji Okuhara, Kai Wang
2015 conf
ASE BD&SI
Shyue-Liang Wang, Min-Jye Hsiu, I-Hsien Ting, Tzung-Pei Hong
2014 J jnl
J. Intell. Fuzzy Syst.
Shyue-Liang Wang, Zheng-Ze Tsai, I-Hsien Ting, Tzung-Pei Hong
2014 J jnl
Comput. Informatics
I-Hsien Ting, Shyue-Liang Wang, Po-Jen Chen
2014 ed.
KMO
Lorna Uden, Darcy Fuenzaliza Oshee, I-Hsien Ting, Dario Liberona
2014 ed.
LTEC
Lorna Uden, Yu-Hui Tao, Hsin-Chang Yang, I-Hsien Ting
2014 ed.
KMO
Lorna Uden, Leon S. L. Wang, Juan Manuel Corchado Rodríguez, Hsin-Chang Yang, I-Hsien Ting
2014 conf
LTEC@KMO
Liang-Cheng Huang, I-Hsien Ting, Seng-Cho Timothy Chou
2014 conf
MISNC
Hao-Ren Yao, I-Hsien Ting
2013 J jnl
Int. J. Data Warehous. Min.
Shyue-Liang Wang, Chung-Yi Chen, I-Hsien Ting, Tzung-Pei Hong
2013 J jnl
Online Inf. Rev.
I-Hsien Ting
2013 B conf
ASONAM
I-Hsien Ting, Shyue-Liang Wang, Hsing-Miao Chi, Jyun-Sing Wu
2013 B conf
SMC
Shyue-Liang Wang, Ching-chuan Shih, I-Hsien Ting, Tzung-Pei Hong
2013 C conf
iiWAS
Shyue-Liang Wang, Jia-Wei Chen, I-Hsien Ting, Tzung-Pei Hong
2013 J jnl
Int. J. Softw. Eng. Knowl. Eng.
Shyue-Liang Wang, Yu-Chuan Tsai, Hung-Yu Kao, I-Hsien Ting, Tzung-Pei Hong
2012 B conf
ASONAM
Hsiao-Hsuan Lu, I-Hsien Ting, Shyue-Liang Wang
2012 C conf
iiWAS
Shyue-Liang Wang, Chung-Yi Chen, I-Hsien Ting, Tzung-Pei Hong
2012 conf
KMO
Bo-Jen Chen, I-Hsien Ting
2012 B conf
SMC
Shyue-Liang Wang, Chung-Yi Chen, I-Hsien Ting, Tzung-Pei Hong
2011 conf
IBICA
Shyue-Liang Wang, Zheng-Ze Tsai, Tzung-Pei Hong, I-Hsien Ting, Yu-Chuan Tsai
2011 conf
ACIIDS (1)
Shyue-Liang Wang, Zheng-Ze Tsai, Tzung-Pei Hong, I-Hsien Ting
2011 B conf
ASONAM
I-Hsien Ting, Chia-Hung Lin, Chen-Shu Wang
2011 B conf
ASONAM
Kai-Yu Wang, Narongsak Thongpapanl, Hui-Ju Wu, I-Hsien Ting
2011 B conf
ASONAM
Chen-Shu Wang, I-Hsien Ting, Yu-Chieh Li
2011 B conf
ASONAM
Pei-Shan Chang, I-Hsien Ting, Shyue-Liang Wang
2010 B conf
ASONAM
Kai-Yu Wang, I-Hsien Ting, Hui-Ju Wu, Pei-Shan Chang
2010 J jnl
J. Softw.
Yung-Ping Fang, I-Hsien Ting
2010 ch.
Mining and Analyzing Social Networks
Hui-Ju Wu, I-Hsien Ting, Huo-Tsan Chang
2010 book
Mining and Analyzing Social Networks
I-Hsien Ting, Hui-Ju Wu, Tien-Hwa Ho
2009 conf
CSE (4)
I-Hsien Ting, Hui-Ju Wu, Pei-Shan Chang
2009 J jnl
J. Web Eng.
I-Hsien Ting, Chris Kimble, Daniel Kudenko
2009 J jnl
Int. J. Web Eng. Technol.
I-Hsien Ting, Lillian Clark, Chris Kimble
2009 B conf
ASONAM
Huo-Tsan Chang, Hui-Ju Wu, I-Hsien Ting
2008 J jnl
Online Inf. Rev.
I-Hsien Ting
2007 conf
KES (2)
I-Hsien Ting, Lillian Clark, Chris Kimble, Daniel Kudenko, Peter C. Wright
2007 B conf
ICALT
I-Hsien Ting, Chris Kimble, Daniel Kudenko
2007
I-Hsien Ting
2006 J jnl
Inf. Res.
Lillian Clark, I-Hsien Ting, Chris Kimble, Peter C. Wright, Daniel Kudenko
2005 C conf
APWeb
I-Hsien Ting, Chris Kimble, Daniel Kudenko
2005 conf
Web Intelligence
I-Hsien Ting, Chris Kimble, Daniel Kudenko
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"