Madhu Chetty

127 papers A* 2A 2B 18C 16Misc 1Journal 36Unranked 48
YearRankTypeTitle / Venue / Authors
2025 J jnl
Comput. Biol. Medicine
Jaskaran Gill, Madhu Chetty, Suryani Lim, Jennifer Hallinan
2025 conf
HIKM
Nabila Sekar Ramadhanti, Suryani Lim, Michal Chorev, Madhu Chetty, Fadi Charchar
2024 conf
ICBBE
Nabila Sekar Ramadhanti, Suryani Lim, Michal Chorev, Madhu Chetty, Fadi Charchar
2024 J jnl
Knowl. Based Syst.
Hasini Nakulugamuwa Gamage, Madhu Chetty, Suryani Lim, Jennifer Hallinan
2024 J jnl
IEEE Trans. Comput. Soc. Syst.
Shuo Yu, Feng Xia, Yueru Wang, Shihao Li, Falih Gozi Febrinanto, Madhu Chetty
2024 J jnl
CoRR
Shuo Yu, Feng Xia, Yueru Wang, Shihao Li, Falih Febrinanto, Madhu Chetty
2024 J jnl
Artif. Intell. Rev.
Kewen Ding, Madhu Chetty, Azadeh Noori Hoshyar, Tanusri Bhattacharya, Britt Klein
2023 B conf
IJCNN
Hasini Nakulugamuwa Gamage, Madhu Chetty, Suryani Lim, Jennifer Hallinan, Huy Nguyen
2023 J jnl
Informatics
Jaskaran Gill, Madhu Chetty, Suryani Lim, Jennifer Hallinan
2023 J jnl
ACM Trans. Intell. Syst. Technol.
Buddhika Kasthuriarachchy, Madhu Chetty, Adrian Shatte, Darren Walls
2023 J jnl
EURASIP J. Inf. Secur.
Md. Ezazul Islam, Md. Rafiqul Islam, Madhu Chetty, Suryani Lim, Mehmood Chadhar
2022 conf
HICSS
Md. Kamrul Islam, Madhu Chetty, Suryani Lim, Mehmood Chadhar, Syed Islam
2022 J jnl
Biosyst.
Jaskaran Gill, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2022 J jnl
Biosyst.
Madhu Chetty, Jennifer Hallinan, Gonzalo A. Ruz, Anil Wipat
2022 C conf
CIBCB
Hasini Nakulugamuwa Gamage, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2022 J jnl
Biosyst.
Hasini Nakulugamuwa Gamage, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2022 conf
AMCIS
Md. Ezazul Islam, Madhu Chetty, Suryani Lim, Mehmood Chadhar, Syed Islam
2022 C conf
CIBCB
Jaskaran Gill, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2021 C conf
CIBCB
Hasini Nakulugamuwa Gamage, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2021 J jnl
Knowl. Based Syst.
Rumana Nazmul, Madhu Chetty, Ahsan Raja Chowdhury
2021 B conf
IJCNN
Buddhika Kasthuriarachchy, Madhu Chetty, Adrian Shatte, Darren Walls
2021 C conf
CIBCB
Jaskaran Gill, Madhu Chetty, Adrian Shatte, Jennifer Hallinan
2021 conf
HICSS
Muhammad Saleem Malik, Mehmood Chadhar, Madhu Chetty
2021 C ed.
CIBCB
Jennifer Hallinan, Madhu Chetty, Gonzalo Ruz Heredia, Adrian Shatte, Suryani Lim
2020 conf
ACIS
Saleem Malik, Mehmood A. Chadhar, Madhu Chetty, Savanid Vatanasakdakul
2020 conf
EMCIS
Saleem Malik, Mehmood Chadhar, Madhu Chetty, Savanid Vatanasakdakul
2020 J jnl
Swarm Evol. Comput.
Rumana Nazmul, Madhu Chetty, Ahsan Raja Chowdhury
2020 B conf
IJCNN
Buddhika Kasthuriarachchy, Madhu Chetty, Gour C. Karmakar, Darren Walls
2019 conf
ACIS
Shipra Chhina, Mehmood Chadhar, Savanid Vatanasakdakul, Madhu Chetty
2019 J jnl
Biosyst.
Ahammed Sherief Kizhakkethil Youseph, Madhu Chetty, Gour C. Karmakar
2019 J jnl
Aust. J. Intell. Inf. Process. Syst.
Meena Santhanagopalan, Madhu Chetty, Cameron Foale, Britt Klein
2018 conf
ACIS
Saleem Malik, Madhu Chetty, Mehmood Chadhar
2018 conf
ACSW
Ahammed Sherief Kizhakkethil Youseph, Madhu Chetty, Gour C. Karmakar
2018 conf
ACSW
Meena Santhanagopalan, Madhu Chetty, Cameron Foale, Sunil Aryal, Britt Klein
2018 conf
ICONIP (7)
Meena Santhanagopalan, Madhu Chetty, Cameron Foale, Sunil Aryal, Britt Klein
2017 J jnl
Neurocomputing
Madalina M. Drugan, Marco A. Wiering, Peter Vamplew, Madhu Chetty
2016 conf
ICONIP (1)
Ahammed Sherief Kizhakkethil Youseph, Madhu Chetty, Gour C. Karmakar
2015 conf
ICONIP (3)
Ahammed Sherief Kizhakkethil Youseph, Madhu Chetty, Gour C. Karmakar
2015 conf
ICONIP (2)
Md. Abdur Rahman, Madhu Chetty, Dieter Bulach, Pramod P. Wangikar
2015 B conf
CEC
Ahammed Sherief Kizhakkethil Youseph, Madhu Chetty, Gour C. Karmakar
2015 J jnl
Neurocomputing
Ahsan Raja Chowdhury, Madhu Chetty
2015 C conf
CIBCB
Rubaiya Rahtin Khan, Madhu Chetty
2014 conf
ICONIP (2)
Rumana Nazmul, Madhu Chetty
2014 conf
ICONIP (1)
Ajay Nair, Madhu Chetty, Pramod P. Wangikar
2013 conf
ICONIP (2)
Rumana Nazmul, Madhu Chetty
2013 J jnl
BMC Bioinform.
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Sandeep Gaudana, Pramod P. Wangikar
2013 conf
GECCO (Companion)
Rumana Nazmul, Madhu Chetty
2013 B conf
IEEE Congress on Evolutionary Computation
Rumana Nazmul, Madhu Chetty
2013 J jnl
IEEE Trans. Evol. Comput.
Md. Kamrul Islam, Madhu Chetty
2013 J jnl
BMC Bioinform.
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2013 A conf
GECCO
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2013 conf
ICONIP (2)
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2013 conf
ICONIP (2)
Rumana Nazmul, Madhu Chetty
2013 conf
ICONIP (2)
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2013 A conf
GECCO
Nizamul Morshed, Madhu Chetty, Xuan Vinh Nguyen, Terry Caelli
2012 B conf
IEEE Congress on Evolutionary Computation
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2012 conf
ICONIP (2)
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2012 conf
ICONIP (5)
Nizamul Morshed, Madhu Chetty, Xuan Vinh Nguyen
2012 J jnl
BMC Bioinform.
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2012 A* conf
ICDM
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2012 conf
ICONIP (1)
Ahsan Raja Chowdhury, Madhu Chetty, Xuan Vinh Nguyen
2012 B conf
IEEE Congress on Evolutionary Computation
Rumana Nazmul, Madhu Chetty, Ram Samudrala, David K. Chalmers
2012 J jnl
BMC Syst. Biol.
Nizamul Morshed, Madhu Chetty, Xuan Vinh Nguyen
2011 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Ramesh Ram, Madhu Chetty
2011 conf
ICONIP (1)
Md. Kamrul Islam, Madhu Chetty, Abu Zafer M. Dayem Ullah, Kathleen Steinhöfel
2011 B conf
IEEE Congress on Evolutionary Computation
Ahsan Raja Chowdhury, Madhu Chetty
2011 conf
Australasian Conference on Artificial Intelligence
Nizamul Morshed, Madhu Chetty
2011 conf
ICONIP (1)
Md. Kamrul Islam, Madhu Chetty, M. Manzur Murshed
2011 conf
ICONIP (1)
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2011 J jnl
Bioinform.
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2011 conf
ICONIP (3)
Long Tang, Madhu Chetty, Suryani Lim
2011 B conf
IEEE Congress on Evolutionary Computation
Md. Kamrul Islam, Madhu Chetty, M. Manzur Murshed
2011 conf
ICONIP (3)
Xuan Vinh Nguyen, Madhu Chetty, Ross L. Coppel, Pramod P. Wangikar
2011 B conf
IEEE Congress on Evolutionary Computation
Nizamul Morshed, Madhu Chetty
2011 conf
ICONIP (2)
Nizamul Morshed, Madhu Chetty, Xuan Vinh Nguyen
2011 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Tamjidul Hoque, Madhu Chetty, Andrew Lewis, Abdul Sattar
2010 B conf
IEEE Congress on Evolutionary Computation
Santi S. Chanthaphavong, Madhu Chetty
2010 B conf
IEEE Congress on Evolutionary Computation
Md. Kamrul Islam, Madhu Chetty
2010 J jnl
Neurocomputing
Madhu Chetty, Alioune Ngom, Elena Marchiori
2010 J jnl
Neurocomputing
Tamjidul Hoque, Madhu Chetty, Andrew Lewis, Abdul Sattar, Vicky M. Avery
2010 C conf
FUSION
Girija Chetty, Madhu Chetty
2010 J jnl
Pattern Recognit. Lett.
Shandar Ahmad, Madhu Chetty, Bertil Schmidt
2009 J jnl
Neurocomputing
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2009 J jnl
J. Comput. Biol.
Tamjidul Hoque, Madhu Chetty, Abdul Sattar
2009 ch.
Biomedical Data and Applications
Tamjidul Hoque, Madhu Chetty, Abdul Sattar
2009 conf
PRIB
Ramesh Ram, Madhu Chetty
2009 conf
PRIB
Girija Chetty, Madhu Chetty
2009 conf
Australasian Conference on Artificial Intelligence
Md. Kamrul Islam, Madhu Chetty
2008 conf
PRIB
Chia Huey Ooi, Shyh Wei Teng, Madhu Chetty
2008 conf
PRIB
Ramesh Ram, Madhu Chetty, Dieter Bulach
2008 conf
PRIB
Tamjidul Hoque, Madhu Chetty, Andrew Lewis, Abdul Sattar
2008 conf
PRIB
Ramesh Ram, Madhu Chetty
2008 J jnl
Genom. Proteom. Bioinform.
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2008 ed.
PRIB
Madhu Chetty, Alioune Ngom, Shandar Ahmad
2007 conf
PRIB
Ramesh Ram, Madhu Chetty
2007 B conf
IEEE Congress on Evolutionary Computation
Ramesh Ram, Madhu Chetty
2007 J jnl
Algorithms Mol. Biol.
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2007 J jnl
Data Min. Knowl. Discov.
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2007 conf
PRIB
Tamjidul Hoque, Madhu Chetty, Laurence S. Dooley
2007 conf
ACIS-ICIS
Ramesh Ram, Madhu Chetty
2007 B conf
IEEE Congress on Evolutionary Computation
Tamjidul Hoque, Madhu Chetty, Abdul Sattar
2006 B conf
IEEE Congress on Evolutionary Computation
Tamjidul Hoque, Madhu Chetty, Laurence S. Dooley
2006 conf
Australian Conference on Artificial Intelligence
Tamjidul Hoque, Madhu Chetty, Laurence S. Dooley
2006 C conf
CIBCB
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2006 C conf
CIBCB
Ramesh Ram, Madhu Chetty, Trevor I. Dix
2006 J jnl
BMC Bioinform.
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2006 B conf
IEEE Congress on Evolutionary Computation
Ramesh Ram, Madhu Chetty, Trevor I. Dix
2006 J jnl
J. Intell. Fuzzy Syst.
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2006 conf
PRIB
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2006 C conf
CIBCB
Tamjidul Hoque, Madhu Chetty, Laurence S. Dooley
2006 A* conf
ICDM
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2005 C conf
IDEAL
Chia Huey Ooi, Madhu Chetty
2005 conf
EvoWorkshops
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2005 B conf
Congress on Evolutionary Computation
Tamjidul Hoque, Madhu Chetty, Laurence Dooley
2005 C conf
CIBCB
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2005 conf
ISBMDA
Tamjidul Hoque, Madhu Chetty, Laurence Dooley
2005 conf
ISBMDA
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2005 C conf
CIBCB
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2005 ch.
Advances in Bioinformatics and Its Applications
Niranjan P. Bidargaddi, Madhu Chetty, Joarder Kamruzzaman
2005 B conf
PAKDD
Chia Huey Ooi, Madhu Chetty
2005 conf
ISBMDA
Chia Huey Ooi, Madhu Chetty, Shyh Wei Teng
2005 ch.
Advances in Bioinformatics and Its Applications
Chia Huey Ooi, Madhu Chetty, Iqbal Gondal
2004 C conf
HIS
Tamjidul Hoque, Madhu Chetty, Laurence Dooley
2004 C conf
HIS
Tamjidul Hoque, Madhu Chetty, Laurence Dooley
2003 C conf
HIS
Niranjan P. Bidargaddi, Madhu Chetty
2002 Misc conf
AISC
Madhu Chetty
2002 J jnl
Comput. Sci. Eng.
Madhu Chetty, Rajkumar Buyya
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