Weipeng Liu

32 papers Journal 28Unranked 4
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eng. Appl. Artif. Intell.
Xinmeng Ma, Yupeng Zhang, Weipeng Liu, Ning Zong, Yang Chang, Libin Zhao
2026 J jnl
Robotics Comput. Integr. Manuf.
Quanzhi Sun, Weipeng Liu, Tao Peng, Peng Zhao
2026 J jnl
Inf. Fusion
Ruizhi Wang, Zhenghua Xu, Xiangtao Wang, Weipeng Liu, Thomas Lukasiewicz
2026 J jnl
J. Intell. Manuf.
Rui Wang, Ruichen Mi, Hao Xu, Zhonglin Gao, Weipeng Liu, Tao Liang, Kun Liu
2026 J jnl
Fuzzy Sets Syst.
Weili Yang, Weipeng Liu, Cailu Wang
2026 J jnl
Biomed. Signal Process. Control.
Yuan Wang, Haixing Zhu, Hongwei Yang, Kun Liu, Weipeng Liu
2026 J jnl
CoRR
Weipeng Liu, Upendra Prasad, Yutian Liu, Yong Dong, Haoran Zhao, Lei Wu
2026 J jnl
Knowl. Based Syst.
Zhenghua Xu, Hexiang Zhang, Runhe Yang, Weipeng Liu, Thomas Lukasiewicz
2026 J jnl
J. Comput. Appl. Math.
Weili Yang, Yuegang Tao, Weipeng Liu
2025 J jnl
Knowl. Based Syst.
Zhenghua Xu, Hening Wang, Runhe Yang, Yuchen Yang, Weipeng Liu, Thomas Lukasiewicz
2025 J jnl
IEEE Trans. Reliab.
Dequan Zhang, Zhijie Hao, Yunfei Liang, Fang Wang, Weipeng Liu, Xu Han
2025 J jnl
Comput. Ind. Eng.
Hao Wang, Tao Peng, Xinyu Li, Junke He, Weipeng Liu, Renzhong Tang
2025 J jnl
Multim. Syst.
Qinglong Xu, Haixing Zhu, Yuan Wang, Zhongjie Shi, Weipeng Liu
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Haixing Zhu, Weipeng Liu, Zhifan Gao, Heye Zhang
2025 J jnl
J. Intell. Manuf.
Kun Liu, Ying Yang, Xiaosong Yang, Jingkai Wang, Weipeng Liu, Haiyong Chen
2025 J jnl
IEEE Trans. Netw. Sci. Eng.
Zhenghua Xu, Runhe Yang, Zihang Xu, Shuo Zhang, Yuchen Yang, Weipeng Liu, Weichao Xu, Junyang Chen, Thomas Lukasiewicz, Victor C. M. Leung
2025 J jnl
Robotics Comput. Integr. Manuf.
Haonan Wang, Quanzhi Sun, Jun Wu, Xuxia Zhang, Weipeng Liu, Tao Peng, Renzhong Tang
2025 J jnl
Expert Syst. Appl.
Siqi Liu, Shoujun Zhou, Yuan-Quan Wang, Ke Lu, Weipeng Liu, Zhida Wang
2024 conf
CASE
Haonan Wang, Jun Wu, Quanzhi Sun, Weipeng Liu, Tao Peng, Renzhong Tang
2024 J jnl
IEEE Trans. Comput. Biol. Bioinform.
Xiujian Liu, Tianyuan Feng, Weipeng Liu, Liang Song, Yixuan Yuan, William Kongto Hau, Javier Del Ser, Zhifan Gao
2023 conf
ICSIM
Yawei Chang, Weipeng Liu, Huan Hu, Haibin Liu
2023 J jnl
IEEE Trans. Medical Imaging
Gui-Bin Bian, Li Zhang, He Chen, Zhen Li, Pan Fu, Wen-Qian Yue, Yu-Wen Luo, Pei-Cong Ge, Weipeng Liu
2022 J jnl
J. Frankl. Inst.
He Chen, Ran Zhang, Weipeng Liu, Haiyong Chen
2022 conf
ASCC
Kun Liu, Junfei Xie, Mei Chen, Haiyong Chen, Weipeng Liu
2021 J jnl
IEEE Wirel. Commun.
Chenxi Huang, Yongshuo Zong, Jinling Chen, Weipeng Liu, Jaime Lloret, Mithun Mukherjee
2021 J jnl
IEEE Access
Wa Zhang, He Chen, Haiyong Chen, Weipeng Liu
2021 J jnl
IEEE Trans. Ind. Informatics
Binyi Su, Haiyong Chen, Peng Chen, Gui-Bin Bian, Kun Liu, Weipeng Liu
2021 J jnl
IEEE Trans. Instrum. Meas.
Binyi Su, Haiyong Chen, Kun Liu, Weipeng Liu
2019 J jnl
Future Gener. Comput. Syst.
Weipeng Liu, Yaoguang Su, Wanqing Wu, Chen Xin, Zeng-Guang Hou, Gui-Bin Bian
2019 J jnl
IEEE Trans. Instrum. Meas.
Binyi Su, Haiyong Chen, Yifan Zhu, Weipeng Liu, Kun Liu
2018 J jnl
IEEE Access
Haiyong Chen, Yuejiao Cui, Ruina Qiu, Peng Chen, Weipeng Liu, Kun Liu
2010 conf
ISIA
Weipeng Liu
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

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

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

            column_type_names = [
                'String', 'String', 'String', 'Nullable(String)',
                'Array(FixedString(64))', 'Array(LowCardinality(String))', 'Array(LowCardinality(String))',
                'Nullable(UInt8)', 'Nullable(String)', 'String',
                'UInt64', 'Float64', 'LowCardinality(String)',
                'LowCardinality(String)', 'LowCardinality(String)',
                'DateTime64(3, \'UTC\')',
                'DateTime64(3, \'UTC\')'
            ]

            return data, column_names, column_type_names

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