Imran Baig

24 papers C 2Journal 15Unranked 7
YearRankTypeTitle / Venue / Authors
2025 J jnl
Robotics Auton. Syst.
Qamar Ul Islam, Fatemeh Khozaei, El Manaa Salah Al Barhoumi, Imran Baig, Dmitry Ignatyev
2023 J jnl
Microprocess. Microsystems
Umer Farooq, Imran Baig, Muhammad Khurram Bhatti, Habib Mehrez, Arun Kumar, Manoj Gupta
2022 J jnl
Sensors
Imran Baig, Najam Ul Hasan, Prajoona Valsalan, Manaf Zghaibeh
2021 J jnl
Wirel. Pers. Commun.
Tariq Ali, Abdul Rasheed Razwan, Imran Baig, Muhammad Irfan, Umar Draz
2020 conf
FMEC
Imran Baig, Umer Farooq, Najam Ul Hasan, Manaf Zghaibeh, Umer Mukhtar Rana, Ahthasham Sajid
2020 J jnl
IEEE Access
Manaf Zghaibeh, Umer Farooq, Najam Ul Hasan, Imran Baig
2019 C conf
CoDIT
Imran Baig, Umer Farooq, Najam Ul Hasan, Manaf Zghaibeh, Ahthasham Sajid, U. Mukhtar Rana
2019 conf
Wireless Days
Imran Baig, Umer Farooq, Najam Ul Hasan, Manaf Zghaibeh, Varun Jeoti, Muhammad Imran
2019 J jnl
EURASIP J. Wirel. Commun. Netw.
Umer Farooq, Najam Ul Hasan, Imran Baig, Muhammad Naeem Shehzad
2019 J jnl
J. Ambient Intell. Humaniz. Comput.
Ahthasham Sajid, Khalid Hussain, Syed Bilal Hussain Shah, Tahir Iqbal, Imran Baig
2019 conf
SSD
Umer Farooq, Najam Ul Hasan, Imran Baig
2018 C conf
ISNCC
Imran Baig, Umer Farooq, Najam Ul Hasan, Manaf Zghaibeh, U. Mukhtar Rana, Muhammad Imran, Muhammad Ayaz
2018 J jnl
Trans. Emerg. Telecommun. Technol.
Imran Baig, Umer Farooq, Ejaz Ahmed, Muhammad Imran, Muhammad Shoaib
2018 J jnl
IEEE Access
Umer Farooq, Imran Baig, Bander A. Alzahrani
2017 J jnl
IEEE Access
Imran Baig
2016 J jnl
J. Sensors
AtaUllah Ghafoor, Muhammad Sher, Muhammad Imran, Imran Baig
2016 conf
ICUFN
Najam Ul Hasan, Waleed Ejaz, Imran Baig, Manaf Zghaibeh, Alagan Anpalagan
2014 J jnl
Wirel. Networks
Imran Baig, Varun Jeoti, Ataul Aziz Ikram, Muhammad Ayaz
2013 J jnl
Wirel. Pers. Commun.
Imran Baig, Varun Jeoti
2013 J jnl
J. Netw. Comput. Appl.
Imran Baig, Muhammad Ayaz, Varun Jeoti
2011 J jnl
J. Netw. Comput. Appl.
Muhammad Ayaz, Imran Baig, Azween B. Abdullah, Ibrahima Faye
2010 conf
APCCAS
Imran Baig, Varun Jeoti
2010 conf
APCCAS
Imran Baig, Varun Jeoti
2010 conf
CICSyN
Imran Baig, Varun Jeoti
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