Ian Craddock

79 papers A* 2B 6C 3Journal 41Unranked 26
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Guanxiong Sun, Majid Mirmehdi, Zahraa S. Abdallah, Raúl Santos-Rodríguez, Ian Craddock, Telmo de Menezes e Silva Filho
2025 conf
CUI
Elaine Czech, Ewan Soubutts, Ian Craddock, Aisling Ann O'Kane
2024 J jnl
CoRR
Thanaphon Suwannaphong, Ferdian Jovan, Ian Craddock, Ryan McConville
2024 J jnl
CoRR
Thanaphon Suwannaphong, Ryan McConville, Ian Craddock
2023 J jnl
J. Ambient Intell. Humaniz. Comput.
Haixia Bi, Miquel Perelló-Nieto, Raúl Santos-Rodríguez, Peter A. Flach, Ian Craddock
2023 J jnl
Proc. ACM Hum. Comput. Interact.
Rachel Eardley, Emma L. Tonkin, Ewan Soubutts, Amid Ayobi, Gregory J. L. Tourte, Rachael Gooberman-Hill, Ian Craddock, Aisling Ann O'Kane
2023 A* conf
KDD
Ferdian Jovan, Catherine Morgan, Ryan McConville, Emma L. Tonkin, Ian Craddock, Alan L. Whone
2023 J jnl
CoRR
Ferdian Jovan, Catherine Morgan, Ryan McConville, Emma L. Tonkin, Ian Craddock, Alan L. Whone
2023 C conf
HealthCom
James Pope, Catherine Morgan, Alessandro Masullo, Ian Craddock, Alan L. Whone
2023 conf
PerCom Workshops
Taku Yamagata, Emma L. Tonkin, Benjamin Arana Sanchez, Ian Craddock, Miquel Perelló-Nieto, Raúl Santos-Rodríguez, Weisong Yang, Peter A. Flach
2023 J jnl
CoRR
Taku Yamagata, Emma L. Tonkin, Benjamin Arana Sanchez, Ian Craddock, Miquel Perelló-Nieto, Raúl Santos-Rodríguez, Weisong Yang, Peter A. Flach
2022 J jnl
Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.
Rachel Eardley, Sue Mackinnon, Emma L. Tonkin, Ewan Soubutts, Amid Ayobi, Jess Linington, Gregory J. L. Tourte, Zoe Banks Gross, David J. Bailey, Russell Knights, Rachael Gooberman-Hill, Ian Craddock, Aisling Ann O'Kane
2022 ch.
Integrating Artificial Intelligence and IoT for Advanced Health Informatics
Weisong Yang, Rafael Poyiadzi, Yoav Ben-Shlomo, Ian Craddock, Liz Coulthard, Raúl Santos-Rodríguez, James Selwood, Niall Twomey
2022 J jnl
Proc. ACM Hum. Comput. Interact.
Amid Ayobi, Rachel Eardley, Ewan Soubutts, Rachael Gooberman-Hill, Ian Craddock, Aisling Ann O'Kane
2022 A* conf
CHI
Roisin McNaney, Catherine Morgan, Pranav Kulkarni, Julio Vega, Farnoosh Heidarivincheh, Ryan McConville, Alan L. Whone, Mickey Kim, Reuben Kirkham, Ian Craddock
2022 J jnl
CoRR
Alessandro Masullo, Toby Perrett, Tilo Burghardt, Ian Craddock, Dima Damen, Majid Mirmehdi
2022 J jnl
CoRR
Ferdian Jovan, Ryan McConville, Catherine Morgan, Emma Tonkin, Alan L. Whone, Ian Craddock
2022 conf
SmartWear@MobiCom
Thanaphon Suwannaphong, Ryan McConville, Ian Craddock
2021 J jnl
Sensors
Luis R. Peraza, Kirsi M. Kinnunen, Roisin McNaney, Ian Craddock, Alan L. Whone, Catherine Morgan, Richard Joules, Robin Wolz
2021 conf
PerCom Workshops
Catherine Morgan, Farnoosh Heidarivincheh, Ian Craddock, Ryan McConville, Miquel Perelló-Nieto, Emma L. Tonkin, Alessandro Masullo, Antonis Vafeas, Mickey Kim, Roisin McNaney, Gregory J. L. Tourte, Alan L. Whone
2021 J jnl
ACM Trans. Comput. Heal.
Aftab Khan, Sebastian Mellor, Rachel King, Balazs Janko, William S. Harwin, R. Simon Sherratt, Ian Craddock, Thomas Plötz
2021 J jnl
Sensors
Farnoosh Heidarivincheh, Ryan McConville, Catherine Morgan, Roisin McNaney, Alessandro Masullo, Majid Mirmehdi, Alan L. Whone, Ian Craddock
2021 J jnl
Future Gener. Comput. Syst.
Ryan McConville, Gareth Archer, Ian Craddock, Michal Kozlowski, Robert J. Piechocki, James Pope, Raúl Santos-Rodríguez
2020 conf
AAI4H@ECAI
Rafael Poyiadzi, Weisong Yang, Yoav Ben-Shlomo, Ian Craddock, Liz Coulthard, Raúl Santos-Rodríguez, James Selwood, Niall Twomey
2020 J jnl
CoRR
Rafael Poyiadzi, Weisong Yang, Yoav Ben-Shlomo, Ian Craddock, Liz Coulthard, Raúl Santos-Rodríguez, James Selwood, Niall Twomey
2020 J jnl
J. Netw. Comput. Appl.
Atis Elsts, Niall Twomey, Ryan McConville, Ian Craddock
2020 J jnl
Sensors
Pawel Zalewski, Letizia Marchegiani, Atis Elsts, Robert J. Piechocki, Ian Craddock, Xenofon Fafoutis
2020 B conf
ICPR
Ryan McConville, Raúl Santos-Rodríguez, Robert J. Piechocki, Ian Craddock
2020 J jnl
ACM Trans. Internet Things
Atis Elsts, Xenofon Fafoutis, George Oikonomou, Robert J. Piechocki, Ian Craddock
2020 B conf
EWSN
Antonis Vafeas, Md Israfil Biswas, Xenofon Fafoutis, Atis Elsts, Ian Craddock, Robert J. Piechocki, George Oikonomou
2019 J jnl
Sensors
Kristina Y. Yordanova, Stefan Lüdtke, Samuel Whitehouse, Frank Krüger, Adeline Paiement, Majid Mirmehdi, Ian Craddock, Thomas Kirste
2019 J jnl
CoRR
Ryan McConville, Raúl Santos-Rodríguez, Robert J. Piechocki, Ian Craddock
2019 conf
iWOAR
Emma L. Tonkin, Ola Bykowska, Hannah Berg, Ian Craddock
2018 J jnl
Informatics
Niall Twomey, Tom Diethe, Xenofon Fafoutis, Atis Elsts, Ryan McConville, Peter A. Flach, Ian Craddock
2018 J jnl
CoRR
Atis Elsts, Tilo Burghardt, Dallan Byrne, Dima Damen, Xenofon Fafoutis, Sion L. Hannuna, Víctor Ponce-López, Alessandro Masullo, Majid Mirmehdi, George Oikonomou, Robert J. Piechocki, Emma Tonkin, Antonis Vafeas, Przemyslaw Woznowski, Ian Craddock
2018 conf
WF-IoT
Xenofon Fafoutis, Atis Elsts, George C. Oikonomou, Robert J. Piechocki, Ian Craddock
2018 J jnl
IEEE Access
Christopher Beach, Sammy Krachunov, James Pope, Xenofon Fafoutis, Robert J. Piechocki, Ian Craddock, Alexander J. Casson
2018 conf
WCNC Workshops
James Pope, Antonis Vafeas, Atis Elsts, George Oikonomou, Robert J. Piechocki, Ian Craddock
2018 J jnl
IEEE Commun. Mag.
Atis Elsts, Xenofon Fafoutis, Przemyslaw Woznowski, Emma Tonkin, George Oikonomou, Robert J. Piechocki, Ian Craddock
2018 J jnl
IET Comput. Vis.
Lili Tao, Tilo Burghardt, Majid Mirmehdi, Dima Damen, Ashley Cooper, Massimo Camplani, Sion L. Hannuna, Adeline Paiement, Ian Craddock
2018 B conf
SMARTCOMP
Antonis Vafeas, Atis Elsts, James Pope, Xenofon Fafoutis, George Oikonomou, Robert J. Piechocki, Ian Craddock
2018 J jnl
IEEE Access
Xenofon Fafoutis, Atis Elsts, Robert J. Piechocki, Ian Craddock
2018 conf
WF-IoT
Xenofon Fafoutis, Letizia Marchegiani, Atis Elsts, James Pope, Robert J. Piechocki, Ian Craddock
2018 B conf
EWSN
Atis Elsts, Ryan McConville, Xenofon Fafoutis, Niall Twomey, Robert J. Piechocki, Raúl Santos-Rodriguez, Ian Craddock
2018 J jnl
CoRR
Ryan McConville, Gareth Archer, Ian Craddock, Herman J. ter Horst, Robert J. Piechocki, James Pope, Raúl Santos-Rodriguez
2018 J jnl
Sensors
Emma Tonkin, Alison Burrows, Przemyslaw Woznowski, Pawel Laskowski, Kristina Y. Yordanova, Niall Twomey, Ian Craddock
2018 J jnl
IEEE Trans. Ind. Informatics
Atis Elsts, Xenofon Fafoutis, Simon Duquennoy, George Oikonomou, Robert J. Piechocki, Ian Craddock
2018 conf
WF-IoT
Ryan McConville, Dallan Byrne, Ian Craddock, Robert J. Piechocki, James Pope, Raúl Santos-Rodríguez
2017 conf
GIoTS
Atis Elsts, Xenofon Fafoutis, Robert J. Piechocki, Ian Craddock
2017 J jnl
EAI Endorsed Trans. Pervasive Health Technol.
Xenofon Fafoutis, Antonis Vafeas, Balazs Janko, R. Simon Sherratt, James Pope, Atis Elsts, Evangelos Mellios, Geoffrey S. Hilton, George Oikonomou, Robert J. Piechocki, Ian Craddock
2017 conf
GIoTS
Sammy Krachunov, Christopher Beach, Alexander J. Casson, James Pope, Xenofon Fafoutis, Robert J. Piechocki, Ian Craddock
2017 conf
PerCom Workshops
Przemyslaw Woznowski, Alison Burrows, Pawel Laskowski, Emma Tonkin, Ian Craddock
2017 J jnl
CoRR
Tom Diethe, Niall Twomey, Meelis Kull, Peter A. Flach, Ian Craddock
2017 conf
LCN Workshops
James Pope, Ryan McConville, Michal Kozlowski, Xenofon Fafoutis, Raúl Santos-Rodríguez, Robert J. Piechocki, Ian Craddock
2017 B conf
DCOSS
Atis Elsts, Xenofon Fafoutis, James Pope, George C. Oikonomou, Robert J. Piechocki, Ian Craddock
2017 conf
iWOAR
Ian Craddock
2017 J jnl
Neurocomputing
Niall Twomey, Tom Diethe, Ian Craddock, Peter A. Flach
2017 conf
PerCom Workshops
Kristina Y. Yordanova, Samuel Whitehouse, Adeline Paiement, Majid Mirmehdi, Thomas Kirste, Ian Craddock
2016 conf
IoTBD
Przemyslaw Woznowski, Rachel King, William S. Harwin, Ian Craddock
2016 J jnl
Comput. Vis. Image Underst.
Lili Tao, Adeline Paiement, Dima Damen, Majid Mirmehdi, Sion L. Hannuna, Massimo Camplani, Tilo Burghardt, Ian Craddock
2016 J jnl
EURASIP J. Wirel. Commun. Netw.
Xenofon Fafoutis, Evgeny Tsimbalo, Evangelos Mellios, Geoffrey S. Hilton, Robert J. Piechocki, Ian Craddock
2016 conf
ACCV Workshops (1)
Lili Tao, Tilo Burghardt, Majid Mirmehdi, Dima Damen, Ashley Cooper, Sion L. Hannuna, Massimo Camplani, Adeline Paiement, Ian Craddock
2016 J jnl
CoRR
Lili Tao, Tilo Burghardt, Majid Mirmehdi, Dima Damen, Ashley Cooper, Sion L. Hannuna, Massimo Camplani, Adeline Paiement, Ian Craddock
2016 J jnl
Comput. Commun.
Przemyslaw Woznowski, Dritan Kaleshi, George C. Oikonomou, Ian Craddock
2016 B conf
SECON
Xenofon Fafoutis, Lindsay Clare, Neil J. Grabham, Steve P. Beeby, Bernard H. Stark, Robert J. Piechocki, Ian Craddock
2016 conf
LCN Workshops
Atis Elsts, Simon Duquennoy, Xenofon Fafoutis, George C. Oikonomou, Robert J. Piechocki, Ian Craddock
2016 C conf
HealthCom
Wenda Li, Bo Tan, Robert J. Piechocki, Ian Craddock
2016 conf
CHI Extended Abstracts
Xu Luo, Przemyslaw Woznowski, Alison Burrows, Mo Haghighi, Ian Craddock
2016 conf
eHealth 360°
Xenofon Fafoutis, Balazs Janko, Evangelos Mellios, Geoffrey S. Hilton, R. Simon Sherratt, Robert J. Piechocki, Ian Craddock
2016 J jnl
CoRR
Niall Twomey, Tom Diethe, Meelis Kull, Hao Song, Massimo Camplani, Sion L. Hannuna, Xenofon Fafoutis, Ni Zhu, Pete Woznowski, Peter A. Flach, Ian Craddock
2015 C conf
HealthCom
Lili Tao, Tilo Burghardt, Sion L. Hannuna, Massimo Camplani, Adeline Paiement, Dima Damen, Majid Mirmehdi, Ian Craddock
2015 conf
ICC Workshops
Przemyslaw Woznowski, Xenofon Fafoutis, Terence Song, Sion L. Hannuna, Massimo Camplani, Lili Tao, Adeline Paiement, Evangelos Mellios, Mo Haghighi, Ni Zhu, Geoffrey S. Hilton, Dima Damen, Tilo Burghardt, Majid Mirmehdi, Robert J. Piechocki, Dritan Kaleshi, Ian Craddock
2015 J jnl
IEEE Intell. Syst.
Ni Zhu, Tom Diethe, Massimo Camplani, Lili Tao, Alison Burrows, Niall Twomey, Dritan Kaleshi, Majid Mirmehdi, Peter A. Flach, Ian Craddock
2015 conf
WF-IoT
Evgeny Tsimbalo, Xenofon Fafoutis, Evangelos Mellios, Mo Haghighi, Bo Tan, Geoffrey S. Hilton, Robert J. Piechocki, Ian Craddock
2015 conf
WF-IoT
Bo Tan, Alison Burrows, Robert J. Piechocki, Ian Craddock, Qingchao Chen, Karl Woodbridge, Kevin Chetty
2014 conf
BODYNETS
Evangelos Mellios, Angelos A. Goulianos, Sema Dumanli, Geoffrey S. Hilton, Robert J. Piechocki, Ian Craddock
2014 J jnl
CoRR
Alison Burrows, Rachel Gooberman-Hill, Ian Craddock, David Coyle
2014 J jnl
CoRR
Alison Burrows, Rachel Gooberman-Hill, Ian Craddock, David Coyle
2013 conf
BODYNETS
Sema Dumanli, Sedat Görmüs, Ian Craddock
redb/extractors/decompiler/bninja/similarity/minhasher.py
← Index redb/extractors/decompiler/bninja/similarity/minhasher.py python
import logging
import random
from enum import Enum

from ..analysis.medium_level_normalization import MediumLevelNormalization

try:
    from .minhashcustom import MinHashCustom
    from ..analysis.low_level_normalization import LowLevelNormalization
except ImportError:
    # Fallback to absolute imports (for multiprocessing spawned processes)
    from redb.extractors.decompiler.bninja.similarity.minhashcustom import MinHashCustom
    from redb.extractors.decompiler.bninja.analysis.low_level_normalization import LowLevelNormalization

## Values for this configuration were extracted from https://github.com/danielplohmann/mcrit/blob/main/mcrit/config/MinHashConfig.py#L10
# Length in number of Shingles of which a minhash consists
# this value represents the length of sha256sum hash truncated
MINHASH_SIGNATURE_LENGTH: int = 64
# Number of bits per signature element (1-32 bits)
MINHASH_SIGNATURE_BITS: int = 8


class TokenKind(Enum):
    LLIL = "llil"
    TYPED_LLIL = "typed_llil"
    MLIL = "mlil"
    TYPED_MLIL = "typed_mlil"


class MinHasher:
    # stick to the default method
    MINHASH_STRATEGY_HASH_ALL = 1

    def __init__(self, seed, il_function, kind: TokenKind = TokenKind.LLIL):
        self._minhash_seeds = []
        self.il_func = il_function
        self.kind = kind
        self._minhash_permutation = []
        self._signature_segments = []
        self._initMinhashing(seed)

    def _initMinhashing(self, MINHASH_SEED=None):
        random.seed(MINHASH_SEED)
        # init sequence of seeds
        self._minhash_seeds = [
            random.randint(0, MinHashCustom.getHashMax()) for _ in range(MINHASH_SIGNATURE_LENGTH)
        ]

    def make_ngrams(self, tokens, n=3):
        """Take the ngrams of the IL we try to pass into the functions"""
        return [tuple(tokens[i:i+n]) for i in range(len(tokens) - n + 1)]

    def _extract_tokens(self):
        """Extract the IL tokens from the IL function, picking the right
        normalizer (LLIL/MLIL) and the right normalization mode
        (skeleton/typed) based on self.kind."""
        if self.kind in (TokenKind.LLIL, TokenKind.TYPED_LLIL):
            normalizer = LowLevelNormalization()
        elif self.kind in (TokenKind.MLIL, TokenKind.TYPED_MLIL):
            normalizer = MediumLevelNormalization()
        else:
            raise ValueError(f"Unsupported token kind: {self.kind}")

        # typed variants include operand type info, skeleton variants don't
        if self.kind in (TokenKind.TYPED_LLIL, TokenKind.TYPED_MLIL):
            normalize = normalizer.normalize_instr_with_operands
        else:
            normalize = normalizer.normalize_instruction_all_levels

        instructions = []
        for basic_block in self.il_func.basic_blocks:
            for il in basic_block:
                instructions.append(normalize(il))

        return instructions

    def calculateMinHash(self):
        """Calculate hash function every time, then take minimum shingle per shingler"""
        minhash_result = MinHashCustom(minhash_bits=MINHASH_SIGNATURE_BITS)
        minhash_signature = []

        tokens = self._extract_tokens()
        shingles = self.make_ngrams(tokens, n=3)

        # Functions with fewer than 3 IL instructions can't produce n-grams
        # Return empty minhash for such small functions (thunks, stubs, etc.)
        # Triggered by 39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a
        if not shingles:
            return []

        # Generate the MinHash
        for seed in self._minhash_seeds:
            hashed_shingles = [
                self.shingle_hash(shingle, seed) for shingle in shingles
            ]
            min_value = min(hashed_shingles)

            if MINHASH_SIGNATURE_BITS < 32:
                min_value %= (2 ** MINHASH_SIGNATURE_BITS)

            minhash_signature.append(min_value)

        minhash_result.setMinHash(minhash_signature)
        return minhash_result.getMinHashInt()

    def shingle_hash(self, shingle, hash_seed=0):
        """Produce a single 32bit UINT hash for a given shingle"""
        return MinHashCustom.hashData(shingle, hash_seed)