Man-Hung Siu

101 papers A 24B 2C 2Misc 18Journal 23Unranked 31
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Man-Ling Sung, Jan Silovský, Man-Hung Siu, Herbert Gish, Chinnu Pittapally
2024 Misc conf
ICASSP
Zhihong Lei, Ernest Pusateri, Shiyi Han, Leo Liu, Mingbin Xu, Tim Ng, Ruchir Travadi, Youyuan Zhang, Mirko Hannemann, Man-Hung Siu, Zhen Huang
2024 A conf
INTERSPEECH
Iwen E. Kang, Christophe Van Gysel, Man-Hung Siu
2024 J jnl
CoRR
Iwen E. Kang, Christophe Van Gysel, Man-Hung Siu
2023 C conf
ASRU
Zhihong Lei, Mingbin Xu, Shiyi Han, Leo Liu, Zhen Huang, Tim Ng, Yuanyuan Zhang, Ernest Pusateri, Mirko Hannemann, Yaqiao Deng, Man-Hung Siu
2023 J jnl
CoRR
Zhihong Lei, Mingbin Xu, Shiyi Han, Leo Liu, Zhen Huang, Tim Ng, Yuanyuan Zhang, Ernest Pusateri, Mirko Hannemann, Yaqiao Deng, Man-Hung Siu
2023 J jnl
CoRR
Zhihong Lei, Ernest Pusateri, Shiyi Han, Leo Liu, Mingbin Xu, Tim Ng, Ruchir Travadi, Youyuan Zhang, Mirko Hannemann, Man-Hung Siu, Zhen Huang
2020 J jnl
CoRR
Zhuolin Jiang, Jan Silovský, Man-Hung Siu, William Hartmann, Herbert Gish, Sancar Adali
2020 Misc conf
ICASSP
Herbert Gish, Jan Silovský, Man-Ling Sung, Man-Hung Siu, William Hartmann, Zhuolin Jiang
2019 J jnl
CoRR
Herbert Gish, Jan Silovský, Man-Ling Sung, Man-Hung Siu, William Hartmann, Zhuolin Jiang
2018 Misc conf
ICASSP
Francis Keith, William Hartmann, Man-Hung Siu, Jeff Z. Ma, Owen Kimball
2017 A conf
INTERSPEECH
William Hartmann, Roger Hsiao, Tim Ng, Jeff Z. Ma, Francis Keith, Man-Hung Siu
2017 A conf
INTERSPEECH
Jeff Z. Ma, Francis Keith, Tim Ng, Man-Hung Siu, Owen Kimball
2017 Misc conf
ICASSP
Roger Hsiao, Tim Ng, Man-Hung Siu
2016 Misc conf
ICASSP
Kerri Barnes, Matthew Snover, Man-Hung Siu, Herbert Gish
2016 A conf
INTERSPEECH
Roger Hsiao, Ralf Meermeier, Tim Ng, Zhongqiang Huang, Maxwell Jordan, Enoch Kan, Tanel Alumäe, Jan Silovský, William Hartmann, Francis Keith, Omer Lang, Man-Hung Siu, Owen Kimball
2015 Misc conf
ICASSP
Jeff Z. Ma, Jan Silovský, Man-Hung Siu, Owen Kimball
2014 J jnl
Comput. Speech Lang.
Man-Hung Siu, Herbert Gish, Arthur Chan, William Belfield, Steve Lowe
2012 Misc conf
ICASSP
Ivan Bulyko, Owen Kimball, Man-Hung Siu, Jose Herrero, Dan Blum
2012 Misc conf
ICASSP
Man-Hung Siu, Omer Lang, Herbert Gish, Stephen A. Lowe, Arthur Chan, Owen Kimball
2011 C conf
ASRU
Timothy J. Hazen, Man-Hung Siu, Herbert Gish, Steve Lowe, Arthur Chan
2011 A conf
INTERSPEECH
Man-Hung Siu, Herbert Gish, Steve Lowe, Arthur Chan
2010 conf
SLT
Man-Hung Siu, Ted Vessenes, Ivan Bulyko, Owen Kimball
2010 A conf
INTERSPEECH
Man-Hung Siu, Herbert Gish, Arthur Chan, William Belfield
2009 J jnl
J. Bioinform. Comput. Biol.
Henry Chi-Ming Leung, Man-Hung Siu, Siu-Ming Yiu, Francis Yuk-Lun Chin, Ken Wing-Kin Sung
2009 J jnl
IEEE Trans. Speech Audio Process.
Man-Hung Siu, Xi Yang, Herbert Gish
2009 A conf
INTERSPEECH
Herbert Gish, Man-Hung Siu, Arthur Chan, William Belfield
2008 J jnl
Speech Commun.
Jeff Siu-Kei Au-Yeung, Man-Hung Siu
2008 B conf
APBC
Francis Y. L. Chin, Henry C. M. Leung, Man-Hung Siu, Siu-Ming Yiu
2007 A conf
INTERSPEECH
Kakeung Wong, Man-Hung Siu, Brian Mak
2007 A conf
INTERSPEECH
Xi Yang, Man-Hung Siu, Herbert Gish, Brian Mak
2007 conf
ICASSP (4)
Xi Yang, Man-Hung Siu
2007 J jnl
ACM Trans. Speech Lang. Process.
Ivan Bulyko, Mari Ostendorf, Man-Hung Siu, Tim Ng, Andreas Stolcke, Özgür Çetin
2006 J jnl
IEEE Trans. Speech Audio Process.
Man-Hung Siu, Arthur Chan
2006 J jnl
Speech Commun.
Ka-Yee Leung, Man-Wai Mak, Man-Hung Siu, Sun-Yuan Kung
2006 J jnl
Comput. Speech Lang.
Ka-Yee Leung, Man-Hung Siu
2006 conf
ISCSLP (Selected Papers)
Yiu-Pong Lai, Man-Hung Siu
2006 conf
Odyssey
Lu-Feng Zhai, Man-Hung Siu, Xi Yang, Herbert Gish
2006 A conf
INTERSPEECH
Xi Yang, Lu-Feng Zhai, Man-Hung Siu, Herbert Gish
2006 A conf
INTERSPEECH
Xin Lei, Man-Hung Siu, Mei-Yuh Hwang, Mari Ostendorf, Tan Lee
2006 J jnl
IEEE Signal Process. Lett.
Yiu-Pong Lai, Man-Hung Siu, Brian Mak
2006 J jnl
IEEE Signal Process. Lett.
Jeff Siu-Kei Au-Yeung, Man-Hung Siu
2006 J jnl
IEEE Signal Process. Lett.
Man-Hung Siu, Brian Mak, Wing-Hei Au
2006 J jnl
IEEE Trans. Speech Audio Process.
Chak-Fai Li, Man-Hung Siu, Jeff Siu-Kei Au-Yeung
2006 conf
ICASSP (1)
Jeff Siu-Kei Au-Yeung, Man-Hung Siu
2006 conf
ICASSP (1)
Man-Hung Siu, Jeff Siu-Kei Au-Yeung
2005 J jnl
IEEE Signal Process. Lett.
Tim Ng, Man-Hung Siu, Mari Ostendorf
2005 J jnl
Comput. Speech Lang.
Arthur Chan, Man-Hung Siu
2005 A conf
INTERSPEECH
Brian Mak, Jeff Siu-Kei Au-Yeung, Yiu-Pong Lai, Man-Hung Siu
2005 conf
ICASSP (1)
Ka-Yee Leung, Man-Wai Mak, Man-Hung Siu, Sun-Yuan Kung
2005 A conf
INTERSPEECH
Ka-Yee Leung, Man-Wai Mak, Man-Hung Siu, Sun-Yuan Kung
2005 conf
ICASSP (1)
Jeff Siu-Kei Au-Yeung, Chak-Fai Li, Man-Hung Siu
2005 conf
ICASSP (1)
Tim Ng, Mari Ostendorf, Mei-Yuh Hwang, Man-Hung Siu, Ivan Bulyko, Xin Lei
2004 ed.
ISCSLP
Qiang Huo, Man-Hung Siu
2004 A conf
INTERSPEECH
Wing-Hei Au, Man-Hung Siu
2004 conf
ISCSLP
Ka-Yee Leung, Man-Wai Mak, Man-Hung Siu, Sun-Yuan Kung
2004 A conf
INTERSPEECH
Kakeung Wong, Man-Hung Siu
2004 conf
ICASSP (1)
Pui-Fung Wong, Man-Hung Siu
2004 conf
ICASSP (1)
Siu Man Chan, Man-Hung Siu
2004 conf
ICASSP (1)
Yiu-Pong Lai, Man-Hung Siu
2004 A conf
INTERSPEECH
Jeff Siu-Kei Au-Yeung, Man-Hung Siu
2004 J jnl
Inf. Fusion
Ka-Yee Leung, Man-Hung Siu
2004 conf
ISCSLP
Mei-Yuh Hwang, Xin Lei, Tim Ng, Ivan Bulyko, Mari Ostendorf, Andreas Stolcke, Wen Wang, Jing Zheng, Venkata Ramana Rao Gadde, Martin Graciarena, Man-Hung Siu, Yan Huang
2004 A conf
ICME
Yiu-Pong Lai, Man-Chun Hui, Chi-Wah Kok, Man-Hung Siu
2004 conf
ICASSP (1)
Chak-Fai Li, Man-Hung Siu
2003 A conf
INTERSPEECH
Wing-Hei Au, Man-Hung Siu
2003 conf
ICASSP (1)
Chak-Fai Li, Man-Hung Siu
2003 A conf
INTERSPEECH
Yiu-Pong Lai, Man-Hung Siu
2003 conf
ICASSP (1)
Ka-Yee Leung, Man-Hung Siu
2002 B conf
ICMI
Pui-Fung Wong, Man-Hung Siu
2002 conf
ISCSLP
Pui-Fung Wong, Man-Hung Siu
2002 A conf
INTERSPEECH
Man-Hung Siu, Yu-Chung Chan
2002 A conf
INTERSPEECH
Ka-Yee Leung, Man-Hung Siu
2002 Misc conf
ICASSP
Ka-Yee Leung, Man-Hung Siu
2001 A conf
INTERSPEECH
Man-Hung Siu, Yu-Chung Chan
2000 A conf
INTERSPEECH
Man-Hung Siu, Ka-Ming Wong, Man-Yan Ching, Mei-Sum Lau
2000 Misc conf
ICASSP
Man-Hung Siu, Mari Ostendorf
2000 A conf
INTERSPEECH
Yu-Chung Chan, Man-Hung Siu, Brian Kan-Wing Mak
2000 J jnl
IEEE Trans. Speech Audio Process.
Man-Hung Siu, Mari Ostendorf
1999 Misc conf
ICASSP
John Golden, Owen Kimball, Man-Hung Siu, Herbert Gish
1999 J jnl
Comput. Speech Lang.
Man-Hung Siu, Herbert Gish
1999 Misc conf
ICASSP
Jayadev Billa, Thomas Colthurst, Amro El-Jaroudi, Rukmini Iyer, Kristine W. Ma, Spyridon Matsoukas, Carl Quillen, Fred Richardson, Man-Hung Siu, George Zavaliagkos, Herbert Gish
1999 Misc conf
ICASSP
Man-Hung Siu, Michael Jonas, Herbert Gish
1998 conf
ICSLP
Rukmini Iyer, Herbert Gish, Man-Hung Siu, George Zavaliagkos, Spyros Matsoukas
1998 conf
ICSLP
Man-Hung Siu, Rukmini Iyer, Herbert Gish, Carl Quillen
1998 Misc conf
ICASSP
George Zavaliagkos, John W. McDonough, David R. Miller, Amro El-Jaroudi, Jayadev Billa, Fred Richardson, Kristine W. Ma, Man-Hung Siu, Herbert Gish
1998 conf
ICSLP
George Zavaliagkos, Man-Hung Siu, Thomas Colthurst, Jayadev Billa
1997 conf
EUROSPEECH
Man-Hung Siu, Herbert Gish, Fred Richardson
1997 conf
EUROSPEECH
Man-Hung Siu, Mari Ostendorf
1996 conf
ICSLP
Man-Hung Siu, Mari Ostendorf
1995 conf
EUROSPEECH
Philippe Jeanrenaud, Man-Hung Siu, Herbert Gish
1995 Misc conf
ICASSP
Philippe Jeanrenaud, Ellen Eide, Upendra V. Chaudhari, John W. McDonough, Kenney Ng, Man-Hung Siu, Herbert Gish
1994 conf
ICASSP (2)
Herbert Gish, Man-Hung Siu
1994 conf
ICSLP
Man-Hung Siu, Herbert Gish, Jan Robin Rohlicek
1994 conf
ICASSP (1)
Philippe Jeanrenaud, Man-Hung Siu, Jan Robin Rohlicek, Marie Meteer, Herbert Gish
1993 conf
ICASSP (2)
L. Denenberg, Herbert Gish, Marie Meteer, T. Miller, Jan Robin Rohlicek, W. Sadkin, Man-Hung Siu
1993 conf
ICASSP (2)
Jan Robin Rohlicek, Philippe Jeanrenaud, Kenney Ng, Herbert Gish, Bruce R. Musicus, Man-Hung Siu
1993 conf
EUROSPEECH
Philippe Jeanrenaud, Kenney Ng, Man-Hung Siu, Jan Robin Rohlicek, Herbert Gish
1992 Misc conf
ICASSP
Man-Hung Siu, George Yu, Herbert Gish
1992 Misc conf
ICASSP
Jan Robin Rohlicek, Damaris M. Ayuso, Madeleine Bates, Robert J. Bobrow, A. Boulanger, Herbert Gish, Philippe Jeanrenaud, Marie Meteer, Man-Hung Siu
1991 Misc conf
ICASSP
Herbert Gish, Man-Hung Siu, Jan Robin Rohlicek
redb/extractors/apk_extractors/apk_permissions.py
← Index redb/extractors/apk_extractors/apk_permissions.py python
import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.apk_extractor import APKExtractor
from redb.models.dataclasses import APKPermissions, APKPermission

# Known dangerous permissions (Android runtime permissions)
DANGEROUS_PERMISSIONS = {
    "android.permission.READ_CALENDAR",
    "android.permission.WRITE_CALENDAR",
    "android.permission.CAMERA",
    "android.permission.READ_CONTACTS",
    "android.permission.WRITE_CONTACTS",
    "android.permission.GET_ACCOUNTS",
    "android.permission.ACCESS_FINE_LOCATION",
    "android.permission.ACCESS_COARSE_LOCATION",
    "android.permission.ACCESS_BACKGROUND_LOCATION",
    "android.permission.RECORD_AUDIO",
    "android.permission.READ_PHONE_STATE",
    "android.permission.READ_PHONE_NUMBERS",
    "android.permission.CALL_PHONE",
    "android.permission.ANSWER_PHONE_CALLS",
    "android.permission.ADD_VOICEMAIL",
    "android.permission.USE_SIP",
    "android.permission.BODY_SENSORS",
    "android.permission.SEND_SMS",
    "android.permission.RECEIVE_SMS",
    "android.permission.READ_SMS",
    "android.permission.RECEIVE_WAP_PUSH",
    "android.permission.RECEIVE_MMS",
    "android.permission.READ_EXTERNAL_STORAGE",
    "android.permission.WRITE_EXTERNAL_STORAGE",
    "android.permission.READ_MEDIA_IMAGES",
    "android.permission.READ_MEDIA_VIDEO",
    "android.permission.READ_MEDIA_AUDIO",
    "android.permission.POST_NOTIFICATIONS",
    "android.permission.NEARBY_WIFI_DEVICES",
    "android.permission.ACTIVITY_RECOGNITION",
    "android.permission.BLUETOOTH_SCAN",
    "android.permission.BLUETOOTH_ADVERTISE",
    "android.permission.BLUETOOTH_CONNECT",
}


class APKPermissionsExtractor(APKExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False,
        apk=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, apk,
        )
        self.permissions_data = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _get_protection_level(self, perm_name):
        """Determine the protection level of a permission.

        Uses androguard's permission mappings first, falls back to the
        known dangerous list.
        """
        try:
            from androguard.core.api_specific_resources import load_permission_mappings
            target_sdk = self.apk.get_target_sdk_version()
            sdk = int(target_sdk) if target_sdk else 30
            permission_map = load_permission_mappings(sdk)
            if perm_name in permission_map:
                info = permission_map[perm_name]
                if isinstance(info, dict):
                    return info.get("protectionLevel", "unknown")
                return "unknown"
        except Exception:
            pass

        # Fallback to known dangerous set
        if perm_name in DANGEROUS_PERMISSIONS:
            return "dangerous"
        if perm_name.startswith("android.permission."):
            return "normal"
        return "unknown"

    def _compute_permhash(self):
        """Compute permhash using the permhash library."""
        try:
            from permhash.functions import permhash_apk
            return permhash_apk(self.filepath)
        except Exception as e:
            self.log.warning(f"Failed to compute permhash: {e}")
            return None

    def _safe_extract(self, field_name, func, default=None):
        """Extract a single field, logging and returning default on failure."""
        try:
            return func()
        except Exception as e:
            self.log.warning(
                f"Error extracting APK permissions field '{field_name}' for "
                f"{self.hash.sha256}: {e}"
            )
            return default

    def extract(self):
        if not self._is_valid_apk():
            self.log.error(f"Invalid APK for {self.hash.sha256}")
            return None

        requested_perms = self._safe_extract(
            "requested_permissions",
            lambda: list(self.apk.get_permissions() or []), []
        )
        custom_perms = self._safe_extract(
            "custom_permissions",
            lambda: list(self.apk.get_declared_permissions() or []), []
        )
        custom_perm_set = set(custom_perms)

        permission_details = []
        dangerous_permissions = []

        for perm in requested_perms:
            try:
                protection_level = self._get_protection_level(perm)
                is_custom = perm in custom_perm_set

                permission_details.append(APKPermission(
                    permission_name=perm,
                    protection_level=protection_level,
                    is_custom=is_custom,
                ))

                if protection_level == "dangerous":
                    dangerous_permissions.append(perm)
            except Exception as e:
                self.log.warning(
                    f"Error processing permission '{perm}' for "
                    f"{self.hash.sha256}: {e}"
                )
                permission_details.append(APKPermission(
                    permission_name=perm,
                    protection_level="unknown",
                    is_custom=perm in custom_perm_set,
                ))

        permhash_value = self._compute_permhash()

        self.permissions_data = APKPermissions(
            total_permission_count=len(requested_perms),
            dangerous_permission_count=len(dangerous_permissions),
            permissions=requested_perms,
            dangerous_permissions=dangerous_permissions,
            custom_permissions=custom_perms,
            permission_details=permission_details,
            permhash=permhash_value,
        )
        return self.permissions_data

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

            current_time = datetime.now(timezone.utc)

            # One row per permission
            data = []
            for detail in self.permissions_data.permission_details:
                data.append([
                    self.sha256,
                    detail.permission_name,
                    detail.protection_level,
                    int(detail.is_custom),
                    current_time,
                ])

            if not data:
                return None

            column_names = [
                'sha256', 'permission_name', 'protection_level',
                'is_custom', 'analysis_date',
            ]

            column_type_names = [
                'FixedString(64)', 'String', 'LowCardinality(String)',
                'UInt8', "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

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