Weidong Li

140 papers B 2C 12Misc 7Journal 97Unranked 22
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Serv. Comput.
Jixian Zhang, Xuelin Yang, Weidong Li, Wenzhong Li
2026 J jnl
Future Gener. Comput. Syst.
Qian Su, Weidong Li, Xiang Zhang, Guangqin Hu, Xuejie Zhang
2026 J jnl
Eur. J. Oper. Res.
Jinwen Ou, Weidong Li, Xueling Zhong
2026 J jnl
Comput. Oper. Res.
Zhikang Zhang, Weidong Li
2026 J jnl
IEEE Trans. Netw. Serv. Manag.
Hao Guo, Guangqin Hu, Weidong Li
2026 J jnl
Eur. J. Oper. Res.
Jinwen Ou, Weidong Li
2026 J jnl
IEEE Trans. Netw. Serv. Manag.
Xi Liu, Jun Liu, Weidong Li
2025 J jnl
IEEE Trans. Serv. Comput.
Jixian Zhang, Xuelin Yang, Peng Chen, Zhemin Wang, Weidong Li, Zhenli He, Keqin Li
2025 J jnl
Concurr. Comput. Pract. Exp.
Bin Deng, Hao Guo, Weidong Li
2025 C conf
TAMC
Hanyin Xiao, Ruiqing Sun, Zhikang Zhang, Weidong Li
2025 conf
IJTCS-FAW
Hanyin Xiao, Jiaming Zhang, Zhikang Zhang, Weidong Li
2025 J jnl
IEEE Trans. Mob. Comput.
Jixian Zhang, Peng Chen, Xuelin Yang, Hao Wu, Weidong Li
2025 J jnl
J. Comb. Optim.
Bin Deng, Weidong Li
2025 conf
COCOON (2)
Xiaofei Liu, Weidong Li
2025 J jnl
RAIRO Oper. Res.
Weidong Li, Ruiqing Sun
2025 J jnl
IEEE Trans. Cloud Comput.
Xi Liu, Jun Liu, Weidong Li
2025 J jnl
IEEE Internet Things J.
Xi Liu, Jun Liu, Zhiquan Liu, Weidong Li
2025 J jnl
IEEE Trans. Parallel Distributed Syst.
Bin Deng, Weidong Li
2025 conf
COCOON (1)
Zheng Chen, Bin Deng, Bo Li, Minming Li, Weidong Li, Guochuan Zhang
2025 C conf
TAMC
Zhikang Zhang, Weidong Li
2025 J jnl
CCF Trans. High Perform. Comput.
Bin Deng, Guangqin Hu, Weidong Li, Jin Xu
2025 J jnl
Clust. Comput.
Hao Guo, Bin Deng, Weidong Li
2025 J jnl
IEEE Trans. Consumer Electron.
Xi Liu, Jun Liu, Weidong Li
2025 J jnl
IEEE Trans. Comput. Soc. Syst.
Peng Chen, Jixian Zhang, Weidong Li, Hao Wu
2025 J jnl
Discret. Appl. Math.
Weidong Li, Yaru Yang, Man Xiao, Xin Chen, Malgorzata Sterna, Jacek Blazewicz
2025 J jnl
Int. J. Found. Comput. Sci.
Xiaofei Liu, Weidong Li
2025 conf
IJTCS-FAW
Zhonghao Liu, Man Xiao, Xiaofei Liu, Weidong Li
2025 J jnl
Optim. Lett.
Bin Deng, Weidong Li
2025 J jnl
Eur. J. Oper. Res.
Weidong Li, Jinwen Ou
2025 J jnl
IEEE Trans. Veh. Technol.
Xi Liu, Jun Liu, Weidong Li
2024 J jnl
Trans. Emerg. Telecommun. Technol.
Jixian Zhang, Hao Sun, Zhemin Wang, Qian Su, Weidong Li
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Xi Liu, Weidong Li
2024 J jnl
Clust. Comput.
Minzhi Xu, Weidong Li, Xuejie Zhang, Qian Su
2024 J jnl
J. Cloud Comput.
Jixian Zhang, Zhemin Wang, Athanasios V. Vasilakos, Weidong Li
2024 J jnl
Comput. Networks
Xi Liu, Jun Liu, Weidong Li
2024 J jnl
Future Gener. Comput. Syst.
Jixian Zhang, Xiyi Liao, Hao Wu, Weidong Li
2024 J jnl
IEEE Trans. Mob. Comput.
Jixian Zhang, Yi Zhang, Hao Wu, Weidong Li
2024 J jnl
Math. Struct. Comput. Sci.
Xiaofei Liu, Weidong Li
2024 J jnl
Eur. J. Oper. Res.
Weidong Li, Jinwen Ou
2024 conf
COCOA (2)
Ruiqing Sun, Weidong Li
2024 conf
AAIM (1)
Zhikang Zhang, Weidong Li
2024 J jnl
Clust. Comput.
Ning Xie, Jixian Zhang, Xuejie Zhang, Weidong Li
2024 J jnl
J. Grid Comput.
Hao Guo, Weidong Li
2024 J jnl
Future Gener. Comput. Syst.
Xingxing Li, Guangqin Hu, Weidong Li, Xuejie Zhang
2024 J jnl
J. Supercomput.
Jixian Zhang, Hao Sun, Weidong Li
2024 J jnl
Eur. J. Oper. Res.
Weidong Li, Jinwen Ou
2024 conf
AAIM (2)
Man Xiao, Weidong Li
2024 J jnl
Int. J. Appl. Math. Comput. Sci.
Man Xiao, Xiaoqiao Liu, Weidong Li, Xin Chen, Malgorzata Sterna, Jacek Blazewicz
2024 J jnl
IEEE Trans. Netw. Sci. Eng.
Jixian Zhang, Zhemin Wang, Hao Wu, Weidong Li
2024 J jnl
IEEE Trans. Mob. Comput.
Qian Su, Qinghui Zhang, Weidong Li, Xuejie Zhang
2024 J jnl
Comput.
Yaru Yang, Man Xiao, Weidong Li
2024 J jnl
Comput. Networks
Xi Liu, Jun Liu, Weidong Li
2024 J jnl
IEEE Trans. Netw. Serv. Manag.
Jixian Zhang, Mingyi Zong, Athanasios V. Vasilakos, Weidong Li
2023 J jnl
Frontiers Comput. Sci.
Xiaofei Liu, Weidong Li, Jinhua Yang
2023 J jnl
J. Comb. Optim.
Xiaofei Liu, Man Xiao, Weidong Li, Yaoyu Zhu, Lei Ma
2023 J jnl
Asia Pac. J. Oper. Res.
Weidong Li
2023 J jnl
J. Comb. Optim.
Xiaofei Liu, Yajie Li, Weidong Li, Jinhua Yang
2023 J jnl
Computing
Xingxing Li, Weidong Li, Xuejie Zhang
2023 J jnl
Comput. Electr. Eng.
Xingxing Li, Weidong Li, Xuejie Zhang
2023 J jnl
J. Supercomput.
Xingxing Li, Weidong Li, Xuejie Zhang
2023 J jnl
Oper. Res. Forum
Man Xiao, Weidong Li, Xiaofei Liu
2023 J jnl
J. Comb. Optim.
Man Xiao, Shu Zhao, Weidong Li, Jinhua Yang
2023 J jnl
J. Comb. Optim.
Man Xiao, Xiaoqiao Liu, Weidong Li
2022 conf
HP3C
Qinghui Zhang, Weidong Li, Qian Su, Xuejie Zhang
2022 J jnl
CoRR
Qinghui Zhang, Weidong Li, Qian Su, Xuejie Zhang
2022 conf
NCTCS
Man Xiao, Weidong Li
2022 J jnl
CoRR
Qinghui Zhang, Weidong Li, Xuejie Zhang
2022 J jnl
Sensors
Qinghui Zhang, Weidong Li, Qian Su, Xuejie Zhang
2022 J jnl
J. Comb. Optim.
Han Dai, Bin Deng, Weidong Li, Xiaofei Liu
2022 J jnl
Optim. Lett.
Xiaofei Liu, Weidong Li, Runtao Xie
2022 C conf
TAMC
Xiaofei Liu, Weidong Li
2022 Misc conf
FAW
Han Dai, Weidong Li, Xiaofei Liu
2022 J jnl
Theor. Comput. Sci.
Xiaofei Liu, Weidong Li, Han Dai
2022 J jnl
J. Comb. Optim.
Xiaofei Liu, Weidong Li
2022 J jnl
Clust. Comput.
Xuejie Zhang, Jie Li, Guibing Li, Weidong Li
2022 conf
NCTCS
Bin Deng, Weidong Li
2022 J jnl
IEEE Access
Ran Ding, Bin Deng, Weidong Li
2022 conf
NCTCS
Xingxing Li, Weidong Li, Xuejie Zhang
2022 C conf
AAIM
Xiaofei Liu, Yaoyu Zhu, Weidong Li, Lei Ma
2022 J jnl
Comput.
Man Xiao, Yaru Yang, Weidong Li
2022 C conf
AAIM
Man Xiao, Xihua Bai, Weidong Li
2022 Misc conf
FAW
Man Xiao, Weidong Li
2022 Misc conf
COCOON
Man Xiao, Weidong Li
2022 J jnl
CoRR
Man Xiao, Xiaoqiao Liu, Weidong Li, Xin Chen, Malgorzata Sterna, Jacek Blazewicz
2022 J jnl
Computing
Jixian Zhang, Laixin Chi, Ning Xie, Xutao Yang, Xuejie Zhang, Weidong Li
2022 J jnl
Future Gener. Comput. Syst.
Jixian Zhang, Wenlu Lou, Hao Sun, Qian Su, Weidong Li
2021 C conf
AAIM
Yajie Li, Weidong Li, Xiaofei Liu, Jinhua Yang
2021 J jnl
Optim. Lett.
Xiaofei Liu, Weidong Li
2021 C conf
COCOA
Man Xiao, Shu Zhao, Weidong Li, Jinhua Yang
2021 J jnl
Optim. Lett.
Li Guan, Weidong Li, Man Xiao
2021 C conf
AAIM
Man Xiao, Xiaoqiao Liu, Weidong Li
2021 J jnl
J. Grid Comput.
Jixian Zhang, Ning Xie, Xuejie Zhang, Weidong Li
2021 J jnl
Clust. Comput.
Jixian Zhang, Ning Xie, Xutao Yang, Xuejie Zhang, Weidong Li
2020 conf
HP3C
Xutao Yang, Xuejie Zhang, Weidong Li, Jixian Zhang
2020 J jnl
Future Gener. Comput. Syst.
Jixian Zhang, Xutao Yang, Ning Xie, Xuejie Zhang, Athanasios V. Vasilakos, Weidong Li
2020 J jnl
CoRR
Weidong Li
2020 conf
NCTCS
Man Xiao, Lu Ding, Shu Zhao, Weidong Li
2020 J jnl
Int. J. Comput. Math.
Bingfei Dai, Weidong Li
2019 C conf
AAIM
Xiaofei Liu, Weidong Li
2019 J jnl
J. Parallel Distributed Comput.
Weidong Li, Xi Liu, Xiaobo Cai, Xuejie Zhang
2019 J jnl
J. Comb. Optim.
Li Guan, Jianping Li, Weidong Li, Junran Lichen
2019 conf
NCTCS
Man Xiao, Gangxiong Wu, Weidong Li
2019 conf
ICAIS (2)
Xiaolu Zhang, Xi Liu, Weidong Li, Xuejie Zhang
2018 J jnl
Future Gener. Comput. Syst.
Jixian Zhang, Ning Xie, Xuejie Zhang, Weidong Li
2018 C conf
GPC
Jixian Zhang, Ning Xie, Xuejie Zhang, Weidong Li
2018 conf
CSAI/ICIMT
Bingfei Dai, Jianping Li, Weidong Li
2018 conf
NCTCS
Gangxiong Wu, Weidong Li
2018 J jnl
IEEE Trans. Parallel Distributed Syst.
Xi Liu, Weidong Li, Xuejie Zhang
2018 J jnl
4OR
Weidong Li, Qianna Cui
2017 Misc conf
FAW
Weidong Li, Xi Liu, Xiaolu Zhang, Xuejie Zhang
2017 J jnl
Algorithmica
Weidong Li, Lusheng Wang, Wenjuan Cui
2017 C conf
GPC
Xiaolu Zhang, Weidong Li, Xi Liu, Xuejie Zhang
2017 conf
COCOA (1)
Jianping Li, Xiaofei Liu, Weidong Li, Li Guan, Junran Lichen
2017 conf
BigDataSecurity/HPSC/IDS
Xi Liu, Xiaolu Zhang, Qianna Cui, Weidong Li
2017 conf
NCTCS
Weidong Li, Xi Liu, Xiaolu Zhang, Xuejie Zhang
2017 J jnl
Computing
Xi Liu, Xiaolu Zhang, Weidong Li, Xuejie Zhang
2016 J jnl
Optim. Lett.
Jianping Li, Li Guan, Honglin Ding, Weidong Li
2016 conf
ICIC (1)
Xi Liu, Xiaolu Zhang, Weidong Li, Xuejie Zhang
2016 J jnl
RAIRO Oper. Res.
Weidong Li, Jianping Li, Li Guan, Yaomin Shi
2015 B conf
CCGRID
Weidong Li, Xi Liu, Xuejie Zhang, Xiaobo Cai
2015 J jnl
CoRR
Weidong Li, Xi Liu, Xuejie Zhang, Xiaobo Cai
2015 J jnl
CoRR
Weidong Li, Xi Liu, Xiaolu Zhang, Xuejie Zhang
2015 conf
BDCloud
Xi Liu, Xiaolu Zhang, Xuejie Zhang, Weidong Li
2015 J jnl
Multiagent Grid Syst.
Weidong Li, Xi Liu, Xiaolu Zhang, Xuejie Zhang
2015 J jnl
Theor. Comput. Sci.
Weidong Li, Jianping Li, Xuejie Zhang, Zhibin Chen
2015 B conf
WALCOM
Li Guan, Jianping Li, Xuejie Zhang, Weidong Li
2014 J jnl
Optim. Lett.
Weidong Li, Jianping Li
2014 J jnl
Inf. Process. Lett.
Weidong Li, Jianping Li, Li Guan
2014 Misc conf
FAW
Weidong Li, Jianping Li, Xuejie Zhang, Zhibin Chen
2014 J jnl
J. Comb. Optim.
Jianping Li, Weidong Li, Junran Lichen
2013 Misc conf
COCOON
Weidong Li, Lusheng Wang, Wenjuan Cui
2012 J jnl
J. Comb. Optim.
Jianping Li, Weidong Li, Lusheng Wang
2012 J jnl
Optim. Lett.
Weidong Li, Yaomin Shi
2012 J jnl
Asia Pac. J. Oper. Res.
Weidong Li, Jianping Li, Tongquan Zhang
2009 J jnl
J. Algorithms
Tongquan Zhang, Weidong Li, Jianping Li
2009 C conf
COCOA
Jianping Li, Weidong Li, Jianbo Li
2009 J jnl
Discret. Math. Algorithms Appl.
Jianping Li, Weidong Li, Jianbo Li
2009 J jnl
Theor. Comput. Sci.
Jianping Li, Weidong Li, Tongquan Zhang, Zhongxu Zhang
2007 J jnl
Theor. Comput. Sci.
Mingxia Chen, Jianbo Li, Jianping Li, Weidong Li, Lusheng Wang
2006 Misc conf
COCOON
Jianbo Li, Mingxia Chen, Jianping Li, Weidong Li
redb/extractors/extractor.py
← Index redb/extractors/extractor.py python
import hashlib
import inspect
from abc import ABCMeta, abstractmethod
from dataclasses import asdict
from functools import cached_property
from datetime import datetime, timezone
import math
from typing import Counter, List, Optional, Dict, Any, Tuple
from redb import settings
from redb.models.dataclasses import Hash
from .database_exporters import DatabaseExporter, ElasticsearchExporter, ClickHouseExporter, PrintExporter

class Extractor(metaclass=ABCMeta):
    def __init__(
        self,
        filepath: str,
        log: Any,
        exporters: Optional[List[DatabaseExporter]] = None,
        index_prefix: Optional[str] = None,
        source: Optional[str] = None,
        elastic_index: Optional[str] = None,
        known_benign: bool = False,
        known_malicious: bool = False,
        precomputed_hashes: Optional[Dict[str, str]] = None,
    ):
        self.log = log
        self.log.debug(f"Creating {self.__class__.__name__}")
        self.filepath = filepath
        self.source = source
        self.exporters = exporters or []
        self.index_prefix = index_prefix if index_prefix else settings.ELASTIC_BINARIES_COLLECTION
        self.elastic_index = self.index_prefix + (elastic_index if elastic_index else "")
        self.known_benign = known_benign
        self.known_malicious = known_malicious

        # Use precomputed hashes if provided (e.g., from machofile, pefile)
        # Otherwise compute them from binary
        if precomputed_hashes:
            self.md5 = precomputed_hashes.get('md5') or precomputed_hashes.get('MD5')
            self.sha1 = precomputed_hashes.get('sha1') or precomputed_hashes.get('SHA1')
            self.sha256 = precomputed_hashes.get('sha256') or precomputed_hashes.get('SHA256')
        else:
            self.md5 = hashlib.md5(self.binary).hexdigest()
            self.sha1 = hashlib.sha1(self.binary).hexdigest()
            self.sha256 = hashlib.sha256(self.binary).hexdigest()
        self.hash = Hash(self.md5, self.sha1, self.sha256)

    @cached_property
    def binary(self):
        with open(self.filepath, "rb") as f:
            data = f.read()
        return data

    @property
    @abstractmethod
    def tag(self):
        pass

    @abstractmethod
    def extract(self):
        """
        this method defines the extracted data
        """

    @staticmethod
    def process_binary_string(s):
        # Remove \x00 padding
        s = s.rstrip(b"\x00")

        # Check if there are any non-printable characters
        has_non_printable = any(byte < 32 or byte > 126 for byte in s)

        if not has_non_printable:
            # If all characters are printable, decode the string
            return s.decode()
        else:
            # If there are non-printable characters, represent them as \xDD
            return "".join(
                [
                    f"\\x{byte:02x}" if byte < 32 or byte > 126 else chr(byte)
                    for byte in s
                ]
            )

    @staticmethod
    def remove_non_utf8(binary_string):
        decoded = b""
        for i in range(len(binary_string)):
            try:
                # Try to decode each byte
                char = binary_string[i : i + 1].decode("utf-8")
                decoded += char.encode("utf-8")
            except UnicodeDecodeError:
                # Skip this byte if it can't be decoded
                continue
        return decoded

    def calculate_entropy(self, data):
        """Calculate the entropy of a chunk of data.
        Based on pefile.SectionStructure.entropy_H.
        """
        # self.log.debug(inspect.currentframe().f_code.co_name)
        if not data:
            return 0.0

        if type(data) == str:
            counts = Counter(data)
            frequencies = ((i / len(data)) for i in counts.values())
            return - sum(f * math.log(f, 2) for f in frequencies)
        else:
            occurences = Counter(bytearray(data))
            entropy = 0
            for x in occurences.values():
                p_x = float(x) / len(data)
                entropy -= p_x * math.log(p_x, 2)
            return entropy

    @abstractmethod
    def prepare_export_data(self, exporter_type: str) -> Tuple[List[Any], List[str], List[str]]:
        """
        Prepare data for specific export type
        Returns:
            Tuple containing:
            - data: List of values to insert
            - column_names: List of column names
            - column_type_names: List of column types
        """
        pass

    def export_data(self):
        """Export data to all configured exporters

        Returns:
            True: Export succeeded
            False: Export failed (actual error)
            None: No data to export (not an error, e.g., no overlay, no signature)
        """
        self.log.debug(inspect.currentframe().f_code.co_name)
        success = True
        extracted_data = self.extract()

        if extracted_data is None:
            self.log.debug("extract() returned None, skipping export")
            return None  # No data to export, not a failure
            
        for exporter in self.exporters:
            if isinstance(exporter, PrintExporter):
                # For PrintExporter, we pass the extracted data directly
                success &= exporter.export(extracted_data)
            else:
                # Get the data prepared for this specific exporter type
                export_data = self.prepare_export_data(exporter.__class__.__name__)
                
                if export_data is None:
                    self.log.debug(f"prepare_export_data returned None for {exporter.__class__.__name__}")
                    return False
                
                if isinstance(exporter, ElasticsearchExporter):
                    success &= exporter.export(
                        export_data,
                        index=self.elastic_index,
                        tag=self.tag(),
                        hashes=asdict(self.hash),
                        known_benign=self.known_benign,
                        known_malicious=self.known_malicious
                    )
                elif isinstance(exporter, ClickHouseExporter):
                    # For ClickHouse, we need to pass the table name and the prepared data
                    success &= exporter.export(
                        export_data,
                        table=self.get_clickhouse_table(),
                        # Add these parameters explicitly
                        column_names=export_data[1] if isinstance(export_data, tuple) else None,
                        column_type_names=export_data[2] if isinstance(export_data, tuple) else None
                    )
                
        return success

    @abstractmethod
    def get_clickhouse_table(self) -> str:
        """Return the appropriate ClickHouse table name"""
        pass
    # def export_to_elastic(self, list_of_dataclasses, tag=None):
    #     self.log.debug(inspect.currentframe().f_code.co_name)

    #     if not isinstance(list_of_dataclasses, list):
    #         self.log.error("Called export_to_elastic wrongly")

    #     now_t = datetime.now(timezone.utc).strftime("%Y-%m-%d %H:%M:%S")
    #     for dataclass_ in list_of_dataclasses:
    #         if not settings.ELASTIC_CLIENT.ping():
    #             self.log.error("[CONNECTION ERROR] ping to elastic failed")
            
    #         # Convert dataclass to dict and filter out None values
    #         document = {k: v for k, v in asdict(dataclass_).items() if v is not None}
            
    #         if tag:
    #             document["tag"] = [tag, self.tag()]
    #         else:
    #             document["tag"] = self.tag()
    #         hashes = asdict(self.hash)
    #         document |= hashes
    #         document["timestamp_utc"] = now_t
    #         # document["source"] = self.source
    #         document["known_benign"] = self.known_benign
    #         document["known_malicious"] = self.known_malicious

    #         if "_id" in document:
    #             tmp_id = document.pop("_id") + document["sha256"]
    #             _id = hashlib.sha256(tmp_id.encode()).hexdigest()
    #         else:
    #             _id = document["sha256"]

    #         # self.log.debug(f"[DEBUG] about to export {type(document)} {document}")
    #         try:
    #             doc_dump = json.dumps(document)
    #         except TypeError as e:
    #             self.log.error(
    #                 f"Failed export of document. " f"full document: {document}"
    #             )
    #             raise e

    #         # body={"doc": doc_dump,
    #         #       "doc_as_upsert": True  # Create the document if it doesn't exist
    #         # }

    #         # Check if the index exists, and create it if it doesn't
    #         # if not settings.ELASTIC_CLIENT.indices.exists(index=self.elastic_index):
    #         #     settings.ELASTIC_CLIENT.indices.create(index=self.elastic_index)
    #         # pprint(doc_dump) #DEBUG
    #         # print("[DEBUG] _id: " + _id)
    #         # print("[DEBUG] index: " + self.elastic_index)
    #         settings.ELASTIC_CLIENT.index(
    #             index=self.elastic_index, id=_id, document=doc_dump
    #         )