Weifeng Sun

54 papers B 4C 2Misc 1Journal 25Unranked 22
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Consumer Electron.
Wahib Jamal Khan, Weifeng Sun, Meshari Huwaytim Alanazi, Muhammad Shahid Anwar, Mueen Uddin, Naqash Younas
2024 J jnl
IEEE Trans. Software Eng.
He Jiang, Zun Wang, Zhide Zhou, Xiaochen Li, Shikai Guo, Weifeng Sun, Tao Zhang
2022 J jnl
IEEE Internet Things J.
Weifeng Sun, Guanghao Zhang, Kelong Meng, Guangjie Han, Tie Qiu
2022 J jnl
CoRR
Yuqing Liu, Wei Zhang, Weifeng Sun, Zhikai Yu, Jianfeng Wei, Shengquan Li
2022 conf
WASA (2)
Weifeng Sun, Kelong Meng, Ailian Wang
2021 J jnl
Comput. Networks
Weifeng Sun, Zun Wang, Guanghao Zhang
2021 J jnl
CoRR
Boxiang Dong, Wendy Hui Wang, Aparna S. Varde, Dawei Li, Bharath K. Samanthula, Weifeng Sun, Liang Zhao
2021 conf
CWSN
Weifeng Sun, Jianqiao Ding, Jia Cao, Kelong Meng, Chi Lin
2021 B conf
IJCNN
Weifeng Sun, Shumiao Yu, Boxiang Dong
2020 B conf
GLOBECOM
Weifeng Sun, Shumiao Yu, Jin Yang, Boxiang Dong
2020 J jnl
Sensors
Weifeng Sun, Min Tang, Lijun Zhang, Zhiqiang Huo, Lei Shu
2020 conf
6GN
Weifeng Sun, Guanghao Zhang, Yiming Zhou, Rui Guo
2020 J jnl
Int. J. Big Data Intell.
Allen Yang, Boxiang Dong, Dawei Li, Weifeng Sun, Bharath K. Samanthula
2020 conf
INFOCOM Workshops
MingHan Jia, Weifeng Sun, Zun Wang, Yaohua Yan, Hongyu Qin, Kelong Meng
2020 conf
INFOCOM Workshops
Weifeng Sun, Guanghao Zhang, Yuankui Zhang, Chi Lin
2020 conf
SmartIoT
Weifeng Sun, MingHan Jia, Guanghao Zhang, Zun Wang
2019 conf
SmartIoT
Weifeng Sun, MingHan Jia, Shumiao Yu, Guanghao Zhang, Tie Qiu
2019 conf
CSS (2)
Weifeng Sun, MingHan Jia, Shumiao Yu, Boxiang Dong, Xinyi Li
2019 C conf
ADMA
Weifeng Sun, Zun Wang, Guanghao Zhang, Boxiang Dong
2019 J jnl
Sensors
Weifeng Sun, Shumiao Yu, Yuanxun Xing, Zhenquan Qin
2018 conf
CyberC
Shumiao Yu, Weifeng Sun, MingHan Jia
2017 J jnl
J. Netw. Comput. Appl.
Weifeng Sun, Chi Zhou, Tie Qiu, Yuqing Liu
2015 conf
ITNG
Mingchu Li, Wei Jia, Cheng Guo, Weifeng Sun, Xing Tan
2014 C conf
NPC
Weifeng Sun, Danchuang Zhang, Ning Zhang, Qingqing Zhang, Tie Qiu
2014 J jnl
Ad Hoc Sens. Wirel. Networks
Yuanfang Chen, Mingchu Li, Shaojie Tang, Weifeng Sun
2014 conf
iThings/GreenCom/CPSCom
Weifeng Sun, Haotian Wang, Xiaomin Han, Tie Qiu
2013 J jnl
J. Digit. Inf. Manag.
Zhenquan Qin, Wenjing Liu, Huizhen Jiang, Weifeng Sun
2013 B conf
IWCMC
Weifeng Sun, Haotian Wang, Ning Zhang, Dongdong Tang, Lei Shu
2013 J jnl
Int. J. Comput. Commun. Control
Weifeng Sun, Peng Zhang, Zhenquan Qin, Yuanfang Chen, Da Teng
2013 J jnl
Wirel. Pers. Commun.
Tie Qiu, Weifeng Sun, Yuanchao Bai, Yu Zhou
2013 J jnl
CoRR
Weifeng Sun, Feng Xia, Jianhua Ma, Tong Fu, Yu Sun
2013 J jnl
Secur. Commun. Networks
Xinxin Fan, Mingchu Li, Hui Zhao, Xiaodong Chen, Zhenzhou Guo, Dong Jiao, Weifeng Sun
2013 J jnl
Comput. Electr. Eng.
Tie Qiu, Lin Feng, He Jiang, Weifeng Sun
2012 J jnl
J. Comput.
Weifeng Sun, Qiufen Xia, Zichuan Xu, Mingchu Li, Zhenquan Qin
2012 J jnl
KSII Trans. Internet Inf. Syst.
Yanhong Ding, Tie Qiu, He Jiang, Weifeng Sun
2012 J jnl
Int. J. Commun. Syst.
Weifeng Sun, Tong Fu, Feng Xia, Zhenquan Qin, Rong Cong
2012 J jnl
KSII Trans. Internet Inf. Syst.
Weifeng Sun, Feng Xia, Jianhua Ma, Tong Fu, Yu Sun
2012 B conf
TrustCom
Linlin Tian, Mingchu Li, Weifeng Sun, Xiaowei Zhao, Baohui Wang, Jianhua Ma
2012 Misc conf
ICNC
Mingyang Sun, Weifeng Sun, Lei Shu, Mingchu Li, Lei Xue
2012 conf
LCN Workshops
Weifeng Sun, Haotian Wang, Mingchu Li, Mengci Zhou, Zhenquan Qin
2011 J jnl
J. Digit. Inf. Manag.
Weifeng Sun, Cheng Guo, Peng Zhang, Ning Zhang, Haotian Wang
2011 conf
iThings/CPSCom
Weifeng Sun, Tong Fu, Yu Su, Feng Xia, Jianhua Ma
2010 conf
IIH-MSP
Weifeng Sun, Boxiang Dong, Zhenquan Qin, Juanyun Wang, Mingchu Li
2010 J jnl
Int. J. Inf. Process. Manag.
Weifeng Sun, Juanyun Wang, Boxiang Dong, Mingchu Li, Zhenquan Qin
2010 conf
PAAP
Qiufen Xia, Weifeng Sun, Zichuan Xu, Mingchu Li
2010 conf
PAAP
Weifeng Sun, Yudan Zhu, Zhiyuan Su, Dong Jiao, Mingchu Li
2010 conf
ICUMT
Zhenquan Qin, Lin Li, Weifeng Sun, Lei Wang
2010 conf
IIH-MSP
Zhenquan Qin, Lei Wang, Mingchu Li, Weifeng Sun
2010 conf
WICON
Feng Xia, Zhenzhen Xu, Lin Yao, Weifeng Sun, Mingchu Li
2010 conf
UIC/ATC Workshops
Weifeng Sun, Rong Cong, Feng Xia, Xiao Chen, Zhenquan Qin
2010 J jnl
CoRR
Weifeng Sun, Rong Cong, Feng Xia, Xiao Chen, Zhenquan Qin
2009 conf
NCM
Jinpei Pan, Mingchu Li, Weifeng Sun, Jing Hu
2009 conf
GCC
Jing Hu, Mingchu Li, Weifeng Sun, Yuanfang Chen
2009 J jnl
CoRR
Feng Xia, Zhenzhen Xu, Lin Yao, Weifeng Sun, Mingchu Li
tests/unit/conftest.py
← Index tests/unit/conftest.py python
"""
Unit test configuration.

Replaces the redb.extractors package with a minimal stub so that
``from redb.extractors.database_exporters import ...`` works without
pulling in the heavy __init__.py import chain (pefile, elftools,
signify, magic, etc.).

Also stubs out redb.settings so that Elasticsearch / ClickHouse
clients are never actually created during unit tests.

Additionally installs binaryninja stubs for decompiler unit tests.

Stubs heavy third-party packages (pefile, magic, psutil, etc.) so that
redb.workers, redb.queries, redb.ingestor, and redb.s3_utils can all
be imported and patched in unit tests without requiring the real packages.
"""
import sys
import types
from pathlib import Path
from unittest.mock import MagicMock

# ---------------------------------------------------------------------------
# 0. Install binaryninja stubs FIRST — must happen before any decompiler
#    module is imported (triggered by __init__.py chain).
# ---------------------------------------------------------------------------
from tests.unit.conftest_binja_stubs import install_binja_stubs as _install_binja_stubs
_install_binja_stubs()

# ---------------------------------------------------------------------------
# 1. Stub external packages required by database_exporters.py itself,
#    the decompiler chain, and the workers/ingestor modules.
# ---------------------------------------------------------------------------
_heavy_deps = [
    # Database / networking
    "elasticsearch", "clickhouse_connect", "dotenv",
    # Binary analysis — top-level packages
    "pefile", "magic", "machofile",
    # Archive handling
    "py7zr", "pyzipper",
    # File type detection
    "magika",
    # System monitoring
    "psutil",
    # S3 / MinIO (submodule paths needed for `from minio.error import S3Error`)
    "minio", "minio.error",
    # YARA
    "yara_x",
    # Binary parsing — elftools tree
    "elftools", "elftools.elf", "elftools.elf.elffile",
    "elftools.common", "elftools.common.exceptions",
    # Code signing — signify tree
    "signify", "signify.fingerprinter", "signify.authenticode",
    # LIEF
    "lief",
    # Fuzzy hashing
    "ppdeep",
    # .NET analysis
    "dotnetfile",
    # Crypto / ASN.1
    "asn1crypto", "asn1crypto.cms", "asn1crypto.pem", "asn1crypto.x509", "asn1crypto.core",
    # Hashing
    "xxhash", "blake3", "mmh3", "numpy",
    # APK analysis
    "androguard", "androguard.core", "androguard.core.apk",
    "androguard.core.dex", "androguard.core.api_specific_resources",
    "androguard.misc",
    "permhash",
]
for _mod in _heavy_deps:
    if _mod not in sys.modules:
        try:
            __import__(_mod)
        except (ImportError, ModuleNotFoundError):
            sys.modules[_mod] = MagicMock()

# Stub urllib3 with a real Warning subclass (warnings.filterwarnings needs a class)
if "urllib3" not in sys.modules or isinstance(sys.modules.get("urllib3"), MagicMock):
    try:
        import urllib3  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _urllib3_mod = types.ModuleType("urllib3")
        _urllib3_exc = types.ModuleType("urllib3.exceptions")

        class _InsecureRequestWarning(UserWarning):
            pass

        _urllib3_exc.InsecureRequestWarning = _InsecureRequestWarning
        _urllib3_mod.exceptions = _urllib3_exc
        sys.modules["urllib3"] = _urllib3_mod
        sys.modules["urllib3.exceptions"] = _urllib3_exc

# Provide a functional ppdeep stub (tests call ppdeep.hash() and expect a string).
# Must overwrite the MagicMock that the loop above may have installed.
_ppdeep_existing = sys.modules.get("ppdeep")
if _ppdeep_existing is None or isinstance(_ppdeep_existing, MagicMock):
    _ppdeep_mod = types.ModuleType("ppdeep")
    _ppdeep_mod.__name__ = "ppdeep"

    def _ppdeep_hash(data):
        """Fake ssdeep hash — returns a deterministic placeholder."""
        if isinstance(data, str):
            data = data.encode("utf-8")
        if len(data) < 50:
            return None
        import hashlib
        h = hashlib.md5(data).hexdigest()
        return f"3:{h[:16]}:{h[16:]}"

    _ppdeep_mod.hash = _ppdeep_hash
    sys.modules["ppdeep"] = _ppdeep_mod

# Stub mmh3 if the C extension is not available
_mmh3_existing = sys.modules.get("mmh3")
if _mmh3_existing is None or isinstance(_mmh3_existing, MagicMock):
    _mmh3_mod = types.ModuleType("mmh3")
    _mmh3_mod.__name__ = "mmh3"

    def _mmh3_hash(data, seed=0):
        """Fake MurmurHash3 — deterministic hash using built-in hashlib."""
        import hashlib
        if isinstance(data, str):
            data = data.encode("utf-8")
        seed_bytes = (seed & 0xFFFFFFFF).to_bytes(8, "little")
        h = hashlib.md5(data + seed_bytes).digest()
        return int.from_bytes(h[:4], "little", signed=True)

    _mmh3_mod.hash = _mmh3_hash
    sys.modules["mmh3"] = _mmh3_mod

# Stub tlsh if the C extension is not available
if "tlsh" not in sys.modules:
    try:
        import tlsh as _real_tlsh  # noqa: F401
    except (ImportError, ModuleNotFoundError):
        _tlsh_mock = types.ModuleType("tlsh")
        _tlsh_mock.__name__ = "tlsh"

        def _tlsh_hash(data):
            """Fake TLSH hash — returns a deterministic placeholder.

            Returns empty string for data < 50 bytes or data with very
            low entropy (e.g. repeating patterns), mimicking the real
            TLSH library's "TNULL" behaviour.
            """
            if isinstance(data, str):
                data = data.encode("utf-8")
            if len(data) < 50:
                return ""
            # Real TLSH returns "" for low-entropy input
            if len(set(data)) < 8:
                return ""
            import hashlib
            return "T1" + hashlib.sha256(data).hexdigest()[:70].upper()

        _tlsh_mock.hash = _tlsh_hash
        sys.modules["tlsh"] = _tlsh_mock

# ---------------------------------------------------------------------------
# 2. Stub redb.settings (package) so module-level code never runs
# ---------------------------------------------------------------------------
_settings_mock = MagicMock()
_settings_mock.__name__ = "redb.settings"
sys.modules["redb.settings"] = _settings_mock
sys.modules["redb.settings.elasticsearch"] = MagicMock()
sys.modules["redb.settings.clickhouse"] = MagicMock()

# ---------------------------------------------------------------------------
# 3. Replace redb.extractors with a minimal package that does NOT eagerly
#    import every extractor (and their heavy deps).  Sub-module imports
#    like ``from redb.extractors.database_exporters import ...`` still work
#    because __path__ points to the real package directory.
# ---------------------------------------------------------------------------
_repo_root = Path(__file__).resolve().parents[2]
_extractors_pkg = types.ModuleType("redb.extractors")
_extractors_pkg.__path__ = [str(_repo_root / "redb" / "extractors")]
_extractors_pkg.__package__ = "redb.extractors"
sys.modules["redb.extractors"] = _extractors_pkg

# ---------------------------------------------------------------------------
# 4. Force-import redb submodules so that @patch('redb.workers.xxx'),
#    @patch('redb.queries.xxx'), etc. can resolve at decoration time.
#    This works because all heavy deps are already stubbed above.
# ---------------------------------------------------------------------------
import redb.logging_utils   # noqa: F401, E402
import redb.s3_utils         # noqa: F401, E402
import redb.queries          # noqa: F401, E402
import redb.workers          # noqa: F401, E402
import redb.ingestor         # noqa: F401, E402