Kasorn Galajit

17 papers A 1Journal 1Unranked 15
YearRankTypeTitle / Venue / Authors
2025 conf
IUKM (1)
Oranus Kotsuwan, Chakapat Chokchaisiri, Waree Kongprawechnon, Suradej Duangpummet, Kasorn Galajit, Jessada Karnjana
2025 conf
KST
Taksaorn Aksornsin, Athit Tantipjitkasem, Nuttaat Sricharoendhum, Thanayos Ongpisut, Jessada Karnjana, Kasorn Galajit, Seksan Laitrakun, Takayuki Nishio
2025 conf
IUKM (1)
Julathit Chetsawang, Kaweewat Sricharoenchit, Krittapak Jairak, Warit Yuvaniyama, Peeravich Teerapatanapan, Kittin Traisiwakul, Tawin Supmahaudom, Akkharawoot Takhom, Phutphalla Kong, Didin Agustian Permadi, Sharifah Hafizah Syed Ariffin, Kasorn Galajit, Surasak Boonkla, Jessada Karnjana
2025 conf
APSIPA
Woramet Simrum, Paweena Kanokhong, Chakapat Chokchaisiri, Somrudee Deepaisarn, Kittipisut Chansri, Chanyut Lisawat, Waranrach Viriyavit, Akkharawoot Takhom, Phutphalla Kong, Didin Agustian Permadi, Sharifah Hafizah Syed Ariffin, Surasak Boonkla, Kasorn Galajit, Jessada Karnjana
2024 conf
O-COCOSDA
Myat Aye Aye Aung, Hay Mar Soe Naing, Aye Mya Hlaing, Win Pa Pa, Kasorn Galajit, Candy Olivia Mawalim
2024 conf
O-COCOSDA
Pantarat Vichathai, Puchit Bunpleng, Patharapol Laolakkana, Sasiporn Usanavasin, Phondanai Khanti, Kasorn Galajit, Jessada Karnjana
2024 conf
O-COCOSDA
Hay Mar Soe Naing, Win Pa Pa, Aye Mya Hlaing, Myat Aye Aye Aung, Kasorn Galajit, Candy Olivia Mawalim
2023 conf
IUKM (2)
Thanakon Augsondit, Thanaphat Khemniwat, Pannathorn Sathirasattayanon, Patthranit Kaewcharuay, Kasorn Galajit, Jessada Karnjana, Sasiporn Usanavasin
2023 conf
O-COCOSDA
Phondanai Khanti, Pannathorn Sathirasattayanon, Patthranit Kaewcharuay, Nanthayod Termkoh, Ekachai Phaisangittisagul, Kasorn Galajit, Jessada Karnjana
2022 conf
SICE
Nutchanon Siripool, Kasorn Galajit, Jessada Karnjana, Teera Phatrapornnant, Waree Kongprawechnon
2022 conf
SICE
Norranat Songsriboonsit, Poraneepan Tantawanich, Phuriphan Prathipasen, Waree Kongprawechnon, Kasorn Galajit, Teera Phatrapornnant, Jessada Karnjana
2022 J jnl
Comput. Speech Lang.
Candy Olivia Mawalim, Kasorn Galajit, Jessada Karnjana, Shunsuke Kidani, Masashi Unoki
2021 conf
APSIPA ASC
Kasorn Galajit, Jessada Karnjana, Pakinee Aimmanee, Masashi Unoki
2020 A conf
INTERSPEECH
Candy Olivia Mawalim, Kasorn Galajit, Jessada Karnjana, Masashi Unoki
2019 conf
ICGSP
Ratthamontree Burimas, Tidanat Kumpuak, Mongkonchai Intarauksorn, Kasorn Galajit, Pakinee Aimmanee, Jessada Karnjana
2018 conf
IIH-MSP (2)
Kasorn Galajit, Jessada Karnjana, Pakinee Aimmanee, Masashi Unoki
2017 conf
APSIPA
Jessada Karnjana, Kasorn Galajit, Pakinee Aimmanee, Chai Wutiwiwatchai, Masashi Unoki
redb/extractors/js_extractors/js_content.py
← Index redb/extractors/js_extractors/js_content.py python
"""Persists raw + normalised text into the generic `code_text_content` table.

Reads the raw source and the deobfuscation result directly from the shared
JSContext so no extra compute happens here — both values are computed once
per sample (the source at JSContext construction, the deobfuscation lazily
on first access) and reused by any extractor that needs them.

`text_normalized` is left NULL when the deobfuscation pass produced no
output, so analysts can distinguish "we tried and got nothing" from
"normalisation succeeded".
"""

import inspect
from datetime import datetime, timezone
from typing import Any

from redb.extractors.enum import Tag
from redb.extractors.js_extractor import JSExtractor


class JSContentExtractor(JSExtractor):

    def __init__(
        self, filepath, log, exporters=None, index_prefix=None,
        known_benign=False, known_malicious=False, source=None, context=None,
    ):
        super().__init__(
            filepath, log, exporters, index_prefix,
            known_benign, known_malicious, source, context=context,
        )
        self.content_row = None
        self.log.debug(inspect.currentframe().f_code.co_name)

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

    def extract(self):
        src = self.js_source
        if not src:
            return None

        deobfuscated, normalizer_used = self._context.deobfuscated

        self.content_row = {
            "content_type": self._context.content_type,
            "text_raw": src,
            "text_normalized": deobfuscated,  # may be None
            "normalizer_used": normalizer_used,  # may be None
        }
        return self.content_row

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type != "ClickHouseExporter":
            return None
        if not self.content_row:
            return None

        r = self.content_row
        data = [[
            self.sha256,
            r["content_type"],
            r["text_raw"],
            r["text_normalized"],
            r["normalizer_used"],
            datetime.now(timezone.utc),
        ]]

        column_names = [
            "sha256",
            "content_type",
            "text_raw",
            "text_normalized",
            "normalizer_used",
            "analysis_date",
        ]

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

        return (data, column_names, column_type_names)

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