Cenk Albayrak

27 papers Journal 12Unranked 15
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Wirel. Commun. Lett.
Sinasi Cetinkaya, Cenk Albayrak, Hüseyin Arslan
2025 J jnl
IEEE Access
Cenk Albayrak
2024 J jnl
Phys. Commun.
Mehmet Turhal, Cenk Albayrak, Yigit Mahmutoglu, Kadir Türk
2024 conf
SIU
Oguzhan Baser, Mehmet Ali Küçük, Cenk Albayrak, Kadir Türk
2024 J jnl
IEEE Access
Mehmet Ali Küçük, Cenk Albayrak, Kadir Türk, Halim Yanikomeroglu
2024 conf
SIU
Mehmet Ali Küçük, Cenk Albayrak, Kadir Türk
2024 conf
SIU
Besra Çetindere Vela, Cenk Albayrak, Kadir Türk
2023 J jnl
Phys. Commun.
Gokce Hacioglu, Cenk Albayrak, Kadir Türk
2023 J jnl
IEEE Trans. Inf. Forensics Secur.
Cenk Albayrak, Sinasi Cetinkaya, Kadir Türk, Huseyin Arslan
2022 conf
SIU
Besra Çetindere, Cenk Albayrak, Kadir Türk
2022 conf
ICC Workshops
Cenk Albayrak, Huseyin Arslan, Kadir Türk
2021 J jnl
CoRR
Gokce Hacioglu, Kadir Türk, Cenk Albayrak
2020 J jnl
Phys. Commun.
Cenk Albayrak, Kadir Türk, Emin Tugcu, Ayhan Yazgan
2019 J jnl
CoRR
Cenk Albayrak, Kadir Türk, Emin Tugcu, Cemaleddin Simsek, Ayhan Yazgan
2018 conf
SIU
Emin Tugcu, Cenk Albayrak, Ayhan Yazgan, Cemaleddin Simsek, Kadir Türk
2018 conf
SIU
Cenk Albayrak, Cemaleddin Simsek, Emin Tugcu, Ayhan Yazgan, Hakan Erdol, Kadir Türk
2018 conf
TSP
Ayhan Yazgan, Cemaleddin Simsek, Cenk Albayrak, Emin Tugcu, Kadir Türk
2018 conf
TSP
Cemaleddin Simsek, Emin Tugcu, Cenk Albayrak, Ayhan Yazgan, Kadir Türk
2017 conf
SIU
Cemaleddin Simsek, Cenk Albayrak, Kadir Türk
2017 J jnl
IEEE Commun. Lett.
Cenk Albayrak, Cemaleddin Simsek, Kadir Türk
2017 conf
TSP
Cenk Albayrak, Kadir Türk
2017 J jnl
Wirel. Pers. Commun.
Cenk Albayrak, Kadir Türk
2017 conf
SIU
Cenk Albayrak, Cemaleddin Simsek, Kadir Türk
2016 conf
SIU
Cenk Albayrak, Kadir Türk
2016 J jnl
CoRR
Cenk Albayrak, Cemaleddin Simsek, Kadir Türk
2016 conf
TSP
Cenk Albayrak, Kadir Türk
2013 conf
SIU
Cemaleddin Simsek, Ismail Kaya, Cenk Albayrak
redb/extractors/decompiler/bninja/similarity/minhashcustom.py
← Index redb/extractors/decompiler/bninja/similarity/minhashcustom.py python
import numpy as np
import mmh3

class MinHashCustom:
    """
    DTO for an actual MinHash
    <minhash>: a binary sequence of packed int8/32 values
    <minhash_int>: the equivalent representation of <minhash> but as list of int8/32
    """

    _HASH_MAX = 0xFFFFFFFF
    _MINHASH_BITS = 32

    def getSignatureEntrySize(self):
        return 1 if self.MINHASH_BITS <= 8 else 4

    def __init__(self, function_addr=None, minhash_bytes=None, minhash_signature=None, minhash_bits=32):
        self.minhash = b""
        self.minhash_int = []
        if minhash_bits:
            self._MINHASH_BITS = minhash_bits
        if minhash_bytes and minhash_signature:
            raise ValueError("Can use only one keyword argument")
        if minhash_bytes:
            if self._MINHASH_BITS <= 8:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint8)
            else:
                minhash_signature = np.frombuffer(minhash_bytes, dtype=np.uint32)
            self.setMinHash(minhash_signature)
        elif minhash_signature:
            self.setMinHash(minhash_signature)

        self.shingler_composition = {}
        self.function_addr = function_addr

    def hasMinHash(self):
        return len(self.minhash) > 0

    def getMinHash(self):
        return self.minhash

    def getMinHashInt(self):
        return self.minhash_int

    def setMinHash(self, minhash_signature):
        self.minhash_int = [i % 2 ** self._MINHASH_BITS for i in minhash_signature]
        if self._MINHASH_BITS <= 8:
            self.minhash = np.array(self.minhash_int, dtype=np.uint8).tobytes()
        else:
            self.minhash = np.array(self.minhash_int, dtype=np.uint32).tobytes()

    def getComposition(self):
        return self.shingler_composition

    def scoreAgainst(self, other):
        return self.calculateMinHashScore(self.minhash, other.minhash, minhash_bits=self._MINHASH_BITS)

    @staticmethod
    def getHashMax():
        return MinHashCustom._HASH_MAX

    @staticmethod
    def hashData(data, seed) -> int:
        if isinstance(data, (str, bytes, bytearray)):
            return mmh3.hash(data, seed) & MinHashCustom._HASH_MAX
        elif isinstance(data, (list, tuple)):
            to_hash = "|".join(str(elem) for elem in data)
            return mmh3.hash(to_hash, seed) & MinHashCustom._HASH_MAX
        else:
            raise NotImplementedError(
                f"Type not supported for hashData: {type(data).__name__}"
            )

    @staticmethod
    def calculateMinHashScore(first, second, minhash_bits=32):
        if minhash_bits <= 8:
            first_np = np.frombuffer(first, dtype=np.uint8)
            second_np = np.frombuffer(second, dtype=np.uint8)
        else:
            first_np = np.frombuffer(first, dtype=np.uint32)
            second_np = np.frombuffer(second, dtype=np.uint32)
        return 100.0 * sum(first_np == second_np) / len(first_np)

    @staticmethod
    def calculateMinHashIntScore(first, second):
        score = 0
        num_hashes = len(first)
        if num_hashes:
            for index, part in enumerate(first):
                score += 1 if part == second[index] else 0
            return 100.0 * score / num_hashes
        return 0.0

    @property
    def MINHASH_BITS(self):
        return self._MINHASH_BITS