Hakan Gultekin

27 papers Journal 26Unranked 1
YearRankTypeTitle / Venue / Authors
2024 J jnl
IEEE Trans. Intell. Transp. Syst.
Cihan Tugrul Cicek, Çagri Koç, Hakan Gultekin, Günes Erdogan
2023 J jnl
IEEE Access
Mustafa Cagatay Kocer, Ahmet Onen, Jaesung Jung, Hakan Gultekin, Sahin Albayrak
2021 J jnl
INFORMS J. Comput.
Cihan Tugrul Cicek, Zuo-Jun Max Shen, Hakan Gultekin, Bülent Tavli
2021 J jnl
IEEE Trans. Ind. Electron.
Cihan Emre Kement, Hakan Gultekin, Bülent Tavli
2021 J jnl
Robotics Comput. Integr. Manuf.
Hakan Gultekin, Sinan Gürel, Rabia Taspinar
2021 J jnl
IEEE Commun. Mag.
Cihan Emre Kement, Bülent Tavli, Hakan Gultekin, Halim Yanikomeroglu
2021 J jnl
Int. J. Prod. Res.
Nihat Öner, Hakan Gultekin, Çagri Koç
2020 J jnl
IEEE Access
Cihan Tugrul Cicek, Hakan Gultekin, Bülent Tavli, Halim Yanikomeroglu
2020 J jnl
CoRR
Cihan Emre Kement, Bülent Tavli, Hakan Gultekin, Halim Yanikomeroglu
2019 J jnl
Robotics Comput. Integr. Manuf.
Sinan Gürel, Hakan Gultekin, Vahid Eghbal Akhlaghi
2019 J jnl
Comput. Oper. Res.
Cihan Tugrul Cicek, Hakan Gultekin, Bülent Tavli
2018 J jnl
CoRR
Cihan Tugrul Cicek, Tugser Kutlu, Hakan Gultekin, Bülent Tavli, Halim Yanikomeroglu
2018 J jnl
Comput. Oper. Res.
Hakan Gultekin, Betul Coban, Vahid Eghbal Akhlaghi
2018 J jnl
CoRR
Cihan Tugrul Cicek, Hakan Gultekin, Bülent Tavli, Halim Yanikomeroglu
2017 J jnl
IEEE Trans. Ind. Informatics
Cihan Emre Kement, Hakan Gultekin, Bülent Tavli, Tolga Girici, Suleyman Uludag
2016 J jnl
Ad Hoc Networks
Huseyin Ugur Yildiz, Kemal Bicakci, Bülent Tavli, Hakan Gultekin, Davut Incebacak
2013 J jnl
Comput. Oper. Res.
Zeynep Uruk, Hakan Gultekin, M. Selim Akturk
2011 conf
ICINCO (2)
M. Selim Akturk, Adnan Tula, Hakan Gultekin
2011 J jnl
Comput. Stand. Interfaces
Kemal Bicakci, Hakan Gultekin, Bülent Tavli, Ibrahim Ethem Bagci
2010 J jnl
Comput. Oper. Res.
Hakan Gultekin, M. Selim Akturk, Oya Ekin Karasan
2010 J jnl
J. Sched.
Yves Crama, Hakan Gultekin
2009 J jnl
Comput. Oper. Res.
Hakan Gultekin, Oya Ekin Karasan, M. Selim Akturk
2009 J jnl
IEEE Commun. Lett.
Kemal Bicakci, Hakan Gultekin, Bülent Tavli
2008 J jnl
J. Sched.
Hakan Gultekin, M. Selim Akturk, Oya Ekin Karasan
2007 J jnl
Comput. Oper. Res.
Hakan Gultekin, M. Selim Akturk, Oya Ekin Karasan
2006 J jnl
Eur. J. Oper. Res.
Hakan Gultekin, M. Selim Akturk, Oya Ekin Karasan
2005 J jnl
Discret. Appl. Math.
M. Selim Akturk, Hakan Gultekin, Oya Ekin Karasan
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"