Wei Wu

87 papers A* 2B 4Misc 1Journal 63Unranked 17
YearRankTypeTitle / Venue / Authors
2026 J jnl
Neural Networks
Fang Liu, Witold Pedrycz, Qi Xu, Lijun Liu, Jialin Xu, Jie Yang, Wei Wu
2024 J jnl
Neurocomputing
Bingjie Zhang, Jian Wang, Chao Zhang, Jie Yang, Tufan Kumbasar, Wei Wu
2023 J jnl
IEEE Trans. Fuzzy Syst.
Fang Liu, Witold Pedrycz, Chao Zhang, Jie Yang, Wei Wu
2023 J jnl
CoRR
Chao Zhang, Xinyu Chen, Wensheng Li, Lixue Liu, Wei Wu, Dacheng Tao
2022 J jnl
IEEE Trans. Fuzzy Syst.
Fang Liu, Jie Yang, Witold Pedrycz, Wei Wu
2022 J jnl
Knowl. Based Syst.
Tingting Pan, Witold Pedrycz, Jie Yang, Wei Wu, Yulin Zhang
2022 J jnl
Inf. Sci.
Bingjie Zhang, Xiaoling Gong, Jian Wang, Fengzhen Tang, Kai Zhang, Wei Wu
2022 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Junhong Zhao, Jie Yang, Jun Wang, Wei Wu
2020 J jnl
Neural Process. Lett.
Sibo Yang, Chao Zhang, Yuan Bao, Jie Yang, Wei Wu
2020 J jnl
Inf. Sci.
Tingting Pan, Junhong Zhao, Wei Wu, Jie Yang
2019 J jnl
IEEE Access
Junhong Zhao, Maolin Shi, Gang Hu, Xueguan Song, Chao Zhang, Dacheng Tao, Wei Wu
2019 J jnl
Symmetry
Chun Hua, Feng Li, Chao Zhang, Jie Yang, Wei Wu
2019 J jnl
IEEE Access
Sibo Yang, Chao Zhang, Wei Wu
2019 J jnl
Neurocomputing
Feng Li, Jie Yang, Mingchen Yao, Sibo Yang, Wei Wu
2019 J jnl
Cybersecur.
Yan Wang, Wei Wu, Chao Zhang, Xinyu Xing, Xiaorui Gong, Wei Zou
2019 J jnl
IEEE Access
Habtamu Zegeye Alemu, Junhong Zhao, Feng Li, Wei Wu
2019 A* conf
USENIX Security Symposium
Wei Wu, Yueqi Chen, Xinyu Xing, Wei Zou
2019 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Baohua Li, Huchuan Lu, Ying Zhang, Zhouchen Lin, Wei Wu
2018 J jnl
CoRR
Feng Li, Yan Liu, Khidir Shaib Mohamed, Wei Wu
2018 J jnl
Neural Process. Lett.
Wenyu Li, Yan Liu, Jie Yang, Wei Wu
2018 J jnl
CoRR
Sibo Yang, Chao Zhang, Wei Wu
2018 J jnl
CoRR
Feng Li, Sibo Yang, Huanhuan Huang, Wei Wu
2018 A* conf
USENIX Security Symposium
Wei Wu, Yueqi Chen, Jun Xu, Xinyu Xing, Xiaorui Gong, Wei Zou
2018 J jnl
Symmetry
Habtamu Zegeye Alemu, Wei Wu, Junhong Zhao
2018 J jnl
Soft Comput.
Yanpeng Qu, Changjing Shang, Neil Mac Parthaláin, Wei Wu, Qiang Shen
2018 J jnl
Neurocomputing
Feng Li, Jacek M. Zurada, Wei Wu
2018 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Baohua Li, Huchuan Lu, Fu Li, Wei Wu
2018 J jnl
Neural Networks
Junhong Zhao, Jacek M. Zurada, Jie Yang, Wei Wu
2017 J jnl
IEEE Access
Feng Li, Jacek M. Zurada, Yan Liu, Wei Wu
2017 J jnl
BMC Bioinform.
Ye-tian Fan, Xiwei Tang, Xiaohua Hu, Wei Wu, Qing Ping
2017 conf
IScIDE
Baohua Li, Wei Wu
2016 conf
BIBM
Ye-tian Fan, Xiaohua Hu, Xiwei Tang, Qing Ping, Wei Wu
2016 J jnl
Neural Comput. Appl.
Dakun Yang, Zhengxue Li, Wei Wu
2015 J jnl
Neural Process. Lett.
Dakun Yang, Zhengxue Li, Yan Liu, Huisheng Zhang, Wei Wu
2015 conf
BIBM
Yetian Fan, Xingpeng Jiang, Xiaohua Hu, Bo Song, Yuan Ling, Wei Wu
2015 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Yetian Fan, Wei Wu, Jie Yang, Wenyu Yang, Rongrong Liu
2015 J jnl
Cogn. Comput.
Atlas Khan, Li Zheng Xue, Wei Wu, Yanpeng Qu, Amir Hussain, Ricardo Z. N. Vêncio
2015 J jnl
Neurocomputing
Yan Liu, Zhengxue Li, Dakun Yang, Kh. Sh. Mohamed, Jing Wang, Wei Wu
2015 J jnl
Int. J. Fuzzy Syst.
Yanpeng Qu, Changjing Shang, Qiang Shen, Neil Mac Parthaláin, Wei Wu
2014 J jnl
Neurocomputing
Yan Liu, Wei Wu, Qin-wei Fan, Dakun Yang, Jian Wang
2014 J jnl
J. Zhejiang Univ. Sci. C
Ye-tian Fan, Wei Wu, Wenyu Yang, Qin-wei Fan, Jian Wang
2014 J jnl
Neural Networks
Wei Wu, Qin-wei Fan, Jacek M. Zurada, Jian Wang, Dakun Yang, Yan Liu
2014 J jnl
Neurocomputing
Qin-wei Fan, Jacek M. Zurada, Wei Wu
2014 J jnl
Neurocomputing
Atlas Khan, Jie Yang, Wei Wu
2013 J jnl
Int. J. Approx. Reason.
Yanpeng Qu, Qiang Shen, Neil Mac Parthaláin, Changjing Shang, Wei Wu
2013 J jnl
Neural Comput. Appl.
Yanpeng Qu, Changjing Shang, Jie Yang, Wei Wu, Qiang Shen
2013 conf
ISNN (1)
Qilin Sun, Yan Liu, Zhengxue Li, Sibo Yang, Wei Wu, Jiuwu Jin
2012 conf
ISNN (1)
Wenyu Yang, Jie Yang, Wei Wu
2012 J jnl
Neural Process. Lett.
Wenyu Yang, Jie Yang, Wei Wu
2012 J jnl
Appl. Math. Lett.
Jie Yang, Wenyu Yang, Wei Wu
2012 J jnl
Neurocomputing
Huisheng Zhang, Wei Wu, Mingchen Yao
2012 conf
ISNN (1)
Jian Wang, Wei Wu, Jacek M. Zurada
2012 J jnl
Neural Networks
Jian Wang, Wei Wu, Jacek M. Zurada
2012 conf
ISNN (1)
Wei Wu, Atlas Khan
2012 J jnl
J. Zhejiang Univ. Sci. C
Yan Liu, Jie Yang, Long Li, Wei Wu
2011 J jnl
IEEE Trans. Neural Networks
Chao Zhang, Jie Yang, Wei Wu
2011 B conf
IJCNN
Jian Wang, Wei Wu, Jacek M. Zurada
2011 J jnl
Neural Networks
Wei Wu, Jian Wang, Mingsong Cheng, Zhengxue Li
2011 J jnl
IEEE Trans. Neural Networks
Jian Wang, Jie Yang, Wei Wu
2011 J jnl
Neurocomputing
Jian Wang, Wei Wu, Jacek M. Zurada
2011 B conf
FUZZ-IEEE
Yanpeng Qu, Changjing Shang, Qiang Shen, Neil Mac Parthaláin, Wei Wu
2010 J jnl
Inf. Sci.
Wei Wu, Long Li, Jie Yang, Yan Liu
2010 B conf
IJCNN
Jie Yang, Long Li, Yan Liu, Jing Wang, Wei Wu
2010 J jnl
Soft Comput.
Dongpo Xu, Zhengxue Li, Wei Wu
2009 conf
DBTA
Mingchen Yao, Jie Yang, Huisheng Zhang, Wei Wu
2009 Misc conf
GrC
Long Li, Jie Yang, Wei Wu, Tianshuang Wu
2009 J jnl
IEEE Trans. Neural Networks
Huisheng Zhang, Wei Wu, Fei Liu, Mingchen Yao
2009 J jnl
Neural Process. Lett.
Huisheng Zhang, Wei Wu
2008 J jnl
Neural Networks
Wei Wu, Dong Nan, Jinling Long, Yu-Mei Ma
2007 B conf
IJCNN
Wei Wu, Dong Nan, Zhengxue Li, Jinling Long
2007 J jnl
Neural Process. Lett.
Chao Zhang, Wei Wu, Yan Xiong
2007 conf
ISNN (3)
Dongpo Xu, Zhengxue Li, Wei Wu, Xiaoshuai Ding, Di Qu
2007 conf
FOCI
Xidai Kang, Yan Xiong, Chao Zhang, Wei Wu
2007 J jnl
Fuzzy Sets Syst.
Jie Yang, Wei Wu
2007 J jnl
Int. J. Neural Syst.
Jinling Long, Wei Wu, Dong Nan
2007 J jnl
Neural Comput.
Yan Xiong, Wei Wu, Xidai Kang, Chao Zhang
2007 conf
ISNN (1)
Jinling Long, Wei Wu, Dong Nan
2007 conf
ICNC (2)
Jinling Long, Wei Wu, Dong Nan, Junfang Wang
2006 conf
ICIC (1)
Wei Wu, Feng Li, Jun Kong, Lichang Hou, Bingdui Zhu
2006 conf
ICONIP (1)
Wei Wu, Hongmei Shao, Zhengxue Li
2006 J jnl
IEEE Trans. Neural Networks
Naimin Zhang, Wei Wu, Gaofeng Zheng
2005 conf
ISNN (1)
Jie Yang, Wei Wu, Zhiqiong Shao
2005 conf
ICNC (1)
Zhengxue Li, Wei Wu, Guorui Feng, Huifang Lu
2005 J jnl
IEEE Trans. Neural Networks
Wei Wu, Guorui Feng, Zhengxue Li, Yuesheng Xu
2004 conf
ISNN (1)
Wei Wu, Zhengxue Li, Guorui Feng, Naimin Zhang, Dong Nan, Zhiqiong Shao, Jie Yang, Liqing Zhang, Yuesheng Xu
2003 J jnl
Appl. Math. Lett.
Wei Wu, Zhiqiong Shao
2002 J jnl
Adv. Comput. Math.
Wei Wu, Guorui Feng, Xin 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
    #         )