Xiaodong Li

114 papers A* 6A 12B 1C 4Misc 8Journal 67Unranked 16
YearRankTypeTitle / Venue / Authors
2026 A* conf
AAAI
Andong Li, Tong Lei, Lingling Dai, Kai Li, Rilin Chen, Meng Yu, Xiaodong Li, Dong Yu, Chengshi Zheng
2026 A* conf
AAAI
Lingling Dai, Andong Li, Cheng Chi, Yifan Liang, Xiaodong Li, Chengshi Zheng
2026 J jnl
CoRR
Lingling Dai, Andong Li, Cheng Chi, Yifan Liang, Xiaodong Li, Chengshi Zheng
2026 J jnl
Neural Networks
Yifan Liang, Fangkun Liu, Andong Li, Xiaodong Li, Chengyou Lei, Chengshi Zheng
2026 A* conf
AAAI
Yifan Liang, Andong Li, Kang Yang, Guochen Yu, Fangkun Liu, Lingling Dai, Xiaodong Li, Chengshi Zheng
2026 J jnl
CoRR
Yifan Liang, Andong Li, Kang Yang, Guochen Yu, Fangkun Liu, Lingling Dai, Xiaodong Li, Chengshi Zheng
2026 J jnl
CoRR
Andong Li, Tong Lei, Zhihang Sun, Rilin Chen, Xiaodong Li, Dong Yu, Chengshi Zheng
2025 Misc conf
ICASSP
Huiyong Zhang, Brian C. J. Moore, Lingling Dai, Fengyuan Hao, Xiaodong Li, Chengshi Zheng
2025 A* conf
ACM Multimedia
Lingling Dai, Andong Li, Zhe Han, Chengshi Zheng, Xiaodong Li
2025 J jnl
CoRR
Andong Li, Tong Lei, Rilin Chen, Kai Li, Meng Yu, Xiaodong Li, Dong Yu, Chengshi Zheng
2025 Misc conf
ICASSP
Fengyuan Hao, Andong Li, Xiaodong Li, Chengshi Zheng
2025 Misc conf
ICASSP
Xiaofan Zhan, Fengyuan Hao, Xiaodong Li, Chengshi Zheng
2025 conf
APSIPA
Rui Zhang, Yuxuan Ke, Qunping Ni, Ge Yao, Xiaodong Li, Chengshi Zheng
2025 conf
APSIPA
Cheng Chi, Xiaoyu Li, Yuxuan Ke, Qunping Ni, Ge Yao, Xiaodong Li, Chengshi Zheng
2025 A conf
INTERSPEECH
Fengyuan Hao, Brian C. J. Moore, Huiyong Zhang, Xiaodong Li, Chengshi Zheng
2025 A* conf
IJCAI
Andong Li, Tong Lei, Zhihang Sun, Rilin Chen, Erwei Yin, Xiaodong Li, Chengshi Zheng
2025 J jnl
CoRR
Andong Li, Tong Lei, Zhihang Sun, Rilin Chen, Erwei Yin, Xiaodong Li, Chengshi Zheng
2025 A conf
INTERSPEECH
Yifan Liang, Kang Yang, Fangkun Liu, Andong Li, Xiaodong Li, Chengshi Zheng
2025 J jnl
CoRR
Yifan Liang, Fangkun Liu, Andong Li, Xiaodong Li, Chengshi Zheng
2025 J jnl
CoRR
Andong Li, Zhihang Sun, Fengyuan Hao, Xiaodong Li, Chengshi Zheng
2024 conf
ICASSP Workshops
Lingling Dai, Yuxuan Ke, Huiyong Zhang, Fengyuan Hao, Xiaoxue Luo, Xiaodong Li, Chengshi Zheng
2024 Misc conf
ICASSP
Weixin Meng, Xiaoyu Li, Andong Li, Jian Li, Xiaodong Li, Chengshi Zheng
2024 J jnl
CoRR
Cheng Chi, Xiaoyu Li, Andong Li, Yuxuan Ke, Xiaodong Li, Chengshi Zheng
2024 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Weixin Meng, Xiaoyu Li, Andong Li, Xiaoxue Luo, Shefeng Yan, Xiaodong Li, Chengshi Zheng
2024 J jnl
Digit. Signal Process.
Weixin Meng, Jian Li, Yuhai Ge, Xiaodong Li, Chengshi Zheng
2024 J jnl
IEEE Signal Process. Lett.
Yuhai Ge, Weixin Meng, Xiaodong Li, Chengshi Zheng
2024 conf
ICASSP Workshops
Fengyuan Hao, Huiyong Zhang, Lingling Dai, Xiaoxue Luo, Xiaodong Li, Chengshi Zheng
2024 J jnl
Inf. Fusion
Andong Li, Guochen Yu, Zhongweiyang Xu, Cunhang Fan, Xiaodong Li, Chengshi Zheng
2024 conf
ISCSLP
Cheng Chi, Xiaoyu Li, Rui Zhang, Xiaodong Li, Chengshi Zheng
2024 J jnl
Inf. Fusion
Fengyuan Hao, Xiaodong Li, Chengshi Zheng
2023 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Andong Li, Guochen Yu, Chengshi Zheng, WenZhe Liu, Xiaodong Li
2023 J jnl
Neural Networks
Fengyuan Hao, Xiaodong Li, Chengshi Zheng
2023 A conf
INTERSPEECH
Jiayi Xu, Jian Li, Weixin Meng, Xiaodong Li, Chengshi Zheng
2023 J jnl
CAAI Trans. Intell. Technol.
Rui Zhang, Ruijie Meng, Jinqiu Sang, Yi Hu, Xiaodong Li, Chengshi Zheng
2023 J jnl
EURASIP J. Audio Speech Music. Process.
Zhe Han, Yuxuan Ke, Xiaodong Li, Chengshi Zheng
2023 A conf
INTERSPEECH
Andong Li, Weixin Meng, Guochen Yu, WenZhe Liu, Xiaodong Li, Chengshi Zheng
2022 J jnl
CoRR
Andong Li, Guochen Yu, Chengshi Zheng, WenZhe Liu, Xiaodong Li
2022 J jnl
CoRR
WenZhe Liu, Andong Li, Chengshi Zheng, Xiaodong Li
2022 J jnl
Symmetry
WenZhe Liu, Andong Li, Xiao Wang, Minmin Yuan, Yi Chen, Chengshi Zheng, Xiaodong Li
2022 A conf
INTERSPEECH
Linjuan Cheng, Chengshi Zheng, Andong Li, Yuquan Wu, Renhua Peng, Xiaodong Li
2022 J jnl
CoRR
Linjuan Cheng, Chengshi Zheng, Andong Li, Renhua Peng, Xiaodong Li
2022 J jnl
Digit. Signal Process.
WenZhe Liu, Andong Li, Chengshi Zheng, Xiaodong Li
2022 J jnl
Speech Commun.
Xiaoxue Luo, Chengshi Zheng, Andong Li, Yuxuan Ke, Xiaodong Li
2022 A conf
INTERSPEECH
Xiaoxue Luo, Chengshi Zheng, Andong Li, Yuxuan Ke, Xiaodong Li
2022 Misc conf
ICASSP
Andong Li, WenZhe Liu, Chengshi Zheng, Xiaodong Li
2022 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Andong Li, Chengshi Zheng, Guochen Yu, Juanjuan Cai, Xiaodong Li
2022 A conf
INTERSPEECH
Weixin Meng, Chengshi Zheng, Xiaodong Li
2022 J jnl
CoRR
Chengshi Zheng, WenZhe Liu, Andong Li, Yuxuan Ke, Xiaodong Li
2022 J jnl
CoRR
Andong Li, Chengshi Zheng, Ziyang Zhang, Xiaodong Li
2022 J jnl
IEEE Internet Things J.
Wenqiong Zhang, Jun Zhang, Ming Bao, Xiao-Ping Zhang, Xiaodong Li
2022 A* conf
IJCAI
Andong Li, Shan You, Guochen Yu, Chengshi Zheng, Xiaodong Li
2022 J jnl
CoRR
Andong Li, Shan You, Guochen Yu, Chengshi Zheng, Xiaodong Li
2022 A conf
INTERSPEECH
Andong Li, Guochen Yu, Chengshi Zheng, Xiaodong Li
2022 J jnl
CoRR
Andong Li, Guochen Yu, Chengshi Zheng, Xiaodong Li
2022 J jnl
CoRR
Andong Li, Guochen Yu, WenZhe Liu, Xiaodong Li, Chengshi Zheng
2022 J jnl
IEEE Internet Things J.
Wenqiong Zhang, Jianfei Tong, Ming Bao, Xiao-Ping Zhang, Xiaodong Li
2021 conf
APSIPA ASC
Weixin Meng, Chengshi Zheng, Xiaodong Li
2021 A conf
Interspeech
Andong Li, WenZhe Liu, Xiaoxue Luo, Guochen Yu, Chengshi Zheng, Xiaodong Li
2021 J jnl
CoRR
Andong Li, WenZhe Liu, Xiaoxue Luo, Guochen Yu, Chengshi Zheng, Xiaodong Li
2021 A conf
Interspeech
Renhua Peng, Linjuan Cheng, Chengshi Zheng, Xiaodong Li
2021 J jnl
Signal Process.
Weixin Meng, Yuxuan Ke, Jian Li, Chengshi Zheng, Xiaodong Li
2021 J jnl
Signal Process.
Xinwei Guo, Minmin Yuan, Yuxuan Ke, Chengshi Zheng, Xiaodong Li
2021 J jnl
CoRR
Andong Li, WenZhe Liu, Chengshi Zheng, Xiaodong Li
2021 J jnl
CoRR
Kaitong Zheng, Ruijie Meng, Chengshi Zheng, Xiaodong Li, Jinqiu Sang, Juanjuan Cai, Jie Wang
2021 J jnl
Signal Process.
Weixin Meng, Yuxuan Ke, Jian Li, Chengshi Zheng, Xiaodong Li
2021 J jnl
CoRR
Andong Li, Chengshi Zheng, Lu Zhang, Xiaodong Li
2021 Misc conf
ICASSP
Renhua Peng, Linjuan Cheng, Chengshi Zheng, Xiaodong Li
2021 Misc conf
ICASSP
Andong Li, WenZhe Liu, Xiaoxue Luo, Chengshi Zheng, Xiaodong Li
2021 J jnl
CoRR
Andong Li, WenZhe Liu, Xiaoxue Luo, Chengshi Zheng, Xiaodong Li
2021 A conf
Interspeech
WenZhe Liu, Andong Li, Yuxuan Ke, Chengshi Zheng, Xiaodong Li
2021 conf
EUSIPCO
Andong Li, Chengshi Zheng, Lu Zhang, Xiaodong Li
2021 J jnl
CoRR
Andong Li, Chengshi Zheng, Lu Zhang, Xiaodong Li
2021 J jnl
EURASIP J. Audio Speech Music. Process.
Yuxuan Ke, Andong Li, Chengshi Zheng, Renhua Peng, Xiaodong Li
2021 J jnl
CoRR
Kaitong Zheng, Chengshi Zheng, Jinqiu Sang, Yulong Zhang, Xiaodong Li
2021 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Andong Li, WenZhe Liu, Chengshi Zheng, Cunhang Fan, Xiaodong Li
2021 J jnl
EURASIP J. Audio Speech Music. Process.
Fangkun Liu, Hui Wang, Renhua Peng, Chengshi Zheng, Xiaodong Li
2020 A conf
INTERSPEECH
Andong Li, Chengshi Zheng, Cunhang Fan, Renhua Peng, Xiaodong Li
2020 J jnl
CoRR
Andong Li, Chengshi Zheng, Cunhang Fan, Renhua Peng, Xiaodong Li
2020 conf
APSIPA
Andong Li, Chengshi Zheng, Linjuan Cheng, Renhua Peng, Xiaodong Li
2020 J jnl
CoRR
Andong Li, Chengshi Zheng, Linjuan Cheng, Renhua Peng, Xiaodong Li
2020 J jnl
CoRR
Xinwei Guo, Minmin Yuan, Chengshi Zheng, Xiaodong Li
2020 J jnl
CoRR
Andong Li, Chengshi Zheng, Renhua Peng, Cunhang Fan, Xiaodong Li
2020 J jnl
CoRR
Yuan Sun, Andreas T. Ernst, Xiaodong Li, Jake Weiner
2020 J jnl
CoRR
Andong Li, Chengshi Zheng, Renhua Peng, Linjuan Cheng, Xiaodong Li
2020 J jnl
CoRR
Andong Li, Chengshi Zheng, Renhua Peng, Xiaodong Li
2020 J jnl
Signal Process.
Jiance Ding, Jian Li, Chengshi Zheng, Xiaodong Li
2019 J jnl
CoRR
Andong Li, Chengshi Zheng, Xiaodong Li
2019 J jnl
CoRR
Andong Li, Chengshi Zheng, Xiaodong Li
2018 J jnl
Speech Commun.
Renhua Peng, Zheng-Hua Tan, Xiaodong Li, Chengshi Zheng
2018 conf
DSP
Jian Li, Jiance Ding, Chengshi Zheng, Xiaodong Li
2018 conf
DSP
Renhua Peng, Binbin Xu, Guoteng Li, Chengshi Zheng, Xiaodong Li
2018 J jnl
IEEE Trans. Mob. Comput.
Xiaoqing Hu, Ming Bao, Xiao-Ping (Steven) Zhang, Sha Wen, Xiaodong Li, Yu Hen Hu
2018 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Chengshi Zheng, Antoine Deleforge, Xiaodong Li, Walter Kellermann
2017 J jnl
IEEE Access
Yuxuan Ke, Chengshi Zheng, Renhua Peng, Xiaodong Li
2016 J jnl
IEEE Signal Process. Lett.
Chengshi Zheng, Christian Hofmann, Xiaodong Li, Walter Kellermann
2016 conf
IWAENC
Chengshi Zheng, Xiaodong Li, Andreas Schwarz, Walter Kellermann
2015 conf
ChinaSIP
Wei Xie, Ming Bao, Xiaodong Li, Xiao-Ping Zhang
2015 C conf
ICICS
Renhua Peng, Chengshi Zheng, Xiaodong Li
2015 conf
EUSIPCO
Chengshi Zheng, Andreas Schwarz, Walter Kellermann, Xiaodong Li
2015 J jnl
CoRR
Chengshi Zheng, Andreas Schwarz, Walter Kellermann, Xiaodong Li
2014 J jnl
IEEE Signal Process. Lett.
Chengshi Zheng, Renhua Peng, Jian Li, Xiaodong Li
2014 J jnl
IEEE Signal Process. Lett.
Chengshi Zheng, Hefei Yang, Xiaodong Li
2014 conf
DSP
Chengshi Zheng, Yuxuan Ke, Renhua Peng, Xiaodong Li, Yi Zhou
2013 J jnl
IEEE Trans. Speech Audio Process.
Chengshi Zheng, Hao Liu, Renhua Peng, Xiaodong Li
2013 C conf
ICICS
Shiwei Wang, Xiaohu Hu, Chengshi Zheng, Xiaodong Li
2013 conf
GlobalSIP
Jiawei Zhang, Nan Hu, Ming Bao, Xiaodong Li, Wei He
2013 B conf
MASS
Jiawei Zhang, Ming Bao, Xiaodong Li
2011 J jnl
Signal Process.
Dahang Feng, Ming Bao, Zhongfu Ye, Luyang Guan, Xiaodong Li
2011 C conf
ICICS
Xiaohu Hu, Shiwei Wang, Yi Zhou, Xiaodong Li, Chengshi Zheng
2011 Misc conf
ICASSP
Chengshi Zheng, Yi Zhou, Xiaohu Hu, Xiaodong Li
2010 conf
EUSIPCO
Chengshi Zheng, Yi Zhou, Xiaohu Hu, Xiaodong Li
2009 J jnl
IEEE Signal Process. Lett.
Ming Bao, Chengshi Zheng, Xiaodong Li, Jun Yang, Jing Tian
2008 J jnl
Signal Process.
Chengshi Zheng, Mingyuan Zhou, Xiaodong Li
2006 C conf
CIS
Ming Bao, Luyang Guan, Xiaodong Li, Jing Tian, Jun Yang
redb/extractors/pe_extractors/pe_extra_findings.py
← Index redb/extractors/pe_extractors/pe_extra_findings.py python
from hashlib import md5, sha1, sha256
import inspect
import pefile
from magika import Magika
import json
from datetime import datetime, timezone
from typing import List, Optional, Any
from asn1crypto import cms, pem, x509, core
from dataclasses import asdict

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEExtraFinding, PECertificate


class PEExtraFindings(PEExtractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_extrafindings"
        self.log.debug(inspect.currentframe().f_code.co_name)
        self.has_binary_overlay = False
        self.has_binary_resource = False
        self.findings = []

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

    """
    The section below triggers in case of a binary which is not signed.
    It trigger the scan for Certificates inside the binary, for example
    inside a resource or an overlay.
    """

    def _scan_for_certificates(self):
        """
        Comprehensive scan for certificate data in PE file.
        Returns list of tuples (location_description, certificate_data)
        """
        self.log.debug(inspect.currentframe().f_code.co_name)

        # 1. Scan resources for embedded PE files
        self._scan_resources_for_certificates()

        # 3. Scan overlay
        overlay_data = self.pe.get_overlay()
        if overlay_data:
            self._scan_overlay_for_certificates(overlay_data)


    def _extract_certificate_info(self, cert_data):
        self.log.debug(inspect.currentframe().f_code.co_name)

        certificate = x509.Certificate.load(cert_data)
        certificate_serial_number = format(certificate.serial_number, "x").upper()
        grouped_serial_number = ":".join(
            [
                certificate_serial_number[i : i + 2]
                for i in range(0, len(certificate_serial_number), 2)
            ]
        )
        return PECertificate(
            certificate_serial_number=grouped_serial_number,
            certificate_issuer=certificate.issuer.human_friendly,
            certificate_subject=certificate.subject.human_friendly,
            certificate_valid_from=certificate["tbs_certificate"]["validity"][
                "not_before"
            ].native.strftime("%Y-%m-%d %H:%M:%S"),
            certificate_valid_to=certificate["tbs_certificate"]["validity"][
                "not_after"
            ].native.strftime("%Y-%m-%d %H:%M:%S"),
            certificate_thumbprint=sha1(cert_data).hexdigest().upper(),
            certificate_algorithm=None,
        )

    def _extract_standard_certificates(self, pe):
        self.log.debug(inspect.currentframe().f_code.co_name)
        address = pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        size = pe.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].Size

        addr_8 = address + 8
        signature_data = bytes(
            pe.write()[addr_8 : addr_8 + size]  # noqa E203
        )  # Ensure this is a bytes object
        if pem.detect(signature_data):
            signature_data = pem.unarmor(signature_data)

        content_info = cms.ContentInfo.load(signature_data)
        signed_data = content_info["content"]
        certificates = signed_data["certificates"]

        certificates_list = []
        for cert in certificates:
            cert_info = self._extract_certificate_info(cert.chosen.dump())
            certificates_list.append(cert_info)

        return certificates_list

    def _is_signed(self, pedata):
        address = pedata.OPTIONAL_HEADER.DATA_DIRECTORY[
            pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]
        ].VirtualAddress
        if address == 0:
            return False
        return True

    def _scan_resources_for_certificates(self):
        """Scan resources for embedded PE files and their certificates"""
        self.log.debug(inspect.currentframe().f_code.co_name)

        try:
            if hasattr(self.pe, "DIRECTORY_ENTRY_RESOURCE"):
                for entry in self.pe.DIRECTORY_ENTRY_RESOURCE.entries:
                    for resource in self._get_resource_data(entry):
                        # Check if resource data might be a PE file
                        resource_magika = Magika().identify_bytes(resource).output.label
                        if resource.startswith(b"MZ") or resource_magika == "pebin":
                            try:
                                embedded_pe = pefile.PE(data=resource)
                                if self._is_signed(embedded_pe):
                                    cert_data = self._extract_standard_certificates(
                                        embedded_pe
                                    )
                                    if cert_data:
                                        # certificates.append(
                                        #     (f"Resource_{entry.id}", cert_data)
                                        # )
                                        self.findings.append(
                                            PEExtraFinding(
                                                context=f"Resource ({sha256(resource).hexdigest()}) is a PE file. Found Code Signing Certificates information inside.",
                                                finding=cert_data,
                                            )
                                        )
                            except Exception as e:
                                self.log.warning(
                                    f"Resource {sha256(resource).hexdigest()} is not a valid PE: {e}"
                                )

                        # Direct certificate pattern matching in resource
                        cert_data = self._find_certificate_patterns(resource)
                        if cert_data:
                            # certificates.append((f"Resource_{entry.id}", cert_data))
                            self.findings.append(
                                PEExtraFinding(
                                    context=f"Resource ({sha256(resource).hexdigest()}) is a PE file.\
                                    Found Code Signing Certificates information inside.",
                                    finding=cert_data,
                                )
                            )

        except Exception as e:
            self.log.error(f"Failed to scan resources: {e}")


    def _scan_overlay_for_certificates(self, overlay_data) -> List[bytes]:
        """Scan PE overlay for certificate data"""
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            # Check if overlay is a PE file
            overlay_magika = Magika().identify_bytes(overlay_data).output.ct_label
            if overlay_data.startswith(b"MZ") or overlay_magika == "pebin":
                try:
                    overlay_pe = pefile.PE(data=overlay_data)
                    if self._is_signed(overlay_pe):
                        cert_data = self._extract_standard_certificates(overlay_data)
                        if cert_data:
                            self.findings.append(
                                PEExtraFinding(
                                    context=f"Overlay data ({sha256(overlay_data).hexdigest()}) is a PE file.\
                                    Found Code Signing Certificates information inside.",
                                    finding=cert_data,
                                )
                            )
                except Exception as e:
                    self.log.warning(f"Error looking for certificates in Overlay: {e}")
                    pass

            # Direct certificate pattern matching in overlay
            cert_data = self._find_certificate_patterns(overlay_data)
            if cert_data:
                self.findings.append(
                    PEExtraFinding(
                        context=f"Overlay data ({sha256(overlay_data).hexdigest()}) is a PE file.\
                        Found Code Signing Certificates information inside.",
                        finding=cert_data,
                    )
                )
        except Exception as e:
            self.log.error(f"Failed to scan overlay: {e}")


    def _get_resource_data(self, entry) -> List[bytes]:
        """Recursively get resource data"""
        resources = []
        try:
            if hasattr(entry, "directory"):
                for subentry in entry.directory.entries:
                    resources.extend(self._get_resource_data(subentry))
            else:
                data = self.pe.get_data(
                    entry.data.struct.OffsetToData, entry.data.struct.Size
                )
                resources.append(data)
        except Exception as e:
            self.log.error(f"Failed to get resource data: {e}")
        return resources

    def _find_certificate_patterns(self, data: bytes) -> Optional[bytes]:
        """Find certificate patterns in binary data"""
        # PKCS#7 SignedData OID pattern
        PKCS7_PATTERN = b"\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x07\x02"

        try:
            idx = data.find(PKCS7_PATTERN)
            if idx != -1:
                # Search backwards for ASN.1 sequence marker
                for i in range(idx, max(0, idx - 50), -1):
                    if data[i] == 0x30:  # ASN.1 SEQUENCE
                        try:
                            # Try to parse as X.509 certificate
                            cert = x509.load_der_x509_certificate(
                                data[i:], default_backend()
                            )
                            return data[i:]
                        except Exception:
                            continue
        except Exception as e:
            self.log.error(f"Failed to find certificate patterns: {e}")
        return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        self.log.debug(inspect.currentframe().f_code.co_name)
        if exporter_type == "ElasticsearchExporter":
            return self.findings
        elif exporter_type == "ClickHouseExporter":
            current_time = datetime.now(timezone.utc)
            
            data = [
                [
                    self.sha256,
                    self.md5,
                    self.sha1,
                    finding.context,
                    [asdict(cert) for cert in finding.finding] if finding.finding else None,
                    current_time
                ]
                for finding in self.findings
            ]
            
            column_names = [
                'sha256', 'md5', 'sha1', 'context', 'finding', 'analysis_date'
            ]
            
            if not data:
                return None

            column_type_names = [
                'FixedString(64)', 'FixedString(32)', 'FixedString(40)',
                'String', 'Array(JSON)', 'DateTime64(3, \'UTC\')'
            ]

            return (data, column_names, column_type_names)

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

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            self._scan_for_certificates()
            if len(self.findings) > 0:
                return self.findings
            return None
        except Exception as e:
            self.log.error(f"Error extracting PE Extras: {e}")
            return None