Waqar Hussain

67 papers A* 1A 5C 6Journal 39Unranked 16
YearRankTypeTitle / Venue / Authors
2026 J jnl
Phys. Commun.
Waqar Hussain, Yousaf Khan, Zahid Zaman, Maha Sliti
2025 J jnl
CoRR
Waqar Hussain, John C. Grundy
2025 J jnl
Comput.
Amna Batool, Waqar Hussain
2025 J jnl
Int. J. Data Sci. Anal.
Bilal Ahmed, Li Wang, Waqar Hussain, Ghulam Mustafa, Muhammad Tanvir Afzal
2025 conf
RAIE
Waqar Hussain
2025 conf
ICSE-SEIS
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Jon Whittle, Waqar Hussain, Harsha Perera, Arif Nurwidyantoro
2025 J jnl
ISPRS Int. J. Geo Inf.
Minza Mumtaz, Syed Humayoun Jahanzaib, Waqar Hussain, Sadia Khan, Youssef M. Youssef, Saleh Qaysi, Abdalla Abdelnabi, Nassir S. Al-Arifi, Mahmoud E. Abd-Elmaboud
2024 conf
CHASE@ICSE
Tahira Iqbal, Kuldar Taveter, Tarmo Strenze, Waqar Hussain, Omar Haggag, John Alphonsus Matthews, Anu Piirisild
2024 J jnl
CoRR
Waqar Hussain
2023 J jnl
Biomed. Signal Process. Control.
Abdul Rafay, Waqar Hussain
2023 conf
REW
Paul McIntosh, Ingo Mueller, Waqar Hussain
2023 J jnl
CoRR
Tahira Iqbal, Kuldar Taveter, Tarmo Strenze, Waqar Hussain, Omar Haggag, John Alphonsus Matthews, Anu Piirisild
2023 J jnl
Empir. Softw. Eng.
Arif Nurwidyantoro, Mojtaba Shahin, Michel Chaudron, Waqar Hussain, Harsha Perera, Rifat Ara Shams, Jon Whittle
2023 J jnl
J. Syst. Softw.
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Harsha Perera, Jon Whittle, Arif Nurwidyantoro, Waqar Hussain
2023 J jnl
AI Ethics
Pravik Solanki, John Grundy, Waqar Hussain
2022 J jnl
Multim. Tools Appl.
Usama Hasan, Waqar Hussain, Nouman Rasool
2022 conf
MOBILESoft
Mattia Fazzini, Hourieh Khalajzadeh, Omar Haggag, Zhaoqing Li, Humphrey O. Obie, Chetan Arora, Waqar Hussain, John C. Grundy
2022 J jnl
IEEE Trans. Software Eng.
Waqar Hussain, Mojtaba Shahin, Rashina Hoda, Jon Whittle, Harsha Perera, Arif Nurwidyantoro, Rifat Ara Shams, Gillian C. Oliver
2022 J jnl
IEEE Trans. Software Eng.
Waqar Hussain, Harsha Perera, Jon Whittle, Arif Nurwidyantoro, Rashina Hoda, Rifat Ara Shams, Gillian C. Oliver
2022 J jnl
Inf. Softw. Technol.
Arif Nurwidyantoro, Mojtaba Shahin, Michel R. V. Chaudron, Waqar Hussain, Rifat Ara Shams, Harsha Perera, Gillian C. Oliver, Jon Whittle
2022 J jnl
CoRR
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Harsha Perera, Jon Whittle, Arif Nurwidyantoro, Waqar Hussain
2022 J jnl
Briefings Bioinform.
Mahwish Shahid, Maham Ilyas, Waqar Hussain, Yaser Daanial Khan
2022 J jnl
IEEE Access
Mojtaba Shahin, Waqar Hussain, Arif Nurwidyantoro, Harsha Perera, Rifat Ara Shams, John C. Grundy, Jon Whittle
2022 conf
CHASE@ICSE
Ingo Mueller, Waqar Hussain, John C. Grundy
2022 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Sheraz Naseer, Waqar Hussain, Yaser Daanial Khan, Nouman Rasool
2022 J jnl
Briefings Bioinform.
Waqar Hussain
2021 J jnl
IEEE Softw.
Jon Whittle, Maria Angela Ferrario, Will Simm, Waqar Hussain
2021 conf
ICSE-SEIS
Humphrey O. Obie, Waqar Hussain, Xin Xia, John C. Grundy, Li Li, Burak Turhan, Jon Whittle, Mojtaba Shahin
2021 C conf
APSEC
Humphrey O. Obie, Mojtaba Shahin, John Grundy, Burak Turhan, Li Li, Waqar Hussain, Jon Whittle
2021 J jnl
CoRR
Humphrey O. Obie, Mojtaba Shahin, John C. Grundy, Burak Turhan, Li Li, Waqar Hussain, Jon Whittle
2021 J jnl
CoRR
Waqar Hussain, Tony Clear, Stephen G. MacDonell
2021 J jnl
CoRR
Waqar Hussain, Mojtaba Shahin, Rashina Hoda, Jon Whittle, Harsha Perera, Arif Nurwidyantoro, Rifat Ara Shams, Gillian C. Oliver
2021 J jnl
CoRR
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Jon Whittle, Waqar Hussain, Harsha Perera, Arif Nurwidyantoro
2021 A conf
RE
Jon Whittle, Waqar Hussain
2021 J jnl
CoRR
Waqar Hussain, Didar Zowghi, Tony Clear, Stephen G. MacDonell, Kelly Blincoe
2021 conf
HICSS
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Waqar Hussain, Harsha Perera, Arif Nurwidyantoro, Jon Whittle
2021 J jnl
CoRR
Mojtaba Shahin, Waqar Hussain, Arif Nurwidyantoro, Harsha Perera, Rifat Ara Shams, John C. Grundy, Jon Whittle
2021 J jnl
CoRR
Harsha Perera, Rashina Hoda, Rifat Ara Shams, Arif Nurwidyantoro, Mojtaba Shahin, Waqar Hussain, Jon Whittle
2021 J jnl
CoRR
Tony Clear, Waqar Hussain, Stephen G. MacDonell
2021 A conf
ESEM
Arif Nurwidyantoro, Mojtaba Shahin, Michel Chaudron, Waqar Hussain, Harsha Perera, Rifat Ara Shams, Jon Whittle
2021 J jnl
CoRR
Arif Nurwidyantoro, Mojtaba Shahin, Michel Chaudron, Waqar Hussain, Harsha Perera, Rifat Ara Shams, Jon Whittle
2021 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Muhammad Aizaz Akmal, Waqar Hussain, Nouman Rasool, Yaser Daanial Khan, Sher Afzal Khan, Kuo-Chen Chou
2021 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Muhammad Awais, Waqar Hussain, Yaser Daanial Khan, Nouman Rasool, Sher Afzal Khan, Kuo-Chen Chou
2020 J jnl
CoRR
Humphrey O. Obie, Waqar Hussain, Xin Xia, John C. Grundy, Li Li, Burak Turhan, Jon Whittle, Mojtaba Shahin
2020 A* conf
ICSE
Harsha Perera, Waqar Hussain, Jon Whittle, Arif Nurwidyantoro, Davoud Mougouei, Rifat Ara Shams, Gillian C. Oliver
2020 J jnl
IEEE Access
Yan Niu, Jie Sun, Bin Wang, Waqar Hussain, Chanjuan Fan, Rui Cao, Mengni Zhou, Jie Xiang
2020 A conf
RE
Harsha Perera, Gunter Mussbacher, Waqar Hussain, Rifat Ara Shams, Arif Nurwidyantoro, Jon Whittle
2020 J jnl
Int. J. Comput. Biol. Drug Des.
Sobia Nazir Chaudry, Waqar Hussain, Nouman Rasool
2020 conf
MoDRE@RE
Gunter Mussbacher, Waqar Hussain, Jon Whittle
2020 J jnl
CoRR
Rifat Ara Shams, Mojtaba Shahin, Gillian C. Oliver, Waqar Hussain, Harsha Perera, Arif Nurwidyantoro, Jon Whittle
2020 conf
ICSE-SEIS
Rifat Ara Shams, Waqar Hussain, Gillian C. Oliver, Arif Nurwidyantoro, Harsha Perera, Jon Whittle
2019 J jnl
CoRR
Harsha Perera, Arif Nurwidyantoro, Waqar Hussain, Davoud Mougouei, Jon Whittle, Rifat Ara Shams, Gillian C. Oliver
2019 J jnl
IEEE Access
Waqar Hussain, Muhammad Shahid Iqbal, Jie Xiang, Bin Wang, Yan Niu, Yuan Gao, Xin Wang, Jie Sun, Qionghui Zhan, Rui Cao, Mengni Zhou
2019 C conf
ICDS
Bilal Ahmed, Li Wang, Waqar Hussain, M. Abdul Qadoos, Tingyi Zheng, Muhammad Amjad, Syed Badar-ud-Duja, Akbar Hussain, Muhammad Raheel
2019 J jnl
Comput. Biol. Chem.
Nouman Rasool, Waqar Hussain, Yaser Daanial Khan
2019 A conf
RE
Harsha Perera, Waqar Hussain, Davoud Mougouei, Rifat Ara Shams, Arif Nurwidyantoro, Jon Whittle
2018 conf
FairWare@ICSE
Waqar Hussain, Davoud Mougouei, Jon Whittle
2018 conf
ESEC/SIGSOFT FSE
Davoud Mougouei, Harsha Perera, Waqar Hussain, Rifat Ara Shams, Jon Whittle
2017 C conf
ICGSE
Waqar Hussain, Tony Clear, Stephen G. MacDonell
2016 conf
ICGSE Workshops
Waqar Hussain, Kelly Blincoe
2016 A conf
RE
Waqar Hussain, Didar Zowghi, Tony Clear, Stephen G. MacDonell, Kelly Blincoe
2016 conf
ICGSE Workshops
Waqar Hussain
2015 C conf
ICGSE
Anne-Kathrin Peters, Waqar Hussain, Åsa Cajander, Tony Clear, Mats Daniels
2014 conf
ICGSE Workshops
Waqar Hussain, Jim Buchan, Tony Clear
2014 C conf
ICGSE
Waqar Hussain, Tony Clear
2012 C conf
ICGSE
Tony Clear, Waqar Hussain, Stephen G. MacDonell
2011 conf
AFHA
Saad Tariq, Saqib Sarwar, Waqar Hussain
redb/extractors/basicproperties.py
← Index redb/extractors/basicproperties.py python
from dataclasses import asdict
import inspect
import os
import magic
from magika import Magika
from datetime import datetime, timezone
from typing import Any, List, Tuple

from redb.extractors.enum import Tag
from redb.models.dataclasses import BasicProperties
from redb.extractors.extractor import Extractor


class BasicPropertiesExtractor(Extractor):

    def __init__(
        self,
        filepath,
        log,
        exporters=None,
        index_prefix=None,
        elastic_index=None,
        known_benign=False,
        known_malicious=False,
        parent_sha256=None,
        precomputed_hashes=None,
        is_fat=None,
        child_sha256=None,
        child_architecture=None,
        child_filetype=None,
        first_seen=None,
    ):
        super().__init__(
            filepath,
            log,
            exporters=exporters,
            index_prefix=index_prefix,
            elastic_index=elastic_index,
            known_benign=known_benign,
            known_malicious=known_malicious,
            precomputed_hashes=precomputed_hashes,
        )
        self.basic_properties = None
        self.elastic_index = self.index_prefix + "-basic_properties"
        self.is_packed = None
        self.parent_sha256 = parent_sha256  # For FAT Mach-O slices, points to container hash
        self.is_fat = is_fat  # True for FAT Mach-O containers, None otherwise
        self.child_sha256 = child_sha256  # SHA256 hashes of children (FAT slices, zip contents)
        self.child_architecture = child_architecture  # Architecture names for FAT Mach-O slices
        self.child_filetype = child_filetype  # Magika filetypes for children (useful for zip archives)
        self.first_seen = first_seen  # From catalog_samples, None for local files

    def tag(self):
        return Tag.BASIC_PROPERTIES.value

    def _extract_basic_properties(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        filename = None  # Reserved for future use
        sample_name = os.path.basename(self.filepath)
        file_entropy = round(self.calculate_entropy(self.binary), 3)
        type_ = magic.from_buffer(self.binary)
        type_mime = magic.from_buffer(self.binary, mime=True)
        type_magika = Magika().identify_bytes(self.binary).output.label
        size = len(self.binary)
        self.basic_properties = BasicProperties(
            filename, sample_name, size, type_, type_mime, type_magika,
            file_entropy, self.is_packed, self.is_fat, self.child_sha256,
            self.child_architecture, self.child_filetype,
            first_seen=str(self.first_seen) if self.first_seen else None,
        )
        self.log.debug(f"Basic Properties dump: {asdict(self.basic_properties)}")

    def extract(self):
        self.log.debug(inspect.currentframe().f_code.co_name)
        try:
            self._extract_basic_properties()
            # self.export_to_elastic([self.basic_properties])
            return self.basic_properties
        except Exception as e:
            self.log.error(f"Extract basic properties error {self.hash.sha256} Exception: {e}")
            return None

    def prepare_export_data(self, exporter_type: str) -> Any:
        if exporter_type == "ElasticsearchExporter":
            return self.basic_properties
        elif exporter_type == "ClickHouseExporter":
            data = [[
                self.sha256,
                self.md5,
                self.sha1,
                self.parent_sha256,  # NULL for standalone/FAT, fat_hash for slices
                self.basic_properties.child_sha256 or [],  # SHA256 hashes of children
                self.basic_properties.child_architecture or [],  # Architecture names for FAT slices
                self.basic_properties.child_filetype or [],  # Magika filetypes for children
                self.basic_properties.is_fat,  # True for FAT Mach-O containers, NULL otherwise
                self.basic_properties.filename,
                self.basic_properties.sample_name,
                self.basic_properties.filesize,
                self.basic_properties.file_entropy,
                self.basic_properties.filetype,
                self.basic_properties.filetype_mime,
                self.basic_properties.filetype_magika,
                self.first_seen or datetime(1970, 1, 1, tzinfo=timezone.utc),  # From catalog_samples, epoch zero for local files (uses original datetime, not string)
                datetime.now(timezone.utc)
            ]]

            column_names = [
                'sha256', 'md5', 'sha1', 'parent_sha256', 'child_sha256', 'child_architecture', 'child_filetype',
                'is_fat', 'filename', 'sample_name',
                'filesize', 'file_entropy', 'filetype', 'filetype_mime',
                'filetype_magika', 'first_seen', 'analysis_date'
            ]

            column_type_names = [
                'String', 'String', 'String', 'Nullable(String)',
                'Array(FixedString(64))', 'Array(LowCardinality(String))', 'Array(LowCardinality(String))',
                'Nullable(UInt8)', 'Nullable(String)', 'String',
                'UInt64', 'Float64', 'LowCardinality(String)',
                'LowCardinality(String)', 'LowCardinality(String)',
                'DateTime64(3, \'UTC\')',
                'DateTime64(3, \'UTC\')'
            ]

            return data, column_names, column_type_names

    def get_clickhouse_table(self) -> str:
        return "redb_basic_properties"