Kasun Karunanayaka

38 papers A* 2B 3C 8Journal 7Unranked 16
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Access
Nethmi Pathirana, Azma Imtiaz, Shakir Saheel, Kasun Karunanayaka, Adrian David Cheok
2025 conf
CHI Extended Abstracts
Yadeesha Weerasinghe, Kavisha Gimhani Perera, Sanka Chandika Gallage, Soundarya Ramesh, Kasun Karunanayaka, Suranga Nanayakkara
2025 J jnl
CoRR
Yasith Samaradivakara, Asela Pathirage, Thavindu Ushan, Prasanth Sasikumar, Kasun Karunanayaka, Chamath Keppitiyagama, Suranga Nanayakkara
2024 conf
ICSPCS
Vinuri Piyathilake, Asanka P. Sayakkara, Kenneth M. Thilakarathna, Randil Pushpananda, Lasanthi De Silva, Kasun Karunanayaka, Oshani E. Wickramasinghe, Vishmina Obeysekara, Gayathri Purage
2024 C conf
IECON
Pandula Pallewatta, Thilina Halloluwa, Kasun Karunanayaka, Gihan P. Seneviratne, Samantha Mathara Arachchi
2024 conf
ISIE
Oshani E. Wickramasinghe, Naveen Rajan, Chathura Wanniarachchi, Kasun Karunanayaka, Prasad Wimalaratne
2024 conf
ISIE
Chathura Wanniarachchi, Prasad Wimalaratne, Kasun Karunanayaka
2024 C conf
IECON
Mohamed Safrullah Mohomed, Mohammed Ashfaq Ashar, Abdul Qadir Vilcassim, Sukumar Kavishan, Kasun Karunanayaka, Manjusri Wickramasinghe, Adrian David Cheok
2024 C conf
IECON
Pandula Pallewatta, Kasun Karunanayaka, Samantha Mathara Arachchi, Thilina Halloluwa, Gihan P. Seneviratne
2024 conf
CHI Extended Abstracts
Yasith Samaradivakara, Thavindu Ushan, Asela Pathirage, Prasanth Sasikumar, Kasun Karunanayaka, Chamath Keppitiyagama, Suranga Nanayakkara
2023 J jnl
IEEE Access
Kasun Karunanayaka, Adrian David Cheok, Somaiyeh Vedadi
2023 C conf
IECON
Rusiri Illesinghe, Shayan Wickrama Arachchi, Heshan Kavikarage, Anupama Karunarathna, Kasun Karunanayaka, Thilina Halloluwa, Upul Anuradha Rathnayake
2021 conf
INTERACT (5)
Kasun Karunanayaka, Anton Nijholt, Thilina Halloluwa, Nimesha Ranasinghe, Manjusri Wickramasinghe, Dhaval Vyas
2020 conf
IHIET (Lausanne)
Dushani Perera, Maneesha Rajaratne, Shiromi Arunathilake, Kasun Karunanayaka, Buddy Liyanage
2018 J jnl
IEEE Trans. Vis. Comput. Graph.
Kasun Karunanayaka, Nurafiqah Johari, Surina Hariri, Hanis Camelia, Kevin Stanley Bielawski, Adrian David Cheok
2018 book
Adrian David Cheok, Kasun Karunanayaka
2017 J jnl
Pers. Ubiquitous Comput.
Adrian David Cheok, Chamari Priyange Edirisinghe, Kasun Karunanayaka
2017 C conf
ACE
Kevin Stanley Bielawski, Nur Ellyza Abd Rahman, Azhri Azhar, Kasun Karunanayaka, Mohammed Rabea Taleb Banalzwaa, Ibrahim Gamal Mahmoud Moteir, Adrian David Cheok
2017 C conf
IECON
Kasun Karunanayaka, Halimahtuss Saadiah, Hamizah Shahroom, Adrian David Cheok
2016 B conf
ICMI
Anton Nijholt, Carlos Velasco, Kasun Karunanayaka, Gijs Huisman
2016 conf
MVAR@ICMI
Surina Hariri, Nur Ain Mustafa, Kasun Karunanayaka, Adrian David Cheok
2016 conf
MVAR@ICMI
Nur Ellyza Abd Rahman, Azhri Azhar, Kasun Karunanayaka, Adrian David Cheok, Mohammad Abdullah Mohamad Johar, Jade Gross, Andoni Luis Aduriz
2016 B conf
HAI
Nur Ellyza Abd Rahman, Azhri Azhar, Kasun Karunanayaka, Adrian David Cheok, Mohammad Abdullah Mohamad Johar, Jade Gross, Andoni Luis Aduriz
2016 C conf
ACE
Nur Ellyza Abd Rahman, Azhri Azhar, Mohammad Abdullah Mohamad Johar, Kasun Karunanayaka, Adrian David Cheok, Jade Gross, Andoni Luis Aduriz
2016 ed.
MHFI@ICMI
Anton Nijholt, Carlos Velasco, Gijs Huisman, Kasun Karunanayaka
2016 B conf
HAI
Nur Amira Samshir, Nurafiqah Johari, Kasun Karunanayaka, Adrian David Cheok
2015 C conf
Advances in Computer Entertainment
Adrian David Cheok, Kasun Karunanayaka, Nur Amira Samshir, Nurafiqah Johari
2015 A* conf
CHI
Beryl Plimmer, Liang He, Tariq Zaman, Kasun Karunanayaka, Alvin W. Yeo, Garen Jengan, Rachel Blagojevic, Ellen Yi-Luen Do
2013 conf
INTERACT (3)
Jeffrey Tzu Kwan Valino Koh, Kasun Karunanayaka, Ryohei Nakatsu
2013 conf
HCI (4)
Kasun Karunanayaka, Sanath Siriwardana, Chamari Priyange Edirisinghe, Ryohei Nakatsu, Gopalakrishnakone Ponnampalam
2012 A* conf
VR
Remi Tache, Hunfuko Asanka Abeykoon, Kasun Karunanayaka, Prabhash Kumarasinghe, Gerhard Roth, Owen Noel Newton Fernando, Adrian David Cheok
2011 J jnl
Comput. Entertain.
Dilrukshi Abeyrathne, Chamari Priyange Edirisinghe, Nimesha Ranasinghe, Kasun Karunanayaka, Kening Zhu, Roshan Lalintha Peiris, Owen Noel Newton Fernando, Adrian David Cheok, Nancy Lan-Lan Ma, Yukihiro Morisawa
2011 conf
BODYNETS
Nimesha Ranasinghe, Kasun Karunanayaka, Adrian David Cheok, Owen Noel Newton Fernando, Hideaki Nii, Gopalakrishnakone Ponnampalam
2011 conf
BODYNETS
Nimesha Ranasinghe, Kasun Karunanayaka, Adrian David Cheok, Owen Noel Newton Fernando, Hideaki Nii, Gopalakrishnakone Ponnampalam
2011 conf
AmI
Kasun Karunanayaka, Jeffrey Tzu Kwan Valino Koh, Eishem Bilal Naik, Adrian David Cheok
2011 J jnl
Comput. Entertain.
Jeffrey Tzu Kwan Valino Koh, Kasun Karunanayaka, Jose Sepulveda, Mili John Tharakan, Manoj Krishnan, Adrian David Cheok
2010 conf
Advances in Computer Entertainment Technology
Jeffrey Tzu Kwan Valino Koh, Kasun Karunanayaka, Jose Sepulveda, Mili John Tharakan, Manoj Krishnan, Adrian David Cheok
2009 conf
SIGGRAPH ASIA Art Gallery & Emerging Technologies
Adrian David Cheok, Dilrukshi Abeyrathne, Chamari Priyange Edirisinghe, Owen Noel Newton Fernando, Isuru Sawubhagya Godage, Kris Hoogendoorn, Junsong Hou, Kasun Karunanayaka, Michelle Narangoda, Roshan Lalintha Peiris, Nimesha Ranasinghe, James Keng Soon Teh, Wei Wang Thang, Kening Zhu, Makoto Danjo, Miyuru Dayarathna, Charith Lasantha Fernando, Nancy Lan-Lan Ma, Yukihiro Morisawa, Anusha Indrajith Withana
redb/extractors/pe_extractors/pe_imports.py
← Index redb/extractors/pe_extractors/pe_imports.py python
import inspect
from typing import Any, List, Tuple
from datetime import datetime, timezone

from redb.extractors.enum import Tag
from redb.extractors.pe_extractor import PEExtractor
from redb.models.dataclasses import PEImport


class PEImportExtractor(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_imports"
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def _extract_imports(self):
        self.log.debug(inspect.currentframe().f_code.co_name)

        imports_symbols = []
        imports_lib = []
        imports_total = 0
        # pe_import = None
        try:
            directory_entry_import = getattr(self.pe, "DIRECTORY_ENTRY_IMPORT", [])
            imports_total = len(directory_entry_import)
            for entry in directory_entry_import:
                symbols = []
                tmp_import = {}
                libname = entry.dll.decode() if entry.dll else ""
                imports_lib.append(libname)
                # replace . with _ to avoid issues with elastic
                # entryname = entryname.replace(".", "_")
                for symbol in entry.imports:
                    if symbol.name:
                        symbols.append(symbol.name.decode())
                # imports_symbols[entryname] = symbols
                tmp_import[libname] = symbols
                imports_symbols.append(tmp_import)
            return PEImport(
                pe_imports_total=imports_total,
                pe_import_libraryName=imports_lib if imports_lib else None,
                pe_import_functions=imports_symbols if imports_symbols else None,
            )
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
        return pe_import

    def extract(self):
        try:
            self.log.debug(inspect.currentframe().f_code.co_name)
            return self._extract_imports()
        except Exception as e:
            self.log.error(f"Extract imports error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.extract()
        elif exporter_type == "ClickHouseExporter":
            imports = self.extract()
            if (
                imports is None
                or imports.pe_imports_total == 0
                or (
                    imports.pe_import_libraryName is None
                    and imports.pe_import_functions is None
                )
            ):
                return None

            # Flatten the data - one row per function import
            data = []
            current_time = datetime.now(timezone.utc)

            for lib_funcs in imports.pe_import_functions:
                for lib, funcs in lib_funcs.items():
                    for func in funcs:
                        data.append(
                            [
                                self.sha256,  # sha256
                                self.md5,  # md5
                                self.sha1,  # sha1
                                lib,  # library_name
                                func,  # function_name
                                current_time,  # analysis_date
                            ]
                        )

            column_names = [
                "sha256",
                "md5",
                "sha1",
                "library_name",
                "function_name",
                "analysis_date",
            ]

            column_type_names = [
                "FixedString(64)",
                "FixedString(32)",
                "FixedString(40)",
                "LowCardinality(Nullable(String))",
                "LowCardinality(Nullable(String))",
                "DateTime64(3, 'UTC')",
            ]

            if not data:
                return None

            return (data, column_names, column_type_names)

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