Ran Wang

114 papers B 20C 3Journal 59Unranked 31
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Cogn. Commun. Netw.
Shiqi Tian, Ran Wang, Jie Hao, Qiang Wu, Dusit Niyato
2026 J jnl
IEEE Trans. Netw. Sci. Eng.
Liang Liu, Wenbin Zhai, Xin Li, Youwei Ding, Wanying Lu, Ran Wang
2026 J jnl
IEEE Internet Things J.
Wanyue Li, Shuyang Li, Jie Hao, Qiang Wu, Ran Wang
2026 J jnl
IEEE Trans. Netw. Sci. Eng.
Luting Cao, Yan Lyu, Jin Sun, Zhe Wang, Ran Wang, Guanyu Gao
2026 J jnl
Digit. Commun. Networks
Hao Liu, Xiaonyu Hu, Ran Wang, Jie Hao, Qiang Wu, Hongke Zhang
2026 J jnl
IEEE Trans. Cogn. Commun. Netw.
Yuhan Zhang, Ran Wang, Jie Hao, Qiang Wu, Zehui Xiong, Dusit Niyato
2026 J jnl
IEEE Trans. Mob. Comput.
Meng Yuan, Songjing Tao, Qiang Wu, Xiangbin Wang, Ran Wang, Jie Hao, Dusit Niyato
2026 J jnl
IEEE Trans. Image Process.
Chaojun Li, Peiliang Gong, Shengrong Li, Chunwei Tian, Yinbo Yu, Ran Wang, Daoqiang Zhang, Qi Zhu
2026 J jnl
IEEE Trans. Netw. Sci. Eng.
Lundan Cai, Ran Wang, Qiang Wu, Yidan Teng, Zehui Xiong
2025 J jnl
IEEE Trans. Veh. Technol.
Denghui Liu, Ruoyang Chen, Changyan Yi, Tong Zhang, Xiaolong Li, Juan Li, Ran Wang, Kun Zhu
2025 J jnl
IEEE Trans. Green Commun. Netw.
Jialiuyuan Li, Changyan Yi, Jiayuan Chen, You Shi, Tong Zhang, Xiaolong Li, Ran Wang, Kun Zhu
2025 conf
NPC (1)
Yuhan Zhang, Ran Wang, Jie Hao, Qiang Wu, Zehui Xiong, Jiawen Kang
2025 J jnl
IEEE Trans. Mob. Comput.
Shuyang Li, Qiang Wu, Ran Wang, Long Chen, Hongke Zhang
2025 J jnl
IEEE Internet Things J.
Shuyang Li, Guanchen Wu, Qiang Wu, Ran Wang, Hongke Zhang
2025 B conf
WCNC
Shuyang Li, Qiang Wu, Ran Wang
2025 conf
WASA (3)
Wanyue Li, Shuyang Li, Jie Hao, Qiang Wu, Ran Wang
2025 J jnl
IEEE Trans. Mob. Comput.
Guiliang Cai, Qiang Wu, Ran Wang, Lianyi Zhi, Xiaoming Fu, Hongke Zhang
2025 J jnl
IEEE Internet Things J.
Songjing Tao, Meng Yuan, Qiang Wu, Ran Wang, Jie Hao
2025 J jnl
IEEE Trans. Green Commun. Netw.
Ran Wang, Rixin Wu, Linfeng Liu, Changyan Yi, Kun Zhu, Ping Wang, Dusit Niyato
2025 J jnl
IEEE Trans. Intell. Transp. Syst.
Rixin Wu, Ran Wang, Jie Hao, Qiang Wu, Ping Wang, Dusit Niyato
2025 conf
ICSOC (2)
Yunkang Zhang, Qiang Wu, Ran Wang, Jie Hao, Hao Liu, Yiyun Xu
2025 conf
NPC (1)
Shengnan Cao, Qiang Wu, Ran Wang, Shuyang Li
2025 J jnl
IEEE Trans. Veh. Technol.
You Shi, Jian Wang, Changyan Yi, Ran Wang, Bing Chen
2025 J jnl
IEEE Internet Things J.
Xiangbin Wang, Qiang Wu, Meng Yuan, Ran Wang, Siyang Sun
2025 J jnl
IEEE Trans. Mob. Comput.
Ran Wang, Lundan Cai, Qiang Wu, Dusit Niyato
2025 J jnl
IEEE Trans. Mob. Comput.
Yuhan Zhang, Ran Wang, Jie Hao, Qiang Wu, Yidan Teng, Ping Wang, Dusit Niyato
2025 J jnl
IEEE Commun. Mag.
Shuyang Li, Qiang Wu, Ran Wang, Rongxing Lu
2024 J jnl
IEEE Netw.
Qiang Wu, Ran Wang, Xiangyang Duan, Changyan Yi, Ping Wang
2024 conf
ICCEIC
Lianyi Zhi, Qiang Wu, Ran Wang, Guiliang Cai
2024 J jnl
IEEE/ACM Trans. Netw.
Shuyang Li, Qiang Wu, Ran Wang
2024 J jnl
IEEE Trans. Multim.
Guanyu Gao, Yuqi Dong, Ran Wang, Xin Zhou
2024 conf
MSN
Mengjie Guo, Qiang Wu, Ran Wang, Rixin Wu, Hongke Zhang
2024 J jnl
IEEE Trans. Mob. Comput.
Ran Wang, Xue Yu, Qiang Wu, Changyan Yi, Ping Wang, Dusit Niyato
2024 J jnl
CoRR
Rixin Wu, Ran Wang, Jie Hao, Qiang Wu, Ping Wang, Dusit Niyato
2024 J jnl
IEEE Trans. Cogn. Commun. Netw.
Xue Yu, Ran Wang, Jie Hao, Qiang Wu, Changyan Yi, Ping Wang, Dusit Niyato
2024 J jnl
IEEE Trans. Wirel. Commun.
You Shi, Changyan Yi, Ran Wang, Qiang Wu, Bing Chen, Jun Cai
2023 conf
MobiArch
Tingli Xu, Ran Wang, Jie Hao
2023 J jnl
IEEE Trans. Veh. Technol.
Jiayuan Chen, Changyan Yi, Ran Wang, Kun Zhu, Jun Cai
2023 J jnl
IEEE Veh. Technol. Mag.
Ran Wang, Hui Wang, Kun Zhu, Changyan Yi, Ping Wang, Dusit Niyato
2023 B conf
WiOpt
Yuhan Zhang, Ran Wang, Qiang Wu, Jie Hao, Zehui Xiong
2023 J jnl
CoRR
Rixin Wu, Ran Wang, Jie Hao, Qiang Wu, Ping Wang
2022 conf
ICC
Jiayuan Chen, Changyan Yi, Ran Wang, Kun Zhu, Jun Cai
2022 J jnl
IEEE Trans. Mob. Comput.
Changyan Yi, Jun Cai, Kun Zhu, Ran Wang
2022 C conf
EUC
Chen Ying, Zhen Zhao, Changyan Yi, You Shi, Ran Wang
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Kun Zhu, Yue Zhou, Changyan Yi, Ran Wang
2022 B conf
GLOBECOM
Jian Zheng, Kun Zhu, Ran Wang
2022 conf
APWeb/WAIM Workshops
Rongtao Zhang, Jie Hao, Ran Wang, Hui Wang, Hai Deng, Shifang Lu
2022 J jnl
Inf. Sci.
Qi Zhu, Huijie Li, Haizhou Ye, Zhiqiang Zhang, Ran Wang, Zizhu Fan, Daoqiang Zhang
2022 J jnl
IEEE Wirel. Commun.
Qiang Wu, Ran Wang, Xincheng Yan, Chunming Wu, Rongxing Lu
2022 conf
WASA (3)
Wenqiu Zhang, Ran Wang, Changyan Yi, Kun Zhu
2022 J jnl
IEEE Trans. Intell. Transp. Syst.
Linfeng Liu, Zhiyuan Xi, Kun Zhu, Ran Wang, Ekram Hossain
2022 conf
APWeb/WAIM (2)
Rongtao Zhang, Jie Hao, Ran Wang, Hai Deng, Hui Wang
2022 conf
WASA (1)
Zhenxian Ma, Ran Wang, Changyan Yi, Kun Zhu
2022 B conf
WCNC
Hu Xu, Jiequ Ji, Kun Zhu, Ran Wang
2022 J jnl
IEEE Trans. Medical Imaging
Qi Zhu, Ruting Xu, Ran Wang, Xijia Xu, Zhiqiang Zhang, Daoqiang Zhang
2021 J jnl
Mob. Networks Appl.
Yang Li, Yunlong Zhao, Bin Guo, Zhenhua Zhang, Qian Geng, Ran Wang
2021 conf
WASA (2)
Hu Xu, Jiequ Ji, Kun Zhu, Ran Wang
2021 J jnl
Expert Syst. Appl.
Shoufei Han, Kun Zhu, Ran Wang
2021 conf
HPCC/DSS/SmartCity/DependSys
Zizhen Li, Ran Wang, Kun Zhu, Changyan Yi, Linfeng Liu, Dusit Niyato
2021 J jnl
IEEE Internet Things J.
Jiequ Ji, Kun Zhu, Dusit Niyato, Ran Wang
2021 B conf
WCNC
Aijin Zhang, Kun Zhu, Ran Wang, Changyan Yi
2021 B conf
GLOBECOM
Hui Wang, Ran Wang, Hu Xu, Kun Zhu, Changyan Yi, Dusit Niyato
2021 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Yue Cao, Tao Jiang, Omprakash Kaiwartya, Hongjian Sun, Huan Zhou, Ran Wang
2020 J jnl
IEEE Commun. Lett.
Meng Chen, Kun Zhu, Ran Wang, Dusit Niyato
2020 conf
WASA (1)
Zhitian Tu, Kun Zhu, Changyan Yi, Ran Wang
2020 conf
VTC Fall
Changyan Yi, Jun Cai, Ran Wang, Kun Zhu
2020 B conf
GLOBECOM
Chengzhen Xu, Kun Zhu, Changyan Yi, Ran Wang
2020 conf
ICC
Chengzhen Xu, Kun Zhu, Ran Wang, Yuanyuan Xu
2020 J jnl
IEEE Trans. Wirel. Commun.
Jiequ Ji, Kun Zhu, Dusit Niyato, Ran Wang
2020 conf
ICC
Jiequ Ji, Kun Zhu, Dusit Niyato, Ran Wang
2020 B conf
GLOBECOM
Jiequ Ji, Kun Zhu, Changyan Yi, Ran Wang, Dusit Niyato
2020 J jnl
Comput. Networks
Linfeng Liu, Ran Wang, Gaoxi Xiao, Dongyue Guo
2020 B conf
GLOBECOM
Ang Ji, Ran Wang, Kun Zhu, Zehui Xiong, Dusit Niyato
2020 J jnl
IEEE Trans. Commun.
Jiequ Ji, Kun Zhu, Dusit Niyato, Ran Wang
2019 J jnl
Wirel. Commun. Mob. Comput.
Linfeng Liu, Ping Zhou, Jiagao Wu, Ran Wang, Xiaojun Fan, Haiting Zhu
2019 conf
SmartGridComm
Bijian Dai, Ran Wang, Kun Zhu, Jie Hao, Ping Wang
2019 J jnl
Sensors
Jie Hao, Jing Chen, Ran Wang, Yi Zhuang, Baoxian Zhang
2019 conf
MLICOM
Jing Chen, Jie Hao, Ran Wang, Ao Shen, Ze Yu
2019 J jnl
J. Parallel Distributed Comput.
Linfeng Liu, Ran Wang, Jiagao Wu
2019 J jnl
IEEE Trans. Cogn. Commun. Netw.
Chen Dai, Kun Zhu, Ran Wang, Bing Chen
2019 conf
ICC
Chen Dai, Kun Zhu, Ran Wang, Yuanyuan Xu
2019 B conf
WCNC
Chen Dai, Kun Zhu, Ran Wang, Yuanyuan Xu
2019 conf
HPCC/SmartCity/DSS
Na Wang, Kun Zhu, Hongyan Qian, Ran Wang, Yuanyuan Xu
2019 B conf
ICPADS
Jun Qian, Kun Zhu, Ran Wang, Yanchao Zhao
2019 conf
MSN
Jinwei Xu, Kun Zhu, Ran Wang
2019 conf
SmartGridComm
Yueyu Deng, Kun Zhu, Ran Wang, Yong Wan
2019 B conf
GLOBECOM
Shan Li, Kun Zhu, Yuanyuan Xu, Ran Wang, Yanchao Zhao
2018 conf
iThings/GreenCom/CPSCom/SmartData
Xiaoming Yuan, Ran Wang, Yi Zhuang, Kun Zhu, Jie Hao
2018 C conf
CSCWD
Linfeng Liu, Ping Zhou, Jiagao Wu, Ran Wang, Xiaojun Fan, Haiting Zhu
2018 C conf
GPC
Zhenhua Zhang, Yunlong Zhao, Yang Li, Kun Zhu, Ran Wang
2018 J jnl
IEEE Access
Ran Wang, Yiwen Lu, Kun Zhu, Jie Hao, Ping Wang, Yue Cao
2018 J jnl
Wirel. Commun. Mob. Comput.
Jie Hao, Ran Wang, Baoxian Zhang, Yi Zhuang, Bing Chen
2018 B conf
GLOBECOM
Zhenzhen Li, Kun Zhu, Ran Wang, Yuanyuan Xu
2018 J jnl
Wirel. Commun. Mob. Comput.
Jiequ Ji, Kun Zhu, Ran Wang, Bing Chen, Chen Dai
2018 conf
iThings/GreenCom/CPSCom/SmartData
Jiequ Ji, Kun Zhu, Ran Wang, Bing Chen, Chen Dai
2018 conf
iThings/GreenCom/CPSCom/SmartData
Yiwen Lu, Ran Wang, Ping Wang, Yue Cao, Jie Hao, Kun Zhu
2018 conf
ICC
Chengqing Wu, Ran Wang, Ping Wang, Yue Cao, Linfeng Liu, Kun Zhu, Bing Chen
2018 J jnl
J. Parallel Distributed Comput.
Linfeng Liu, Ran Wang, Jiagao Wu
2018 J jnl
Wirel. Commun. Mob. Comput.
Longteng Xu, Kun Zhu, Ran Wang, Shimin Gong
2018 B conf
WCNC
Longteng Xu, Kun Zhu, Ran Wang, Shimin Gong
2017 B conf
IWCMC
Yue Cao, Xu Zhang, Ran Wang, Linyu Peng, Nauman Aslam, Xiaomin Chen
2017 B conf
GLOBECOM
Ran Wang, Gaoxi Xiao, Ping Wang, Yue Cao, Guoqi Li, Jie Hao, Kun Zhu
2017 B conf
GLOBECOM
Mengyun Sun, Hongyan Qian, Kun Zhu, Donghai Guan, Ran Wang
2017 J jnl
IEEE Trans. Veh. Technol.
Ran Wang, Gaoxi Xiao, Ping Wang
2017 J jnl
Comput. Networks
Linfeng Liu, Ping Wang, Ran Wang
2017 J jnl
IEEE Wirel. Commun.
Yue Cao, Omprakash Kaiwartya, Ran Wang, Tao Jiang, Yang Cao, Nauman Aslam, Graham Sexton
2017 B conf
GLOBECOM
Xuan Zhang, Hongyan Qian, Kun Zhu, Ran Wang, Yang Zhang
2017 B conf
WCNC
Kun Zhu, Zijing Cheng, Bing Chen, Ran Wang
2016
Ran Wang
2016 B conf
SECON
Linfeng Liu, Ran Wang, Dongyue Guo, Xiaojun Fan
2016 J jnl
IEEE Trans. Veh. Technol.
Ran Wang, Ping Wang, Gaoxi Xiao
2014 conf
ICCVE
Ran Wang, Ping Wang, Gaoxi Xiao
2013 conf
SmartGridComm
Ran Wang, Yifan Li, Ping Wang, Dusit Niyato
2012 conf
SmartGridComm
Yifan Li, Ran Wang, Ping Wang, Dusit Niyato, Walid Saad, Zhu Han
redb/extractors/js_extractor.py
← Index redb/extractors/js_extractor.py python
import logging
import re
from abc import ABCMeta, abstractmethod

from redb.extractors.extractor import Extractor
from redb.extractors.js_extractors.js_context import JSContext, _text_entropy

logger = logging.getLogger(__name__)

# ESM is recognised by line-anchored `import ... from "..."` / bare side-effect
# `import "..."` / top-level `export ...`. Anchored at line start to avoid
# matching the substring inside string literals or comments.
_ESM_PATTERN = re.compile(
    r'(?m)^\s*(?:'
    r'import\s+[^;\n]*?\bfrom\s+[\'"]'
    r'|import\s+[\'"][^\'"]+[\'"]'
    r'|export\s+(?:default\b|\{|\*|const\b|let\b|var\b|function\b|class\b|async\b)'
    r')'
)


@abstractmethod
class JSExtractor(Extractor, metaclass=ABCMeta):
    """Base class for JavaScript file extractors.

    Every JSExtractor reads its raw materials (bytes / decoded source / line
    list / scan_source results / pyjsparser AST / text entropy) from a shared
    `JSContext`. When workers.py drives the JS pipeline it builds one context
    per sample and threads it into every extractor via `context=`. When tests
    or other callers instantiate an extractor directly, the constructor builds
    a fresh context from `(filepath, source=...)`.

    All historical instance attributes (`self.binary`, `self.js_source`,
    `self.lines`) and helpers (`self._decode_source`, `self._parse_ast`,
    `self._calculate_text_entropy`) are preserved as thin delegators so
    existing extractor code keeps working unchanged.
    """

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        known_benign=False,
        known_malicious=False,
        source=None,
        context=None,
    ):
        if context is None:
            context = JSContext.from_path(filepath, log=log, source=source)
        elif source is not None and context.source != source:
            log.warning(
                "JSExtractor received both `source=` and `context=` with "
                "differing source; ignoring source kwarg"
            )
        self._context = context

        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            known_benign=known_benign,
            known_malicious=known_malicious,
        )

    @property
    def binary(self):
        return self._context.raw_bytes

    @property
    def js_source(self):
        return self._context.source

    @property
    def lines(self):
        return self._context.lines

    def _decode_source(self):
        """Back-compat shim — the context already decoded once at construction.

        Kept so any external caller using the historical method name keeps
        working without touching the underlying bytes again.
        """
        return self._context.source

    def _parse_ast(self):
        """Return the shared pyjsparser AST (or None if unavailable)."""
        return self._context.ast

    def _calculate_text_entropy(self, text):
        """Shannon text entropy for `text`.

        When `text` is the context's own source we read the cached value;
        otherwise we compute fresh. JSStringsExtractor calls this on arbitrary
        decoded substrings, so the fresh-compute path must remain available.
        """
        if text is self._context.source:
            return self._context.text_entropy
        return _text_entropy(text)

    def _detect_environment(self):
        """Detect the target JS runtime environment."""
        src = self.js_source
        if not src:
            return "unknown"

        # WScript/WSH indicators
        wscript_patterns = [
            'WScript.', 'WSH.', 'ActiveXObject', 'Scripting.FileSystemObject',
            'WScript.Shell', 'ADODB.Stream',
        ]
        for p in wscript_patterns:
            if p in src:
                return "wscript"

        # Browser-extension APIs — checked before generic browser/worker because
        # `chrome.*` and `browser.runtime` are distinctive of MV2/MV3 extensions
        extension_patterns = [
            'chrome.runtime', 'chrome.tabs', 'chrome.storage',
            'chrome.webRequest', 'browser.runtime', 'browser.tabs',
        ]
        for p in extension_patterns:
            if p in src:
                return "browser_extension"

        # Service / Web Workers — worker-only APIs that don't appear in regular
        # browser pages (a generic browser script would use `window.` or
        # `document.`, never `self.importScripts` or `caches.match`)
        worker_patterns = [
            "self.addEventListener('fetch'", 'self.addEventListener("fetch"',
            'self.importScripts', 'self.skipWaiting',
            'caches.match', 'caches.open',
        ]
        for p in worker_patterns:
            if p in src:
                return "service_worker"

        # Deno runtime
        if 'Deno.' in src:
            return "deno"

        # Node.js indicators
        node_patterns = [
            'require(', 'module.exports', 'process.env', '__dirname',
            '__filename', 'Buffer.', 'child_process',
        ]
        for p in node_patterns:
            if p in src:
                return "node"

        # Browser indicators
        browser_patterns = [
            'document.', 'window.', 'navigator.', 'localStorage',
            'sessionStorage', 'XMLHttpRequest', 'addEventListener',
        ]
        for p in browser_patterns:
            if p in src:
                return "browser"

        return "unknown"

    def _detect_script_type(self):
        """Detect the script type/format."""
        src = self.js_source
        if not src:
            return "unknown"

        stripped = src.lstrip()

        # JScript.Encode payload — must be checked first since the encoded
        # body can't be classified any other way
        if stripped.startswith('#@~^'):
            return "jse"

        # WSF / HTA live in the first few KB of an HTML-ish wrapper
        head_lower = stripped[:4096].lower()

        # Windows Script File — XML wrapper around one or more <script> blocks
        if ('<job' in head_lower or '<package' in head_lower) and '<script' in head_lower:
            return "wsf"

        # HTML Application — distinct from generic embedded_html because HTAs
        # run under mshta.exe with full WSH/ActiveX access
        if '<hta:application' in head_lower or 'application/hta' in head_lower:
            return "hta"

        if stripped.startswith('<!') or stripped.startswith('<html') or '<script' in stripped[:2000]:
            return "embedded_html"

        if 'WScript.' in src or 'WSH.' in src:
            return "wscript"

        if _ESM_PATTERN.search(src):
            return "esm"

        if 'require(' in src or 'module.exports' in src:
            return "node_module"

        return "standalone"