Wei Wang

155 papers A* 17A 23B 13C 2Misc 3Journal 71Unranked 26
YearRankTypeTitle / Venue / Authors
2026 A* conf
HPCA
Jiuchen Shi, Hang Zhang, Yixiao Wang, Quan Chen, Yizhou Shan, Kaihua Fu, Wei Wang, Minyi Guo
2026 A conf
EuroSys
Hao Wu, Yaochen Liu, Minchen Yu, Qizhen Weng, Junxiao Deng, Yue Yu, Hao Fan, Song Wu, Wei Wang, Hai Jin
2026 A conf
EuroSys
Xiaoxiao Jiang, Suyi Li, Lingyun Yang, Tianyu Feng, Zhipeng Di, Weiyi Lu, Guoxuan Zhu, Xiu Lin, Kan Liu, Yinghao Yu, Tao Lan, Guodong Yang, Lin Qu, Liping Zhang, Wei Wang
2026 J jnl
IEEE Trans. Netw.
Jiayi Zhang, Chen Chen, Zuo Gan, Wei Wang, Bo Li, Minyi Guo
2026 J jnl
IEEE Trans. Computers
Kaihua Fu, Jiuchen Shi, Yao Chen, Quan Chen, Weng-Fai Wong, Wei Wang, Bingsheng He, Minyi Guo
2026 conf
ASPLOS (2)
Ruibo Fan, Xiangrui Yu, Xinglin Pan, Zeyu Li, Weile Luo, Qiang Wang, Wei Wang, Xiaowen Chu
2026 J jnl
CoRR
Ruibo Fan, Xiangrui Yu, Xinglin Pan, Zeyu Li, Weile Luo, Qiang Wang, Wei Wang, Xiaowen Chu
2025 J jnl
CoRR
Tianyuan Wu, Lunxi Cao, Hanfeng Lu, Xiaoxiao Jiang, Yinghao Yu, Siran Yang, Guodong Yang, Jiamang Wang, Lin Qu, Liping Zhang, Wei Wang
2025 A* conf
SIGCOMM
Jie Lu, Jiaqi Gao, Fei Feng, Zhiqiang He, Menglei Zheng, Kun Liu, Jun He, Binbin Liao, Suwei Xu, Ke Sun, Yongjia Mo, Qinghua Peng, Jilie Luo, Qingxu Li, Gang Lu, Zishu Wang, Jianbo Dong, Kunling He, Sheng Cheng, Jiamin Cao, Hairong Jiao, Pengcheng Zhang, Shu Ma, Lingjun Zhu, Chao Shi, Yangming Zhang, Yiquan Chen, Wei Wang, Shuhong Zhu, Xingru Li, Qiang Wang, Jiang Liu, Chao Wang, Wei Lin, Ennan Zhai, Jiesheng Wu, Qiang Liu, Binzhang Fu, Dennis Cai
2025 J jnl
IEEE Trans. Aerosp. Electron. Syst.
Ming-Yi You, Wenqiang Pu, Rui Zhou, Yun-Xia Ye, Minrui Xiao, Wei Wang, Qingjiang Shi
2025 J jnl
CoRR
Xinglin Pan, Shaohuai Shi, Wenxiang Lin, Yuxin Wang, Zhenheng Tang, Wei Wang, Xiaowen Chu
2025 J jnl
IEEE Trans. Dependable Secur. Comput.
Peng Ye, Zhifeng Jiang, Wei Wang, Bo Li, Baochun Li
2025 J jnl
IEEE Trans. Dependable Secur. Comput.
Yuqing Li, Nan Yan, Jing Chen, Xiong Wang, Jianan Hong, Kun He, Wei Wang, Bo Li
2025 Misc conf
NSDI
Lingyun Yang, Yongchen Wang, Yinghao Yu, Qizhen Weng, Jianbo Dong, Kan Liu, Chi Zhang, Yanyi Zi, Hao Li, Zechao Zhang, Nan Wang, Yu Dong, Menglei Zheng, Lanlan Xi, Xiaowei Lu, Liang Ye, Guodong Yang, Binzhang Fu, Tao Lan, Liping Zhang, Lin Qu, Wei Wang
2025 conf
USENIX ATC
Tianyuan Wu, Wei Wang, Yinghao Yu, Siran Yang, Wenchao Wu, Qinkai Duan, Guodong Yang, Jiamang Wang, Lin Qu, Liping Zhang
2025 J jnl
IEEE Trans. Big Data
Xiaowen Chu, Wei Wang, Cong Wang, Yang Liu, Rongfei Zeng, Christopher G. Brinton
2025 J jnl
CoRR
Xiaoxiao Jiang, Suyi Li, Lingyun Yang, Tianyu Feng, Zhipeng Di, Weiyi Lu, Guoxuan Zhu, Xiu Lin, Kan Liu, Yinghao Yu, Tao Lan, Guodong Yang, Lin Qu, Liping Zhang, Wei Wang
2025 conf
USENIX ATC
Suyi Li, Lingyun Yang, Xiaoxiao Jiang, Hanfeng Lu, Dakai An, Zhipeng Di, Weiyi Lu, Jiawei Chen, Kan Liu, Yinghao Yu, Tao Lan, Guodong Yang, Lin Qu, Liping Zhang, Wei Wang
2025 J jnl
CoRR
Han Lu, Zichen Liu, Shaopan Xiong, Yancheng He, Wei Gao, Yanan Wu, Weixun Wang, Jiashun Liu, Yang Li, Haizhou Zhao, Ju Huang, Siran Yang, Xiaoyang Li, Yijia Luo, Zihe Liu, Ling Pan, Junchi Yan, Wei Wang, Wenbo Su, Jiamang Wang, Lin Qu, Bo Zheng
2025 J jnl
IEEE Trans. Netw.
Minchen Yu, Tingjia Cao, Wei Wang, Ruichuan Chen
2025 J jnl
CoRR
Weixun Wang, Shaopan Xiong, Gengru Chen, Wei Gao, Sheng Guo, Yancheng He, Ju Huang, Jiaheng Liu, Zhendong Li, Xiaoyang Li, Zichen Liu, Haizhou Zhao, Dakai An, Lunxi Cao, Qiyang Cao, Wanxi Deng, Feilei Du, Yiliang Gu, Jiahe Li, Xiang Li, Mingjie Liu, Yijia Luo, Zihe Liu, Yadao Wang, Pei Wang, Tianyuan Wu, Yanan Wu, Yuheng Zhao, Shuaibing Zhao, Jin Yang, Siran Yang, Yingshui Tan, Huimin Yi, Yuchi Xu, Yujin Yuan, Xingyao Zhang, Lin Qu, Wenbo Su, Wei Wang, Jiamang Wang, Bo Zheng
2025 J jnl
CoRR
Wei Gao, Yuheng Zhao, Tianyuan Wu, Shaopan Xiong, Weixun Wang, Dakai An, Lunxi Cao, Dilxat Muhtar, Zichen Liu, Haizhou Zhao, Ju Huang, Siran Yang, Yongbin Li, Wenbo Su, Jiamang Wang, Lin Qu, Bo Zheng, Wei Wang
2025 J jnl
CoRR
Tianyuan Wu, Lunxi Cao, Yining Wei, Wei Gao, Yuheng Zhao, Dakai An, Shaopan Xiong, Zhiqiang Lv, Ju Huang, Siran Yang, Yinghao Yu, Jiamang Wang, Lin Qu, Wei Wang
2025 J jnl
CoRR
Wei Gao, Yuheng Zhao, Dakai An, Tianyuan Wu, Lunxi Cao, Shaopan Xiong, Ju Huang, Weixun Wang, Siran Yang, Wenbo Su, Jiamang Wang, Lin Qu, Bo Zheng, Wei Wang
2025 J jnl
IEEE Internet Things J.
Mingzhe Li, You Lin, Wei Wang, Jin Zhang
2025 A conf
EuroSys
Ruibo Fan, Xiangrui Yu, Peijie Dong, Zeyu Li, Gu Gong, Qiang Wang, Wei Wang, Xiaowen Chu
2025 conf
USENIX ATC
Suyi Li, Hanfeng Lu, Tianyuan Wu, Minchen Yu, Qizhen Weng, Xusheng Chen, Yizhou Shan, Binhang Yuan, Wei Wang
2025 conf
USENIX ATC
Minchen Yu, Ao Wang, Dong Chen, Haoxuan Yu, Xiaonan Luo, Zhuohao Li, Wei Wang, Ruichuan Chen, Dapeng Nie, Haoran Yang, Yu Ding
2025 J jnl
CoRR
Yuning Gong, Yifei Liu, Yifan Zhan, Muyao Niu, Xueying Li, Yuanjun Liao, Jiaming Chen, Yuanyuan Gao, Jiaqi Chen, Minming Chen, Li Zhou, Yuning Zhang, Wei Wang, Xiaoqing Hou, Huaxi Huang, Shixiang Tang, Le Ma, Dingwen Zhang, Xue Yang, Junchi Yan, Yanchi Zhang, Yinqiang Zheng, Xiao Sun, Zhihang Zhong
2025 conf
SoCC
Haoxuan Yu, Sheng Yao, Wei Wang
2025 J jnl
CoRR
Minchen Yu, Rui Yang, Chaobo Jia, Zhaoyuan Su, Sheng Yao, Tingfeng Lan, Yuchen Yang, Yue Cheng, Wei Wang, Ao Wang, Ruichuan Chen
2024 J jnl
CoRR
Suyi Li, Hanfeng Lu, Tianyuan Wu, Minchen Yu, Qizhen Weng, Xusheng Chen, Yizhou Shan, Binhang Yuan, Wei Wang
2024 conf
ASPLOS (3)
Ruibo Fan, Wei Wang, Xiaowen Chu
2024 A conf
EuroSys
Zhifeng Jiang, Wei Wang, Ruichuan Chen
2024 A* conf
INFOCOM
Nan Yan, Yuqing Li, Jing Chen, Xiong Wang, Jianan Hong, Kun He, Wei Wang
2024 J jnl
CoRR
Tianyuan Wu, Wei Wang, Yinghao Yu, Siran Yang, Wenchao Wu, Qinkai Duan, Guodong Yang, Jiamang Wang, Lin Qu, Liping Zhang
2024 J jnl
CoRR
Hao Wu, Junxiao Deng, Minchen Yu, Yue Yu, Yaochen Liu, Hao Fan, Song Wu, Wei Wang
2024 A* conf
ICML
Bo Li, Wei Wang, Peng Ye
2024 A* conf
USENIX Security Symposium
Zhifeng Jiang, Peng Ye, Shiqi He, Wei Wang, Ruichuan Chen, Bo Li
2024 J jnl
CoRR
Zhifeng Jiang, Peng Ye, Shiqi He, Wei Wang, Ruichuan Chen, Bo Li
2024 J jnl
IEEE Trans. Knowl. Data Eng.
Shijie Zhang, Jiang Xiao, Enping Wu, Feng Cheng, Bo Li, Wei Wang, Hai Jin
2024 J jnl
IEEE Trans. Veh. Technol.
Zhaohui Guang, Yang Liu, Qingqing Wu, Wei Wang, Qingjiang Shi
2024 J jnl
CoRR
Dong Chen, Alice Dethise, Istemi Ekin Akkus, Ivica Rimac, Klaus Satzke, Antti Koskela, Marco Canini, Wei Wang, Ruichuan Chen
2024 C conf
CSCWD
Ruiting Zhou, Ziyi Han, Yifan Zeng, Zhi Zhou, Libing Wu, Wei Wang
2024 J jnl
CoRR
Mingzhe Li, You Lin, Wei Wang, Jin Zhang
2024 J jnl
CoRR
Suyi Li, Lingyun Yang, Xiaoxiao Jiang, Hanfeng Lu, Zhipeng Di, Weiyi Lu, Jiawei Chen, Kan Liu, Yinghao Yu, Tao Lan, Guodong Yang, Lin Qu, Liping Zhang, Wei Wang
2024 J jnl
IEEE Trans. Parallel Distributed Syst.
Chen Chen, Hong Xu, Wei Wang, Baochun Li, Bo Li, Li Chen, Gong Zhang
2024 A* conf
NeurIPS
Bo Li, Wei Wang, Peng Ye
2024 J jnl
ACM Trans. Sens. Networks
Mingzhe Li, Wei Wang, Jin Zhang
2023 J jnl
IEEE Trans. Cloud Comput.
Chen Chen, Qizhen Weng, Wei Wang, Baochun Li, Bo Li
2023 conf
USENIX ATC
Qizhen Weng, Lingyun Yang, Yinghao Yu, Wei Wang, Xiaochuan Tang, Guodong Yang, Liping Zhang
2023 A* conf
INFOCOM
Mingzhe Li, You Lin, Jin Zhang, Wei Wang
2023 A conf
ICDCS
Lin Zhang, Shaohuai Shi, Xiaowen Chu, Wei Wang, Bo Li, Chengjian Liu
2023 J jnl
CoRR
Lin Zhang, Shaohuai Shi, Xiaowen Chu, Wei Wang, Bo Li, Chengjian Liu
2023 J jnl
CoRR
Minchen Yu, Ao Wang, Dong Chen, Haoxuan Yu, Xiaonan Luo, Zhuohao Li, Wei Wang, Ruichuan Chen, Dapeng Nie, Haoran Yang
2023 A conf
IPDPS
Ruibo Fan, Wei Wang, Xiaowen Chu
2023 Misc conf
NSDI
Minchen Yu, Tingjia Cao, Wei Wang, Ruichuan Chen
2023 J jnl
IEEE J. Sel. Areas Commun.
Chen Chen, Hong Xu, Wei Wang, Baochun Li, Bo Li, Li Chen, Gong Zhang
2023 conf
SoCC
Suyi Li, Wei Wang, Jun Yang, Guangzhen Chen, Daohe Lu
2023 J jnl
IEEE Trans. Parallel Distributed Syst.
Mingzhe Li, Wei Wang, Jin Zhang
2023 J jnl
CoRR
Jian Gao, Xin Cao, Xin Yao, Gong Zhang, Wei Wang
2023 J jnl
Proc. VLDB Endow.
Jian Gao, Xin Cao, Xin Yao, Gong Zhang, Wei Wang
2023 J jnl
IEEE Internet Things J.
Jun Li, Wei Song, Yongbin Gao, Huixing Wang, Yier Yan, Bo Huang, Jun Zhang, Wei Wang
2023 J jnl
IEEE Trans. Cloud Comput.
Lin Zhang, Shaohuai Shi, Wei Wang, Bo Li
2023 J jnl
IEEE Trans. Big Data
Zhifeng Jiang, Wei Wang, Bo Li, Qiang Yang
2022 B conf
PPoPP
Da Yan, Wei Wang, Xiaowen Chu
2022 J jnl
Mob. Networks Appl.
Xiaowen Chu, Hongbo Jiang, Bo Li, Dan Wang, Wei Wang
2022 J jnl
IEEE Trans. Cloud Comput.
Chengliang Zhang, Minchen Yu, Wei Wang, Feng Yan
2022 J jnl
CoRR
Peng Ye, Zhifeng Jiang, Wei Wang, Bo Li, Baochun Li
2022 J jnl
IEEE Internet Things J.
Mingzhe Li, Wei Wang, Jin Zhang, Qian Zhang
2022 A conf
ICDCS
Mingzhe Li, You Li, Jin Zhang, Wei Wang
2022 Misc conf
NSDI
Qizhen Weng, Wencong Xiao, Yinghao Yu, Wei Wang, Cheng Wang, Jian He, Yong Li, Liping Zhang, Wei Lin, Yu Ding
2022 conf
SoCC
Huangshi Tian, Suyi Li, Ao Wang, Wei Wang, Tianlong Wu, Haoran Yang
2022 J jnl
CoRR
Zhifeng Jiang, Wei Wang, Baochun Li, Bo Li
2022 conf
SoCC
Zhifeng Jiang, Wei Wang, Baochun Li, Bo Li
2022 J jnl
CoRR
Lin Zhang, Shaohuai Shi, Wei Wang, Bo Li
2022 J jnl
CoRR
Zhifeng Jiang, Wei Wang, Ruichuan Chen
2022 J jnl
IEEE Trans. Cloud Comput.
Yinghao Yu, Chengliang Zhang, Wei Wang, Jun Zhang, Khaled Ben Letaief
2022 conf
SoCC
Yongkang Zhang, Yinghao Yu, Wei Wang, Qiukai Chen, Jie Wu, Zuowei Zhang, Jiang Zhong, Tianchen Ding, Qizhen Weng, Lingyun Yang, Cheng Wang, Jian He, Guodong Yang, Liping Zhang
2021 J jnl
IEEE Netw.
Shaohuai Shi, Zhenheng Tang, Xiaowen Chu, Chengjian Liu, Wei Wang, Bo Li
2021 J jnl
CoRR
Chengliang Zhang, Junzhe Xia, Baichen Yang, Huancheng Puyang, Wei Wang, Ruichuan Chen, Istemi Ekin Akkus, Paarijaat Aditya, Feng Yan
2021 conf
SoCC
Chengliang Zhang, Junzhe Xia, Baichen Yang, Huancheng Puyang, Wei Wang, Ruichuan Chen, Istemi Ekin Akkus, Paarijaat Aditya, Feng Yan
2021 A conf
ICDCS
Chen Chen, Hong Xu, Wei Wang, Baochun Li, Bo Li, Li Chen, Gong Zhang
2021 conf
USENIX ATC
Huangshi Tian, Minchen Yu, Wei Wang
2021 J jnl
CoRR
Zhifeng Jiang, Wei Wang, Yang Liu
2021 conf
SoCC
Suyi Li, Luping Wang, Wei Wang, Yinghao Yu, Bo Li
2021 A conf
ICDCS
Minchen Yu, Zhifeng Jiang, Hok Chun Ng, Wei Wang, Ruichuan Chen, Bo Li
2021 J jnl
IEEE Netw.
Xiaowen Chu, Xiaoming Fu, Baochun Li, Wei Wang, Hui Zang, Albert Y. Zomaya
2021 conf
SoCC
Luping Wang, Lingyun Yang, Yinghao Yu, Wei Wang, Bo Li, Xianchao Sun, Jian He, Liping Zhang
2021 J jnl
CoRR
Minchen Yu, Tingjia Cao, Wei Wang, Ruichuan Chen
2021 B conf
PPoPP
Da Yan, Wei Wang, Xiaowen Chu
2021 J jnl
CoRR
Zhifeng Jiang, Wei Wang
2021 J jnl
IEEE Internet Things J.
Mingzhe Li, Jingrou Wu, Wei Wang, Jin Zhang
2020 J jnl
IEEE Trans. Parallel Distributed Syst.
Yinghao Yu, Wei Wang, Renfei Huang, Jun Zhang, Khaled Ben Letaief
2020 conf
USENIX ATC
Chengliang Zhang, Suyi Li, Junzhe Xia, Wei Wang, Feng Yan, Yang Liu
2020 J jnl
CoRR
Zhenheng Tang, Shaohuai Shi, Xiaowen Chu, Wei Wang, Bo Li
2020 J jnl
CoRR
Shaohuai Shi, Zhenheng Tang, Xiaowen Chu, Chengjian Liu, Wei Wang, Bo Li
2020 A conf
IPDPS
Da Yan, Wei Wang, Xiaowen Chu
2020 J jnl
CoRR
Suyi Li, Yong Cheng, Wei Wang, Yang Liu, Tianjian Chen
2020 A conf
SC
Luping Wang, Qizhen Weng, Wei Wang, Chen Chen, Bo Li
2020 A conf
IPDPS
Jun Yi, Chengliang Zhang, Wei Wang, Cheng Li, Feng Yan
2020 B conf
PPoPP
Da Yan, Wei Wang, Xiaowen Chu
2020 C ed.
QShine
Xiaowen Chu, Hongbo Jiang, Bo Li, Dan Wang, Wei Wang
2020 A* conf
INFOCOM
Minchen Yu, Yinghao Yu, Yunchuan Zheng, Baichen Yang, Wei Wang
2020 conf
SoCC
Chen Chen, Qizhen Weng, Wei Wang, Baochun Li, Bo Li
2019 J jnl
CoRR
Suyi Li, Yong Cheng, Yang Liu, Wei Wang, Tianjian Chen
2019 A conf
ICDCS
Luping Wang, Wei Wang, Bo Li
2019 conf
SoCC
Huangshi Tian, Yunchuan Zheng, Wei Wang
2019 A conf
ICDCS
Yinghao Yu, Wei Wang, Jun Zhang, Khaled Ben Letaief
2019 conf
USENIX ATC
Chengliang Zhang, Minchen Yu, Wei Wang, Feng Yan
2019 A* conf
INFOCOM
Chen Chen, Wei Wang, Bo Li
2019 conf
APSys
Huangshi Tian, Qizhen Weng, Wei Wang
2018 conf
SoCC
Huangshi Tian, Minchen Yu, Wei Wang
2018 A conf
ICDCS
Luping Wang, Wei Wang
2018 conf
SoCC
Chen Chen, Qizhen Weng, Wei Wang, Baochun Li, Bo Li
2018 J jnl
CoRR
Chen Chen, Qizhen Weng, Wei Wang, Baochun Li, Bo Li
2018 A conf
ICDCS
Yinghao Yu, Wei Wang, Jun Zhang, Qizhen Weng, Khaled Ben Letaief
2018 A* conf
INFOCOM
Chen Chen, Wei Wang, Bo Li
2018 A conf
SC
Yinghao Yu, Renfei Huang, Wei Wang, Jun Zhang, Khaled Ben Letaief
2018 A conf
ICDCS
Chengliang Zhang, Huangshi Tian, Wei Wang, Feng Yan
2018 B conf
GLOBECOM
Yuechen Tao, Jingjie Jiang, Shiyao Ma, Luping Wang, Wei Wang, Bo Li
2018 A* conf
INFOCOM
Luping Wang, Wei Wang, Bo Li
2017 A* conf
INFOCOM
Chen Chen, Wei Wang, Shengkai Zhang, Bo Li
2017 A* conf
INFOCOM
Wei Wang, Shiyao Ma, Bo Li, Baochun Li
2017 B conf
GLOBECOM
Yinghao Yu, Wei Wang, Jun Zhang, Khaled Ben Letaief
2017 J jnl
CoRR
Yinghao Yu, Wei Wang, Jun Zhang, Khaled Ben Letaief
2017 J jnl
CoRR
Yinghao Yu, Wei Wang, Jun Zhang, Khaled Ben Letaief
2017 A* conf
INFOCOM
Yinghao Yu, Wei Wang, Jun Zhang, Khaled Ben Letaief
2017 A conf
ICDCS
Chen Chen, Wei Wang, Bo Li
2017 B conf
GLOBECOM
Luping Wang, Wei Wang, Bo Li
2017 J jnl
CoRR
Shiyao Ma, Jingjie Jiang, Wei Wang, Bo Li
2016 B conf
ICNP
Wei Wang, A-Long Jin
2016 A conf
SC
Wei Wang, Baochun Li, Ben Liang, Jun Li
2016 A* conf
SIGMETRICS
Wei Wang, Baochun Li, Ben Liang, Jun Li
2015 J jnl
IEEE Trans. Parallel Distributed Syst.
Wei Wang, Di Niu, Ben Liang, Baochun Li
2015 J jnl
IEEE Trans. Parallel Distributed Syst.
Wei Wang, Ben Liang, Baochun Li
2015 J jnl
IEEE Trans. Parallel Distributed Syst.
Wei Wang, Ben Liang, Baochun Li
2015 conf
ICC
Wei Wang, Linlin Yang, Qing Liao, Xiang Zhu, Qian Zhang
2015 J jnl
IEEE Wirel. Commun.
Wei Wang, Qian Zhang
2014 J jnl
IEEE Trans. Mob. Comput.
Wei Wang, Ben Liang, Baochun Li
2014 A* conf
INFOCOM
Wei Wang, Baochun Li, Ben Liang
2014 A* conf
INFOCOM
Wei Wang, Ben Liang, Baochun Li
2014 A conf
CoNEXT
Wei Wang, Chen Feng, Baochun Li, Ben Liang
2013 J jnl
CoRR
Wei Wang, Baochun Li, Ben Liang
2013 A conf
ICDCS
Wei Wang, Di Niu, Baochun Li, Ben Liang
2013 B conf
ICNP
Wei Wang, Baochun Li, Ben Liang
2013 B conf
IWQoS
Wei Wang, Ben Liang, Baochun Li
2013 conf
ICDCS Workshops
Wei Wang, Ben Liang, Baochun Li
2013 B conf
IWQoS
Wei Wang, Ben Liang, Baochun Li
2013 J jnl
CoRR
Wei Wang, Baochun Li, Ben Liang
2013 conf
ICAC
Wei Wang, Baochun Li, Ben Liang
2012 A conf
ICDCS
Wei Wang, Baochun Li, Ben Liang
2011 B conf
SECON
Wei Wang, Baochun Li, Ben Liang
2009 B conf
GLOBECOM
Wei Wang, Chen He
2009 B conf
GLOBECOM
Qingjiang Shi, Chen He, Hongyang Chen, Ling-ge Jiang, Wei Wang
redb/extractors/ioc_extractor/ioc_extractor.py
← Index redb/extractors/ioc_extractor/ioc_extractor.py python
"""
IOC Extractor - Extractor class for extracting IOCs from decompilation results.

This extractor works with in-memory data from DecompileBinja, following the
standard Extractor pattern to support both ClickHouse and PrintExporter (dry-run).

Usage:
    # After DecompileBinja completes:
    ioc_extractor = IOCExtractorFromResults(
        analysis_results=decompiler.analysis_results,
        sha256=sha256,
        log=logger,
        exporters=exporters,
        index_prefix=index_prefix
    )
    ioc_extractor.export_data()
"""

import inspect
from datetime import datetime, timezone
from pathlib import Path
from typing import Any, List, Dict, Optional

from redb.extractors.enum import Tag
from redb.extractors.database_exporters import DatabaseExporter

# Import the IOCScraper and related classes from standalone module
from redb.extractors.ioc_extractor.standalone_ioc_extractor import (
    IOCScraper,
    IOCType,
    SourceType,
    ExtractedIOC,
)
from typing import Set


class IOCExtractorFromResults:
    """
    Extracts IOCs from in-memory decompilation results.

    This follows a simplified Extractor pattern but doesn't inherit from Extractor
    since it doesn't read from a binary file - instead it takes already-processed
    analysis results from DecompileBinja.
    """

    def __init__(
        self,
        analysis_results: Dict[str, Any],
        sha256: str,
        log: Any,
        exporters: Optional[List[DatabaseExporter]] = None,
        index_prefix: Optional[str] = None,
        tld_file: Optional[Path] = None,
        suppress_types: Optional[Set[IOCType]] = None,
        js_context: bool = False,
    ):
        """
        Initialize IOC Extractor with analysis results.

        Args:
            analysis_results: Dict containing 'strings' and 'decompiled' lists from DecompileBinja
            sha256: Sample SHA256 hash
            log: Logger instance
            exporters: List of database exporters (ClickHouse, Print, etc.)
            index_prefix: Index prefix for database
            tld_file: Optional path to TLD list file
            js_context: When True, the underlying IOCScraper rejects FQDN
                candidates that match JS object-access syntax (see
                JS_FP_TLDS / JS_FP_SLDS). Set this for the JS pipeline only;
                APK suppresses FQDN entirely via suppress_types and binary
                callers leave it disabled.
        """
        self.log = log
        self.log.debug(f"Creating {self.__class__.__name__}")
        self.analysis_results = analysis_results
        self.sha256 = sha256
        self.exporters = exporters or []
        self.index_prefix = index_prefix
        self.scraper = IOCScraper(
            tld_file, suppress_types=suppress_types, js_context=js_context,
        )
        self.extracted_iocs: List[ExtractedIOC] = []

    def extract(self) -> List[ExtractedIOC]:
        """
        Extract IOCs from strings and decompiled functions in analysis_results.

        Returns:
            List of ExtractedIOC objects
        """
        self.log.debug(inspect.currentframe().f_code.co_name)
        self.extracted_iocs = []

        # Extract from strings
        strings_count = self._extract_from_strings()

        # Extract from decompiled functions
        functions_count = self._extract_from_decompiled()

        # Extract from text-based artefact surfaces (JS, PowerShell, etc.)
        text_count = self._extract_from_text()

        self.log.info(
            f"Extracted {len(self.extracted_iocs)} IOCs for {self.sha256[:16]}... "
            f"(strings: {strings_count}, functions: {functions_count}, "
            f"text: {text_count})"
        )

        return self.extracted_iocs

    def _extract_from_strings(self) -> int:
        """Extract IOCs from sample's strings."""
        count = 0
        strings = self.analysis_results.get("strings", [])

        for s in strings:
            string_value = s.get("string", "")
            string_offset = s.get("string_offset", 0)

            if isinstance(string_value, bytes):
                string_value = string_value.decode('utf-8', errors='replace')

            for ioc in self.scraper.scrape(string_value, SourceType.STRING, str(string_offset)):
                self.extracted_iocs.append(ioc)
                count += 1

        return count

    def _extract_from_decompiled(self) -> int:
        """Extract IOCs from sample's decompiled functions.

        Supports both Binja format (key: "decompiled", fields: "decompiled_function",
        "decompiled_function_hash", "function_type") and APK format (key:
        "decompiled_content", fields: "decompiled_method", "decompiled_method_hash",
        "method_type").
        """
        count = 0

        # Binja format
        decompiled = self.analysis_results.get("decompiled", [])
        for func in decompiled:
            func_type = func.get("function_type", "UNKNOWN")
            if func_type in ("LIBRARY", "THUNK"):
                continue

            func_content = func.get("decompiled_function", "")
            func_hash = func.get("decompiled_function_hash", "unknown")

            if isinstance(func_content, bytes):
                func_content = func_content.decode('utf-8', errors='replace')

            for ioc in self.scraper.scrape(func_content, SourceType.DECOMPILED_FUNCTION, func_hash):
                self.extracted_iocs.append(ioc)
                count += 1

        # APK format (decompiled_content with method-level fields)
        decompiled_content = self.analysis_results.get("decompiled_content", [])
        for func in decompiled_content:
            func_type = func.get("method_type", "UNKNOWN")
            if func_type in ("LIBRARY", "THUNK"):
                continue

            func_content = func.get("decompiled_method", "")
            func_hash = func.get("decompiled_method_hash", "unknown")

            if isinstance(func_content, bytes):
                func_content = func_content.decode('utf-8', errors='replace')

            for ioc in self.scraper.scrape(func_content, SourceType.DECOMPILED_FUNCTION, func_hash):
                self.extracted_iocs.append(ioc)
                count += 1

        return count

    def _extract_from_text(self) -> int:
        """Extract IOCs from text-based artefact surfaces.

        Walks `analysis_results["text_raw"]` and `analysis_results["text_normalized"]`,
        each a list of `{"content": str, "content_hash": str}` dicts. Each
        list is routed through its own SourceType (`TEXT_RAW` /
        `TEXT_NORMALIZED`) so analysts can distinguish IOCs that were already
        present in the raw source from those exposed only after normalisation
        (deobfuscation/beautification). Generic across text-based formats —
        used by JS today, intended for PowerShell, Python, email body,
        extracted PDF/Office text in the future.
        """
        count = 0

        for key, source_type in (
            ("text_raw", SourceType.TEXT_RAW),
            ("text_normalized", SourceType.TEXT_NORMALIZED),
        ):
            for entry in self.analysis_results.get(key, []):
                content = entry.get("content", "")
                content_hash = entry.get("content_hash", "unknown")

                if isinstance(content, bytes):
                    content = content.decode('utf-8', errors='replace')

                for ioc in self.scraper.scrape(content, source_type, content_hash):
                    self.extracted_iocs.append(ioc)
                    count += 1

        return count

    def prepare_export_data(self, exporter_type: str) -> Any:
        """
        Prepare data for specific export type.

        Returns tuple for ClickHouse or list of dicts for Print/Elasticsearch.
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        if not self.extracted_iocs:
            return None

        now = datetime.now(timezone.utc)

        if exporter_type == "ClickHouseExporter":
            data = [
                [
                    self.sha256,
                    ioc.ioc_type.value,
                    ioc.ioc_value,
                    ioc.source_type.value,
                    ioc.source_identifier,
                    now,
                ]
                for ioc in self.extracted_iocs
            ]

            column_names = [
                "sha256",
                "ioc_type",
                "ioc_value",
                "source_type",
                "source_identifier",
                "extracted_at",
            ]

            column_type_names = [
                "FixedString(64)",
                "Enum8('ipv4'=1, 'ipv6'=2, 'fqdn'=3, 'url'=4, 'email'=5, 'server'=6, "
                "'hash_md5'=10, 'hash_sha1'=11, 'hash_sha256'=12, 'cve'=20, 'cwe'=21, 'cpe'=22, "
                "'crypto_btc'=30, 'crypto_eth'=31, 'crypto_xrp'=32, 'crypto_bch'=33, "
                "'crypto_ada'=34, 'crypto_substrate'=35, 'path_linux'=40, 'path_windows'=41, "
                "'registry_key'=42, 'onion'=50)",
                "String",
                "Enum8('decompiled_function'=1, 'disassembled_function'=2, 'string'=3, "
                "'text_raw'=4, 'text_normalized'=5)",
                "String",
                "DateTime64(3, 'UTC')",
            ]

            return (data, column_names, column_type_names)

        else:
            # For PrintExporter and others - return list of dicts
            return [
                {
                    "sha256": self.sha256,
                    "ioc_type": ioc.ioc_type.value,
                    "ioc_value": ioc.ioc_value,
                    "source_type": ioc.source_type.value,
                    "source_identifier": ioc.source_identifier,
                    "extracted_at": now.isoformat(),
                }
                for ioc in self.extracted_iocs
            ]

    def get_clickhouse_table(self) -> str:
        """Return the ClickHouse table name for IOCs."""
        return "redb_iocs"

    def tag(self) -> str:
        """Return the tag for this extractor."""
        return Tag.IOC.value if hasattr(Tag, 'IOC') else "ioc"

    def export_data(self) -> bool:
        """
        Export extracted IOCs to all configured exporters.

        Returns:
            True if export succeeded, False if failed, None if no data
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        # First extract the IOCs
        extracted = self.extract()

        if not extracted:
            self.log.debug("No IOCs extracted, skipping export")
            return None

        success = True

        from redb.extractors.database_exporters import PrintExporter, ClickHouseExporter

        for exporter in self.exporters:
            try:
                if isinstance(exporter, PrintExporter):
                    # For PrintExporter, pass the list of dicts
                    export_data = self.prepare_export_data("PrintExporter")
                    success &= exporter.export(export_data)

                elif isinstance(exporter, ClickHouseExporter):
                    # For ClickHouse, pass tuple with table info
                    export_data = self.prepare_export_data("ClickHouseExporter")
                    if export_data:
                        success &= exporter.export(
                            export_data,
                            table=self.get_clickhouse_table(),
                            column_names=export_data[1],
                            column_type_names=export_data[2]
                        )

            except Exception as e:
                self.log.error(f"Error exporting IOCs to {exporter.__class__.__name__}: {e}")
                success = False

        return success