James F. Buckwalter

87 papers Journal 39Unranked 48
YearRankTypeTitle / Venue / Authors
2025 conf
OFC
Aaron Wissing, James Dalton, Viviana Arrunategui-Norvick, Evan D. Chansky, Xinhong Du, Junqian Liu, Hector Andrade, Aaron Maharry, Stephen M. Misak, Mario Milicevic, Luis A. Valenzuela, Larry A. Coldren, Adel A. M. Saleh, James F. Buckwalter, Clint L. Schow
2024 conf
BCICTS
Wonho Lee, Everett O'Malley, James F. Buckwalter
2024 conf
OFC
Stephen M. Misak, Aaron Wissing, Jinsong Zhang, Zixian Wei, Junqian Liu, Hector Andrade, Aaron Maharry, Giovanni Gilardi, Ranjeet Kumar, Guan-Lin Su, Ansheng Liu, Yuliya Akulova, James F. Buckwalter, Adel A. M. Saleh, Larry Coldren, David V. Plant, Clint L. Schow
2024 conf
BCICTS
Jonathan Tao, James F. Buckwalter
2024 J jnl
IEEE J. Solid State Circuits
Ghazal Movaghar, Viviana Arrunategui, Junqian Liu, Aaron Maharry, Stephen M. Misak, Xinhong Du, Clint L. Schow, James F. Buckwalter
2024 conf
BCICTS
Eythan Lam, Jeff Shieh-Chieh Chien, Petra Rowell, Miguel Urteaga, James F. Buckwalter
2023 conf
BCICTS
Justin J. Kim, Wonho Lee, James F. Buckwalter
2023 conf
OFC
Aaron Maharry, Stephen M. Misak, Hector Andrade, Junqian Liu, Giovanni Gilardi, Sean Liao, Ansheng Liu, Yuliya Akulova, Larry Coldren, James F. Buckwalter, Clint L. Schow
2023 conf
BCICTS
Jeff Shih-Chieh Chien, Eythan Lam, James F. Buckwalter
2023 conf
ESSCIRC
Everett O'Malley, James F. Buckwalter
2023 conf
OFC
Ghazal Movaghar, Viviana Arrunategui, Aaron Maharry, Evan D. Chansky, Junqian Liu, Hector Andrade, Clint Schow, James F. Buckwalter
2023 J jnl
IEEE J. Solid State Circuits
James F. Buckwalter, Alireza Zolfaghari, Drew A. Hall, Ke-Horng Chen, Dominique Morche
2022 conf
BCICTS
Everett O'Malley, James F. Buckwalter
2022 conf
ISSCC
Cameron Hill, James F. Buckwalter
2022 conf
ESSCIRC
Jeff Shih-Chieh Chien, James F. Buckwalter
2022 conf
BCICTS
Jeff Shih-Chieh Chien, Wonho Lee, James F. Buckwalter
2022 conf
BCICTS
Ghazal Movaghar, Junqian Liu, James Dalton, Luis A. Valenzuela, Clint L. Schow, James F. Buckwalter
2021 conf
ECOC
Hector Andrade, Yujie Xia, Aaron Maharry, Luis A. Valenzuela, James F. Buckwalter, Clint L. Schow
2021 J jnl
IEEE J. Solid State Circuits
Navid Hosseinzadeh, Aditya Jain, Roger J. Helkey, James F. Buckwalter
2021 J jnl
IEEE J. Solid State Circuits
Ahmed Hamza, Hussam AlShammary, Cameron Hill, James F. Buckwalter
2021 conf
BCICTS
Hector Andrade, Aaron Maharry, Luis A. Valenzuela, Navid Hosseinzadeh, Clint Schow, James F. Buckwalter
2021 J jnl
JOCN
Adel A. M. Saleh, Katharine Schmidtke, Robert J. Stone, James F. Buckwalter, Larry A. Coldren, Clint L. Schow
2021 conf
CICC
James F. Buckwalter, Mark J. W. Rodwell, Kang Ning, Ahmed S. H. Ahmed, Andrea Arias-Purdue, Jeff Chien, Everett O'Malley, Eythan Lam
2021 conf
ISSCC
Hongtao Xu, Toshiya Mitomo, James F. Buckwalter
2021 J jnl
IEEE Access
Panagiotis Skrimponis, Navid Hosseinzadeh, Abbas Khalili, Elza Erkip, Mark J. W. Rodwell, James F. Buckwalter, Sundeep Rangan
2021 conf
ACSCC
Panagiotis Skrimponis, Seongjoon Kang, Abbas Khalili, Wonho Lee, Navid Hosseinzadeh, Marco Mezzavilla, Elza Erkip, Mark J. W. Rodwell, James F. Buckwalter, Sundeep Rangan
2020 conf
BCICTS
Luis A. Valenzuela, Aaron Maharry, Hector Andrade, Clint L. Schow, James F. Buckwalter
2020 J jnl
IEEE J. Solid State Circuits
Kang Ning, Yihao Fang, Navid Hosseinzadeh, James F. Buckwalter
2020 J jnl
IEEE Trans. Wirel. Commun.
Sourjya Dutta, C. Nicolas Barati, David A. Ramirez, Aditya Dhananjay, James F. Buckwalter, Sundeep Rangan
2020 J jnl
IEEE J. Solid State Circuits
Hussam AlShammary, Cameron Hill, Ahmed Hamza, James F. Buckwalter
2020 conf
DRC
Pawana Shrestha, Matthew Guidry, Brian Romanczyk, Rohit R. Karnaty, Nirupam Hatui, Christian Wurm, Athith Krishna, Shubhra S. Pasayat, Stacia Keller, James F. Buckwalter, Umesh K. Mishra
2020 J jnl
IEEE J. Solid State Circuits
Hussam AlShammary, Ahmed Hamza, Cameron Hill, James F. Buckwalter
2020 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Prashansa Mukim, Aditya Dalakoti, David McCarthy, Carrie Segal, Merritt Miller, James F. Buckwalter, Forrest Brewer
2020 J jnl
IEEE J. Solid State Circuits
Ahmed Hamza, Cameron Hill, Hussam AlShammary, James F. Buckwalter
2020 conf
6G SUMMIT
Panagiotis Skrimponis, Sourjya Dutta, Marco Mezzavilla, Sundeep Rangan, Seyed Hadi Mirfarshbafan, Christoph Studer, James F. Buckwalter, Mark J. W. Rodwell
2019 conf
CICC
Ahmed Hamza, Hussam AlShammary, Cameron Hill, James F. Buckwalter
2019 J jnl
CoRR
Sourjya Dutta, C. Nicolas Barati, Aditya Dhananjay, David A. Ramirez, James F. Buckwalter, Sundeep Rangan
2019 conf
ISVLSI
Prashansa Mukim, Aditya Dalakoti, David McCarthy, Brandon Pon, Carrie Segal, Merritt Miller, James F. Buckwalter, Forrest Brewer
2019 conf
mmNets
Michele Polese, Francesco Restuccia, Abhimanyu Gosain, Josep Miquel Jornet, Shubhendu Bhardwaj, Viduneth Ariyarathna, Soumyajit Mandal, Kai Zheng, Aditya Dhananjay, Marco Mezzavilla, James F. Buckwalter, Mark J. W. Rodwell, Xin Wang, Michele Zorzi, Arjuna Madanayake, Tommaso Melodia
2019 conf
OFC
Hector Andrade, Takako Hirokawa, Aaron Maharry, Alexander V. Rylyakov, Clint L. Schow, James F. Buckwalter
2019 conf
BCICTS
Rohit R. Karnaty, Umesh K. Mishra, James F. Buckwalter, Matthew Guidry, Pawana Shrestha, Brian Romanczyk, Nirupam Hatui, Xun Zheng, Christian Wurm, Haoran Li, Stacia Keller
2018 conf
BCICTS
Kang Ning, James F. Buckwalter
2018 J jnl
IEEE J. Solid State Circuits
Najme Ebrahimi, James F. Buckwalter
2018 conf
ISSCC
Bagher Rabet, James F. Buckwalter
2018 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Mahdi Bagheri, Rahim Bagheri, James F. Buckwalter, Lawrence E. Larson
2017 J jnl
IEEE J. Solid State Circuits
Loai G. Salem, James F. Buckwalter, Patrick P. Mercier
2016 conf
ISSCC
Mohammad Sadegh Mehrjoo, James F. Buckwalter
2016 J jnl
IEEE J. Solid State Circuits
Mohammad Sadegh Mehrjoo, James F. Buckwalter
2016 conf
ESSCIRC
Loai G. Salem, James F. Buckwalter, Patrick P. Mercier
2016 J jnl
IEEE J. Solid State Circuits
Jefy Alex Jayamon, James F. Buckwalter, Peter M. Asbeck
2016 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Wei Wang, James F. Buckwalter
2016 J jnl
IEEE J. Solid State Circuits
Kelvin Fang, Cooper S. Levy, James F. Buckwalter
2015 J jnl
IEEE J. Solid State Circuits
Kristian N. Madsen, Timothy D. Gathman, Saeid Daneshgar, Thomas C. Oh, James Chingwei Li, James F. Buckwalter
2014 conf
ISSCC
Timothy D. Gathman, Kristian N. Madsen, James Chingwei Li, Thomas C. Oh, James F. Buckwalter
2014 J jnl
IEEE J. Solid State Circuits
Mohammad Sadegh Mehrjoo, James F. Buckwalter
2014 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Wei Wang, James F. Buckwalter
2014 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Shih-Hung Weng, Yulei Zhang, James F. Buckwalter, Chung-Kuan Cheng
2014 J jnl
IEEE J. Solid State Circuits
Amir Agah, Jefy Alex Jayamon, Peter M. Asbeck, Lawrence E. Larson, James F. Buckwalter
2013 conf
CICC
Jun Li, Hirohito Mukai, Mehmet Parlak, Michiaki Matsuo, James F. Buckwalter
2013 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Timothy D. Gathman, James F. Buckwalter
2013 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Nader Kalantari, James F. Buckwalter
2013 conf
RWS
Jefy Alex Jayamon, Amir Agah, Bassel Hanafi, Hayg Dabag, James F. Buckwalter, Peter M. Asbeck
2013 J jnl
IEEE J. Solid State Circuits
Amir Agah, Hayg-Taniel Dabag, Bassel Hanafi, Peter M. Asbeck, James F. Buckwalter, Lawrence E. Larson
2013 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Xiang Hu, Peng Du, James F. Buckwalter, Chung-Kuan Cheng
2012 J jnl
IEEE J. Solid State Circuits
Joohwa Kim, James F. Buckwalter
2012 J jnl
IEEE J. Solid State Circuits
James F. Buckwalter, Xuezhe Zheng, Guoliang Li, Kannan Raj, Ashok V. Krishnamoorthy
2012 J jnl
IEEE J. Solid State Circuits
Joohwa Kim, James F. Buckwalter
2012 conf
CICC
Peter M. Asbeck, Lawrence E. Larson, Donald F. Kimball, James F. Buckwalter
2012 conf
MWSCAS
Hayg-Taniel Dabag, Peter M. Asbeck, James F. Buckwalter
2011 conf
CICC
Mehmet Parlak, James F. Buckwalter
2011 conf
CICC
James F. Buckwalter, Joohwa Kim, Xuezhe Zheng, Guoliang Li, Kannan Raj, Ashok V. Krishnamoorthy
2011 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Yulei Zhang, Xiang Hu, Alina Deutsch, A. Ege Engin, James F. Buckwalter, Chung-Kuan Cheng
2011 J jnl
IEEE J. Solid State Circuits
Joohwa Kim, James F. Buckwalter
2010 conf
CICC
Joohwa Kim, James F. Buckwalter
2010 conf
CICC
Joohwa Kim, Mehmet Parlak, James F. Buckwalter
2010 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Joohwa Kim, James F. Buckwalter
2010 conf
SLIP
Yulei Zhang, James F. Buckwalter, Chung-Kuan Cheng
2009 conf
ISSCC
James F. Buckwalter, Joohwa Kim
2009 conf
ISQED
Yulei Zhang, Ling Zhang, Alina Deutsch, George A. Katopis, Daniel M. Dreps, James F. Buckwalter, Ernest S. Kuh, Chung-Kuan Cheng
2009 conf
SLIP
Yulei Zhang, Xiang Hu, Alina Deutsch, A. Ege Engin, James F. Buckwalter, Chung-Kuan Cheng
2008 conf
Hot Interconnects
Ling Zhang, Wenjian Yu, Yulei Zhang, Renshen Wang, Alina Deutsch, George A. Katopis, Daniel M. Dreps, James F. Buckwalter, Ernest S. Kuh, Chung-Kuan Cheng
2006 J jnl
IEEE J. Solid State Circuits
James F. Buckwalter, Ali Hajimiri
2006 J jnl
IEEE J. Solid State Circuits
James F. Buckwalter, Ali Hajimiri
2006 J jnl
IEEE J. Solid State Circuits
James F. Buckwalter, Mounir Meghelli, Daniel J. Friedman, Ali Hajimiri
2005 conf
CICC
James F. Buckwalter, Ali Hajimiri
2004 conf
CICC
James F. Buckwalter, Ali Hajimiri
2004 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
James F. Buckwalter, Behnam Analui, Ali Hajimiri
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"