Viktor K. Jirsa

103 papers Journal 88Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Comput. Neurosci.
Damien Depannemaecker, Chloé Duprat, Gabriele Casagrande, Marisa Saggio, Anastasios Polykarpos Athanasiadis, Marianna Angiolelli, Carola Sales Carbonell, Huifang Wang, Spase Petkoski, Pierpaolo Sorrentino, Anthony Randal McIntosh, Hiba Sheheitli, Viktor K. Jirsa
2026 ed.
ICANN (1)
Walter Senn, Marcello Sanguineti, Ausra Saudargiene, Igor V. Tetko, Alessandro E. P. Villa, Viktor K. Jirsa, Yoshua Bengio
2026 ed.
ICANN (2)
Walter Senn, Marcello Sanguineti, Ausra Saudargiene, Igor V. Tetko, Alessandro E. P. Villa, Viktor K. Jirsa, Yoshua Bengio
2026 ed.
ICANN (3)
Walter Senn, Marcello Sanguineti, Ausra Saudargiene, Igor V. Tetko, Alessandro E. P. Villa, Viktor K. Jirsa, Yoshua Bengio
2026 ed.
ICANN (4)
Walter Senn, Marcello Sanguineti, Ausra Saudargiene, Igor V. Tetko, Alessandro E. P. Villa, Viktor K. Jirsa, Yoshua Bengio
2026 ed.
ICANN (5)
Walter Senn, Marcello Sanguineti, Ausra Saudargiene, Igor V. Tetko, Alessandro E. P. Villa, Viktor K. Jirsa, Yoshua Bengio
2026 ed.
DT4H@MICCAI
Lei Li, Viktor K. Jirsa, Jianfeng Feng, Jun Deng, Luca Dede', Sora An, Yilin Lyu, Xiaoyue Liu
2026 J jnl
J. Comput. Neurosci.
Kashyap Gudibanda, Jan Fousek, Spase Petkoski, Viktor K. Jirsa
2025 conf
ICANN (4)
Nina Baldy, Michael Marmaduke Woodman, Viktor K. Jirsa
2025 J jnl
Entropy
Huifang E. Wang, Jorge Gonzalez-Martinez, Viktor K. Jirsa, Patrick Chauvel, Francois-Xavier Alario, Catherine Liégeois-Chauvel
2025 J jnl
CoRR
Viktor Sip, Martin Breyton, Spase Petkoski, Viktor K. Jirsa
2025 J jnl
Neural Comput.
Lionel Kusch, Damien Depannemaecker, Alain Destexhe, Viktor K. Jirsa
2025 conf
ICANN (1)
Damien Depannemaecker, Gabriele Casagrande, Augustinas Povilas Fedaravicius, Ausra Saudargiene, Pierpaolo Sorrentino, Viktor K. Jirsa, Maria Luisa Saggio
2025 J jnl
PLoS Comput. Biol.
Yanqing Dong, Jing Wei, Songjun Peng, Xinran Wu, Yaru Xu, Jianfeng Feng, Jie Zhang, Viktor K. Jirsa, Jie Xiang
2025 J jnl
J. Comput. Neurosci.
Damien Depannemaecker, Federico Tesler, Mathieu Desroches, Viktor K. Jirsa, Alain Destexhe
2025 J jnl
Nat. Comput. Sci.
Huifang E. Wang, Borana Dollomaja, Paul Triebkorn, Gian Marco Duma, Adam Williamson, Julia Makhalova, Jean-Didier Lemaréchal, Fabrice Bartolomei, Viktor K. Jirsa
2025 J jnl
PLoS Comput. Biol.
Borana Dollomaja, Huifang E. Wang, Maxime Guye, Julia Makhalova, Fabrice Bartolomei, Viktor K. Jirsa
2024 J jnl
PLoS Comput. Biol.
Maria Luisa Saggio, Viktor K. Jirsa
2024 J jnl
J. Comput. Neurosci.
Hiba Sheheitli, Viktor K. Jirsa
2024 J jnl
Frontiers Neuroinformatics
Lionel Kusch, Sandra Diaz-Pier, Wouter Klijn, Kim Sontheimer, Christophe Bernard, Abigail Morrison, Viktor K. Jirsa
2024 J jnl
PLoS Comput. Biol.
David R. Penas, Meysam Hashemi, Viktor K. Jirsa, Julio R. Banga
2024 J jnl
Mach. Learn. Sci. Technol.
Meysam Hashemi, Abolfazl Ziaeemehr, Michael Marmaduke Woodman, Jan Fousek, Spase Petkoski, Viktor K. Jirsa
2023 J jnl
Neural Networks
Meysam Hashemi, Anirudh Nihalani Vattikonda, Jayant Jha, Viktor Sip, Michael Marmaduke Woodman, Fabrice Bartolomei, Viktor K. Jirsa
2023 J jnl
NeuroImage
Pierpaolo Sorrentino, Emahnuel Troisi Lopez, Antonella Romano, Carmine Granata, Marie-Constance Corsi, Giuseppe Sorrentino, Viktor K. Jirsa
2023 J jnl
Nat. Comput. Sci.
Daniela Gandolfi, Jonathan Mapelli, Sergio M. G. Solinas, Paul Triebkorn, Egidio D'Angelo, Viktor K. Jirsa, Michele Migliore
2023 J jnl
Mach. Learn. Sci. Technol.
Nina Baldy, Nicolas Simon, Viktor K. Jirsa, Meysam Hashemi
2023 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Claudio Runfola, Hiba Sheheitli, Fabrice Bartolomei, Huifang E. Wang, Viktor K. Jirsa
2023 J jnl
J. Comput. Neurosci.
Matthew P. Szuromi, Viktor K. Jirsa, William C. Stacey
2023 J jnl
NeuroImage
Mario Lavanga, Johanna Stumme, Bahar Hazal Yalçinkaya, Jan Fousek, Christiane Jockwitz, Hiba Sheheitli, Nora Bittner, Meysam Hashemi, Spase Petkoski, Svenja Caspers, Viktor K. Jirsa
2023 J jnl
CoRR
Michiel van der Vlag, Lionel Kusch, Alain Destexhe, Viktor K. Jirsa, Sandra Diaz-Pier, Jennifer S. Goldman
2022 J jnl
Frontiers Comput. Neurosci.
Jennifer S. Goldman, Lionel Kusch, David Aquilue, Bahar Hazal Yalçinkaya, Damien Depannemaecker, Kevin Ancourt, Trang-Anh E. Nghiem, Viktor K. Jirsa, Alain Destexhe
2022 J jnl
J. Comput. Neurosci.
Damien Depannemaecker, Anton Ivanov, Davide Lillo, Len Spek, Christophe Bernard, Viktor K. Jirsa
2022 J jnl
NeuroImage
Michael Schirner, Lia Domide, Dionysios Perdikis, Paul Triebkorn, Leon Stefanovski, Roopa Pai, Paula Prodan, Bogdan Valean, Jessica Palmer, Chloê Langford, André Blickensdörfer, Michiel van der Vlag, Sandra Diaz-Pier, Alexander Peyser, Wouter Klijn, Dirk Pleiter, Anne Nahm, Oliver Schmid, Michael Marmaduke Woodman, Lyuba Zehl, Jan Fousek, Spase Petkoski, Lionel Kusch, Meysam Hashemi, Daniele Marinazzo, Jean-François Mangin, Agnes Flöel, Simisola Akintoye, Bernd Carsten Stahl, Michael Cepic, Emily Johnson, Gustavo Deco, Anthony R. McIntosh, Claus C. Hilgetag, Marc Morgan, Bernd Schuller, Alex Upton, Colin McMurtrie, Timo Dickscheid, Jan G. Bjaalie, Katrin Amunts, Jochen Mersmann, Viktor K. Jirsa, Petra Ritter
2022 J jnl
J. Comput. Neurosci.
Viktor Sip, Maxime Guye, Fabrice Bartolomei, Viktor K. Jirsa
2022 J jnl
Mach. Learn. Sci. Technol.
Jayant Jha, Meysam Hashemi, Anirudh Nihalani Vattikonda, Huifang E. Wang, Viktor K. Jirsa
2022 J jnl
NeuroImage
Sora An, Jan Fousek, Zelma H. T. Kiss, Filomeno Cortese, Gwen van Der Wijk, Laina Beth McAusland, Rajamannar Ramasubbu, Viktor K. Jirsa, Andrea B. Protzner
2021 J jnl
CoRR
Michael Schirner, Lia Domide, Dionysios Perdikis, Paul Triebkorn, Leon Stefanovski, Roopa Pai, Paula Popa, Bogdan Valean, Jessica Palmer, Chloê Langford, André Blickensdörfer, Michiel van der Vlag, Sandra Diaz-Pier, Alexander Peyser, Wouter Klijn, Dirk Pleiter, Anne Nahm, Oliver Schmid, Michael Marmaduke Woodman, Lyuba Zehl, Jan Fousek, Spase Petkoski, Lionel Kusch, Meysam Hashemi, Daniele Marinazzo, Jean-François Mangin, Agnes Flöel, Simisola Akintoye, Bernd Carsten Stahl, Michael Cepic, Emily Johnson, Anthony R. McIntosh, Claus C. Hilgetag, Marc Morgan, Bernd Schuller, Alex Upton, Colin McMurtrie, Timo Dickscheid, Jan G. Bjaalie, Katrin Amunts, Jochen Mersmann, Viktor K. Jirsa, Petra Ritter
2021 J jnl
NeuroImage
Pierpaolo Sorrentino, Rosaria Rucco, Anna Lardone, Marianna Liparoti, Emahnuel Troisi Lopez, Carlo Cavaliere, Andrea Soricelli, Viktor K. Jirsa, Giuseppe Sorrentino, Enrico Amico
2021 J jnl
PLoS Comput. Biol.
Viktor Sip, Meysam Hashemi, Anirudh Nihalani Vattikonda, Michael Marmaduke Woodman, Huifang E. Wang, Julia Scholly, Samuel Medina Villalon, Maxime Guye, Fabrice Bartolomei, Viktor K. Jirsa
2021 J jnl
PLoS Comput. Biol.
Viktor Sip, Julia Scholly, Maxime Guye, Fabrice Bartolomei, Viktor K. Jirsa
2021 J jnl
PLoS Comput. Biol.
Meysam Hashemi, Anirudh Nihalani Vattikonda, Viktor Sip, Sandra Diaz-Pier, Alexander Peyser, Huifang E. Wang, Maxime Guye, Fabrice Bartolomei, Michael Marmaduke Woodman, Viktor K. Jirsa
2020 J jnl
NeuroImage
Demian Battaglia, Thomas Boudou, Enrique C. A. Hansen, Diego Lombardo, Sabrina Chettouf, Andreas Daffertshofer, Anthony R. McIntosh, Joelle Zimmermann, Petra Ritter, Viktor K. Jirsa
2020 J jnl
NeuroImage
Diego Lombardo, Catherine Cassé-Perrot, Jean-Philippe Ranjeva, Arnaud Le Troter, Maxime Guye, Jonathan Wirsich, Pierre Payoux, David Bartrés-Faz, Régis Bordet, Jill C. Richardson, Olivier Felician, Viktor K. Jirsa, Olivier Blin, Mira Didic, Demian Battaglia
2020 J jnl
NeuroImage
Meysam Hashemi, Anirudh Nihalani Vattikonda, Viktor Sip, Maxime Guye, Fabrice Bartolomei, Michael Marmaduke Woodman, Viktor K. Jirsa
2019 J jnl
PLoS Comput. Biol.
Simona Olmi, Spase Petkoski, Maxime Guye, Fabrice Bartolomei, Viktor K. Jirsa
2019 J jnl
J. Comput. Neurosci.
Christian G. Bénar, Christophe Grova, Viktor K. Jirsa, Jean-Marc Lina
2019 J jnl
Proc. Natl. Acad. Sci. USA
Francesca Melozzi, Eyal Bergmann, Julie A. Harris, Itamar Kahn, Viktor K. Jirsa, Christophe Bernard
2019 J jnl
Frontiers Comput. Neurosci.
Leon Stefanovski, Paul Triebkorn, Andreas Spiegler, Margarita-Arimatea Díaz-Cortés, Ana Solodkin, Viktor K. Jirsa, Anthony Randal McIntosh, Petra Ritter
2019 J jnl
PLoS Comput. Biol.
Sora An, Fabrice Bartolomei, Maxime Guye, Viktor K. Jirsa
2018 J jnl
NeuroImage
Huifang E. Wang, Karl J. Friston, Christian G. Bénar, Michael Marmaduke Woodman, Patrick Chauvel, Viktor K. Jirsa, Christophe Bernard
2018 J jnl
PLoS Comput. Biol.
Spase Petkoski, J. Matias Palva, Viktor K. Jirsa
2017 J jnl
NeuroImage
Jonathan Wirsich, Ben Gendon Yeshe Ridley, Pierre Besson, Viktor K. Jirsa, Christian G. Bénar, Jean-Philippe Ranjeva, Maxime Guye
2017 J jnl
NeuroImage
Viktor K. Jirsa, Timothée Proix, Dionysios Perdikis, Michael Marmaduke Woodman, Huifang E. Wang, J. Gonzalez-Martinez, Christophe Bernard, Christian G. Bénar, Maxime Guye, Patrick Chauvel, Fabrice Bartolomei
2016 J jnl
NeuroImage
Timothée Proix, Andreas Spiegler, Michael Schirner, Simon Rothmeier, Petra Ritter, Viktor K. Jirsa
2016 J jnl
IEEE J. Sel. Top. Signal Process.
Dimitri Van De Ville, Viktor K. Jirsa, Stephen C. Strother, Jonas Richiardi, Andrew Zalesky
2016 J jnl
Frontiers Comput. Neurosci.
Viktor Müller, Dionysios Perdikis, Timo von Oertzen, Rita Sleimen-Malkoun, Viktor K. Jirsa, Ulman Lindenberger
2016 J jnl
NeuroImage
Tim Kunze, Alexander Hunold, Jens Haueisen, Viktor K. Jirsa, Andreas Spiegler
2015 J jnl
NeuroImage
Michael Schirner, Simon Rothmeier, Viktor K. Jirsa, Anthony Randal McIntosh, Petra Ritter
2015 J jnl
PLoS Comput. Biol.
Sébastien Naze, Christophe Bernard, Viktor K. Jirsa
2015 J jnl
Frontiers Comput. Neurosci.
Petra Ritter, Viktor K. Jirsa, Anthony Randal McIntosh, Michael Breakspear
2015 J jnl
NeuroImage
Enrique C. A. Hansen, Demian Battaglia, Andreas Spiegler, Gustavo Deco, Viktor K. Jirsa
2015 J jnl
NeuroImage
Paula Sanz-Leon, Stuart A. Knock, Andreas Spiegler, Viktor K. Jirsa
2015 J jnl
PLoS Comput. Biol.
Mathieu Golos, Viktor K. Jirsa, Emmanuel Daucé
2015 J jnl
PLoS Comput. Biol.
Robert Becker, Stuart Knock, Petra Ritter, Viktor K. Jirsa
2015 J jnl
Frontiers Neuroinformatics
Henrik Matzke, Michael Schirner, Daniel Vollbrecht, Simon Rothmeier, Adalberto Llarena, Raúl Rojas, Paul Triebkorn, Lia Domide, Jochen Mersmann, Ana Solodkin, Viktor K. Jirsa, Anthony Randal McIntosh, Petra Ritter
2014 J jnl
NeuroImage
Tristan T. Nakagawa, Mark William Woolrich, Henry Luckhoo, Morten Joensson, Hamid Reza Mohseni, Morten L. Kringelbach, Viktor K. Jirsa, Gustavo Deco
2014 J jnl
Frontiers Neuroinformatics
Michael Marmaduke Woodman, Laurent Pezard, Lia Domide, Stuart Knock, Paula Leon, Jochen Mersmann, Anthony Randal McIntosh, Viktor K. Jirsa
2014 ch.
Encyclopedia of Computational Neuroscience
Viktor K. Jirsa
2014 ch.
Encyclopedia of Computational Neuroscience
Viktor K. Jirsa
2014 J jnl
Brain Connect.
Dipanjan Roy, Rodrigo Sigala, Michael Breakspear, Anthony Randal McIntosh, Viktor K. Jirsa, Gustavo Deco, Petra Ritter
2013 J jnl
NeuroImage
Dimitris A. Pinotsis, Enrique C. A. Hansen, Karl J. Friston, Viktor K. Jirsa
2013 J jnl
NeuroImage
Tristan T. Nakagawa, Viktor K. Jirsa, Andreas Spiegler, Anthony Randal McIntosh, Gustavo Deco
2013 J jnl
Frontiers Comput. Neurosci.
Viktor K. Jirsa, Viktor Müller
2013 J jnl
Frontiers Comput. Neurosci.
Dipanjan Roy, Viktor K. Jirsa
2013 J jnl
NeuroImage
Abir Hadriche, Laurent Pezard, Jean-Louis Nandrino, Hamadi Ghariani, Abdennaceur Kachouri, Viktor K. Jirsa
2013 J jnl
NeuroImage
Parham Aram, Dean R. Freestone, Michael Dewar, Kenneth Scerri, Viktor K. Jirsa, David B. Grayden, Visakan Kadirkamanathan
2013 J jnl
NeuroImage
Andreas Spiegler, Viktor K. Jirsa
2013 J jnl
Brain Connect.
Petra Ritter, Michael Schirner, Anthony Randal McIntosh, Viktor K. Jirsa
2013 J jnl
Frontiers Neuroinformatics
Paula Leon, Stuart Knock, Michael Marmaduke Woodman, Lia Domide, Jochen Mersmann, Anthony Randal McIntosh, Viktor K. Jirsa
2012 J jnl
Frontiers Comput. Neurosci.
Gustavo Deco, Mario Senden, Viktor K. Jirsa
2012 J jnl
NeuroImage
Arpan Banerjee, Emmanuelle Tognoli, J. A. Scott Kelso, Viktor K. Jirsa
2011 conf
HCI (20)
Silke Dodel, Joseph Cohn, Jochen Mersmann, Phan Luu, Chris Forsythe, Viktor K. Jirsa
2011 book
Nonlinear Dynamics in Human Behavior
Raoul Huys, Viktor K. Jirsa
2011 ch.
Nonlinear Dynamics in Human Behavior
Sarah Calvin, Viktor K. Jirsa
2011 J jnl
Brain Connect.
Young-Ah Rho, Anthony Randal McIntosh, Viktor K. Jirsa
2011 J jnl
PLoS Comput. Biol.
Dionysios Perdikis, Raoul Huys, Viktor K. Jirsa
2010 J jnl
NeuroImage
Michael Breakspear, Viktor K. Jirsa, Gustavo Deco
2010 conf
ICANN (2)
Dionysios Perdikis, Michael Marmaduke Woodman, Viktor K. Jirsa
2008 J jnl
PLoS Comput. Biol.
Roxana A. Stefanescu, Viktor K. Jirsa
2008 J jnl
PLoS Comput. Biol.
Raoul Huys, Breanna E. Studenka, Nicole L. Rheaume, Howard N. Zelaznik, Viktor K. Jirsa
2008 J jnl
NeuroImage
Arpan Banerjee, Emmanuelle Tognoli, Collins G. Assisi, J. A. Scott Kelso, Viktor K. Jirsa
2008 J jnl
PLoS Comput. Biol.
Anandamohan Ghosh, Y. Rho, Anthony Randal McIntosh, Rolf Kötter, Viktor K. Jirsa
2008 J jnl
PLoS Comput. Biol.
Gustavo Deco, Viktor K. Jirsa, Peter A. Robinson, Michael Breakspear, Karl J. Friston
2007 J jnl
Biol. Cybern.
Arpan Banerjee, Viktor K. Jirsa
2007 J jnl
NeuroImage
Mukeshwar Dhamala, Collins G. Assisi, Viktor K. Jirsa, Fred L. Steinberg, J. A. Scott Kelso
2005 J jnl
Biol. Cybern.
Collins G. Assisi, Viktor K. Jirsa, J. A. Scott Kelso
2004 J jnl
Neuroinformatics
Viktor K. Jirsa
2004 J jnl
Int. J. Bifurc. Chaos
Viktor K. Jirsa
2002 J jnl
IEEE Trans. Medical Imaging
Viktor K. Jirsa, Kelly J. Jantzen, Armin Fuchs, J. A. Scott Kelso
2001 conf
IPMI
Viktor K. Jirsa, Kelly J. Jantzen, Armin Fuchs, J. A. Scott Kelso
1998 J jnl
Neural Comput.
Viktor K. Jirsa, Armin Fuchs, J. A. Scott Kelso
1995 J jnl
Biol. Cybern.
Armin Fuchs, Viktor K. Jirsa, Hermann Haken, J. A. Scott Kelso
1994 J jnl
Biol. Cybern.
Viktor K. Jirsa, R. Friedrich, Hermann Haken, J. A. Scott Kelso
redb/extractors/pe_extractors/pe_signature_old.py
← Index redb/extractors/pe_extractors/pe_signature_old.py python
import inspect
import pefile

from hashlib import md5, sha1, sha256

from asn1crypto import cms, pem, x509, core

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


class PESignatureExtractor(PEExtractor):
    """
    RFC 3161 - Internet X.509 Public Key Infrastructure Time-Stamp Protocol (TSP)
    Section 2.4.2 defines the TSTInfo structure.
    https://tools.ietf.org/html/rfc3161#section-2.4.2

    Microsoft Authenticode Time Stamping Specification
    https://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/Authenticode_PE.docx
    """

    def __init__(
        self,
        filepath,
        log,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        pe=None,
    ):
        super().__init__(
            filepath,
            log,
            index_prefix,
            elastic_index,
            known_benign,
            known_malicious,
            pe,
        )
        self.elastic_index = self.index_prefix + "-pe_signature"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    @staticmethod
    def _extract_certificate_info(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(
            _id=format(certificate.serial_number, "x").upper(),
            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_md5=md5(cert_data).hexdigest().upper(),
            certificate_sha256=sha256(cert_data).hexdigest().upper(),
        )

    @staticmethod
    def _parse_microsoft_time_stamp(ts_token):
        class TSTInfo(core.Sequence):
            _fields = [
                ("version", core.Integer),
                ("policy_id", core.ObjectIdentifier),
                ("message_imprint", core.Sequence),
                ("serial_number", core.Integer),
                ("gen_time", core.GeneralizedTime),
                ("accuracy", core.Sequence, {"optional": True}),
                ("ordering", core.Boolean, {"optional": True}),
                ("nonce", core.Integer, {"optional": True}),
                ("tsa", core.Sequence, {"optional": True}),
                ("extensions", core.Sequence, {"optional": True}),
            ]

        # The content should be SignedData
        signed_data = ts_token["content"]

        # The actual timestamp should be in the encapContentInfo
        encap_content_info = signed_data["encap_content_info"]
        tst_info = TSTInfo.load(encap_content_info["content"])

        # Extract the genTime field from TSTInfo, type(genTime): <class 'datetime.datetime'>
        gen_time = tst_info["gen_time"].native

        return gen_time

    def _extract_signer_info(self, signer):
        self.log.debug(inspect.currentframe().f_code.co_name)
        signing_time = None

        for attr_set in [signer["signed_attrs"], signer["unsigned_attrs"]]:
            if attr_set:
                for attribute in attr_set:
                    attr_type = attribute["type"].dotted
                    if attr_type == "1.2.840.113549.1.9.5":  # signingTime
                        signing_time = attribute["values"][0].native
                        break
                    elif (
                        attr_type == "1.3.6.1.4.1.311.3.2.1"
                        or attr_type == "1.3.6.1.4.1.311.3.3.1"
                    ):  # microsoft_time_stamp_token
                        try:
                            ts_token = attribute["values"][0].native
                            signing_time = self._parse_microsoft_time_stamp(ts_token)
                            self.log.debug(
                                f"Signing Time from Microsoft Time Stamp Token: {signing_time}"
                            )
                        except Exception as e:
                            self.log.error(
                                f"Error parsing Microsoft Time Stamp Token: {e}"
                            )
                            self.log.error("Token structure:", attribute["values"][0])
                    elif attr_type == "1.2.840.113549.1.9.6":  # counterSignature
                        counter_sig_values = attribute["values"]
                        for counter_sig_value in counter_sig_values:
                            try:
                                counter_sig_info = cms.SignerInfo.load(
                                    counter_sig_value.native
                                )
                                cs_signed_attrs = counter_sig_info["signed_attrs"]
                                for cs_attr in cs_signed_attrs:
                                    cs_attr_type = cs_attr["type"].dotted
                                    if (
                                        cs_attr_type == "1.2.840.113549.1.9.5"
                                    ):  # signingTime
                                        signing_time = cs_attr["values"][0].native
                                        self.log.debug(
                                            "Signing Time (from countersignature):",
                                            signing_time,
                                        )
                                        break
                                if signing_time:
                                    break
                            except Exception as e:
                                self.log.error(
                                    f"Error processing countersignature: {e}"
                                )
                    if signing_time:
                        break
            if signing_time:
                break
        signer_serial_number = format(
            signer["sid"].native["serial_number"], "x"
        ).upper()
        grouped_serial_number = " ".join(
            [
                signer_serial_number[i : i + 2]
                for i in range(0, len(signer_serial_number), 2)
            ]
        )
        return PESigner(
            # this is to avoid duplicate _id with the Signer certificate used to sign as they are in the same ES index
            _id=format(signer["sid"].native["serial_number"], "x").upper()
            + signer["digest_algorithm"]["algorithm"].native,
            signer_serial_number=grouped_serial_number,
            signer_digest_algorithm=signer["digest_algorithm"]["algorithm"].native,
            signer_signature_algorithm=signer["signature_algorithm"][
                "algorithm"
            ].native,
            signing_time=(
                signing_time.strftime("%Y-%m-%d %H:%M:%S") if signing_time else None
            ),
            # "countersigners": extract_countersigners(signer), # TODO: Implement this
        )

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

        addr_8 = address + 8
        signature_data = bytes(
            self.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"]
        signers = signed_data["signer_infos"]

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

        signer_info_list = []
        for signer in signers:
            signer_info = self._extract_signer_info(signer)
            signer_info_list.append(signer_info)

        return certificates_list, signer_info_list

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            if self._is_signed():
                certificates_list, signers_list = self._extract_signature_info()
                # self.export_to_elastic([PECodeSigning(certificates_list, signers_list)])
                self.export_to_elastic(certificates_list, Tag.PE_CERTIFICATE.value)
                self.export_to_elastic(signers_list, Tag.PE_SIGNER.value)
            return True
        except Exception as e:
            self.log.error(f"Error extracting PE Signature: {e}")
            return None