Calvin Ko

21 papers A* 2A 5Misc 1Journal 1Unranked 12
YearRankTypeTitle / Venue / Authors
2010 J jnl
Int. J. Commun. Networks Distributed Syst.
Songjie Wei, Alefiya Hussain, Jelena Mirkovic, Calvin Ko
2009 Misc conf
TRIDENTCOM
Songjie Wei, Calvin Ko, Jelena Mirkovic, Alefiya Hussain
2007 conf
DETER
Brett Wilson, Calvin Ko, Alefiya Hussain
2006 A conf
RAID
Chinyang Henry Tseng, Shiau-Huey Wang, Calvin Ko, Karl N. Levitt
2006 conf
QoP
Jelena Mirkovic, Peter L. Reiher, Sonia Fahmy, Roshan K. Thomas, Alefiya Hussain, Stephen Schwab, Calvin Ko
2005 conf
IWIA
Daniel F. Sterne, Poornima Balasubramanyam, David Carman, Brett Wilson, Rajesh Talpade, Calvin Ko, Ravindra Balupari, Chinyang Henry Tseng, Thomas F. Bowen, Karl N. Levitt, Jeff Rowe
2005 A conf
RAID
Chinyang Henry Tseng, Tao Song, Poornima Balasubramanyam, Calvin Ko, Karl N. Levitt
2005 conf
Formal Aspects in Security and Trust
Tao Song, Calvin Ko, Chinyang Henry Tseng, Poornima Balasubramanyam, Anant Chaudhary, Karl N. Levitt
2004 A conf
RAID
Tao Song, Calvin Ko, Jim Alves-Foss, Cui Zhang, Karl N. Levitt
2003 conf
SASN
Chinyang Henry Tseng, Poornima Balasubramanyam, Calvin Ko, Rattapon Limprasittiporn, Jeff Rowe, Karl N. Levitt
2003 conf
SAINT Workshops
Paul Brutch, Calvin Ko
2003 conf
DISCEX (2)
Calvin Ko, Karl N. Levitt
2003 conf
DISCEX (2)
Calvin Ko
2002 A conf
ACSAC
Dustin Lee, Jeff Rowe, Calvin Ko, Karl N. Levitt
2002 conf
S&P
Calvin Ko, Timothy Redmond
2001 conf
Recent Advances in Intrusion Detection
Calvin Ko, Paul Brutch, Jeff Rowe, Guy Tsafnat, Karl N. Levitt
2000 A* conf
USENIX Security Symposium
Calvin Ko, Timothy Fraser, Lee Badger, Douglas Kilpatrickv
2000 conf
S&P
Calvin Ko
1997 conf
S&P
Calvin Ko, Manfred Ruschitzka, Karl N. Levitt
1994 A conf
ACSAC
Calvin Ko, George Fink, Karl N. Levitt
1993 A* conf
CCS
Calvin Ko, Deborah A. Frincke, Terrance Goan, Todd L. Heberlein, Karl N. Levitt, Biswanath Mukherjee, Christopher Wee
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