Ing Widya

39 papers A* 1A 3B 6C 4Misc 3Journal 3Unranked 19
YearRankTypeTitle / Venue / Authors
2016 J jnl
Int. J. Knowl. Syst. Sci.
Nick Lik San Fung, Valerie M. Jones, Ing Widya, Tom H. F. Broens, Nekane Larburu, Richard G. A. Bults, Erez Shalom, Hermie J. Hermens
2014 B conf
KES
Nick Lik San Fung, Ing Widya, Tom H. F. Broens, Nekane Larburu, Richard Bults, Erez Shalom, Val Jones, Hermie J. Hermens
2014 conf
BHI
Nekane Larburu, Ing Widya, Richard G. A. Bults, Hermie J. Hermens
2014 C conf
Healthcom
Nekane Larburu, Richard G. A. Bults, Ing Widya, Hermie J. Hermens
2013 A conf
RE
Nekane Larburu, Ing Widya, Richard G. A. Bults, Hermie J. Hermens, Carlo Napolitano
2011 B conf
REFSQ
Ing Widya, Richard Bults, Rene de Wijk, Ben Loke, Nicole Koenderink, Ricardo Batista, Val Jones, Hermie J. Hermens
2009 B conf
RTCSA
Hailiang Mei, Bert-Jan van Beijnum, Pravin Pawar, Ing Widya, Hermie J. Hermens
2009 Misc conf
SAC
Ing Widya, Bert-Jan van Beijnum, Richard Bults, Valerie M. Jones, Hermie J. Hermens, Leif Sandsjö, Leendert Schaake, M. H. A. Huis in't Veld
2009 conf
ICSOFT (2)
Boris Shishkov, Alexander Verbraeck, Ing Widya
2009 A conf
RE
Ing Widya, Richard Bults, Bert-Jan van Beijnum, Leif Sandsjö, Leendert Schaake, Rianne Huis in't Veld, Val Jones, Hermie J. Hermens
2009 conf
ICSOFT (2)
Ing Widya, Richard Bults, M. H. A. Huis in't Veld, Miriam M. R. Vollenbroek-Hutten
2008 conf
GIS
Richard Onchaga, Ing Widya, Javier Morales, J. M. Lambert
2008 C conf
MMSP
Valerie M. Jones, Robert J. Huis in't Veld, Thijs M. Tönis, Richard Bults, Bert-Jan van Beijnum, Ing Widya, Miriam M. R. Vollenbroek-Hutten, Hermie J. Hermens
2007 conf
ICSOFT (ISDM/EHST/DC)
Hailiang Mei, Ing Widya, Tom H. F. Broens, Pravin Pawar, Aart van Halteren, Boris Shishkov, Marten van Sinderen
2007 J jnl
Int. J. Bus. Process. Integr. Manag.
Valerie M. Jones, Aart van Halteren, Dimitri Konstantas, Ing Widya, Richard Bults
2007 conf
PCM
Valerie M. Jones, Hailiang Mei, Tom H. F. Broens, Ing Widya, J. Peuscher
2007 Misc conf
International Conference on Computational Science (3)
Hailiang Mei, Ing Widya
2007 B conf
IEEE Congress on Evolutionary Computation
Pravin Pawar, Hailiang Mei, Ing Widya, Bert-Jan van Beijnum, Aart van Halteren
2007 A conf
IPDPS
Hailiang Mei, Pravin Pawar, Ing Widya
2006 conf
PervasiveHealth
Hailiang Mei, Ing Widya, Aart van Halteren, Bayu Erfianto
2006 conf
ECEH
Dimitri Konstantas, Richard Bults, Aart van Halteren, Katarzyna Wac, Val Jones, Ing Widya, Rainer Herzog, Barbara Streimelweger
2006 B conf
IWQoS
Ing Widya, Bert-Jan van Beijnum, Alfons H. Salden
2005 conf
POLICY
Malohat Ibrohimovna Kamilova, Cristian Hesselman, Ing Widya, Erik Huizer
2005 J jnl
Mob. Networks Appl.
Cristian Hesselman, Henk Eertink, Ing Widya, Erik Huizer
2005 conf
WMASH
Cristian Hesselman, Henk Eertink, Ing Widya, Erik Huizer
2003 conf
WMASH
Cristian Hesselman, Henk Eertink, Ing Widya, Erik Huizer
2003 conf
FIDJI
Nikolay Dokovsky, Aart van Halteren, Ing Widya
2001 conf
ICEIS (2)
Ing Widya, Cees Volman, Stanislav Pokraev, Italo De Diana, Eddy Michiels
2001 conf
PROMS
Ing Widya, R. E. Stap, L. J. Teunissen, B. Frank Hopman
2000 conf
IDMS
Cristian Hesselman, Ing Widya, Aart van Halteren, Bart Nieuwenhuis
2000 conf
USM
Lambert J. M. Nieuwenhuis, Ing Widya
1997 B conf
EDOC
Cees Volman, Val Jones, Marten van Sinderen, Ing Widya, Eddy Michiels
1996 conf
COST 237 Workshop
Robert J. Huis in't Veld, A.-N. Ladhani, Bram van der Waaij, Ing Widya, F. Moelaert El-Hadidy, Jack P. C. Verhoosel
1995 conf
COST 237 Workshop
Erwin van Rijssen, Ing Widya, Eddy Michiels
1993 conf
FME
Ing Widya, Gert-Jan van der Heijden
1991 C conf
FORTE
Ing Widya, Franck Sadoun, Gert-Jan van der Heijden
1990 C conf
FORTE
Marten van Sinderen, Ing Widya
1988 A* conf
DAC
Ing Widya, T. G. R. M. van Leuken, Pieter van der Wolf
1983 Misc conf
ICASSP
Ing Widya, Patrick M. Dewilde
redb/utils/sort_files_by_type.py
← Index redb/utils/sort_files_by_type.py python
import os
import sys
from collections import defaultdict
import tempfile
from magika import Magika
import py7zr
import pyzipper
import shutil

"""
This script is used to sort files by their type. 
It reads all the files in the provided directory and splits them into different 
directories based on their type. Mainly, it classifies the files into the following types:
- PE Binaries
- Mach-O Binaries
- ELF Binaries
- APK 
- Other Files

It outputs the count of files for each file extension and file type.

Command line example:
nohup python3 sort_files_by_type.py /mnt/samples/consilience/malware/vx-bazaar-expanded/Bazaar.2020.12 \
    /mnt/samples/consilience/malware/_sorted_samples/vx-bazaar/2020/ > \
    /mnt/samples/consilience/malware/ops-logs/20241014-SORT_FILES-bazaar_2020.12.output.log 2>&1 &
"""


def process_zip_file(filepath):
    print(f"[INFO] - Processing zip file: {filepath}")
    with tempfile.TemporaryDirectory() as temp_dir:
        try:
            with pyzipper.AESZipFile(filepath) as zf:
                zf.pwd = b"infected"
                filename = zf.namelist()[0]
                zf.extractall(temp_dir)
                extracted_zip_path = os.path.join(temp_dir, filename)
                return process_binary_file(extracted_zip_path)
        except Exception as e:
            print(f"[ERR] - Error processing zip file {filepath}: {str(e)}")
            return None


def process_7z_file(filepath):
    print(f"[INFO] - Processing 7z file: {filepath}")
    with tempfile.TemporaryDirectory() as temp_dir:
        try:
            with py7zr.SevenZipFile(filepath, mode="r", password="infected") as z:
                z.extractall(path=temp_dir)
                for root, _, files in os.walk(temp_dir):
                    for file in files:
                        extracted_file_path = os.path.join(root, file)
                        return process_binary_file(extracted_file_path)
        except Exception as e:
            print(f"[ERR] - Error processing 7z file {filepath}: {str(e)}")
            return None


def process_binary_file(filepath):
    print(f"[INFO] - Processing binary file: {filepath}")
    try:
        with open(filepath, "rb") as f:
            data = f.read(512 * 1024)  # 512KB
        return Magika().identify_bytes(data).output.ct_label
    except Exception as e:
        print(f"[ERR] - Error processing binary file {filepath}: {str(e)}")
        return "ERROR"


def count_file_extensions(path, dest_dir):
    # A defaultdict to store file extension counts
    extension_count = defaultdict(int)
    filetype_count = defaultdict(int)
    tot_files = 0

    # Walk through the directory
    for root, dirs, files in os.walk(path):
        for file in files:
            if file.startswith("."):
                continue

            tot_files += 1
            # Split the file extension from the file name
            _, ext = os.path.splitext(file)
            ext = ext.lower()

            # Count the extensions
            extension_count[ext] += 1
            filepath = os.path.join(root, file)
            filetype = ""

            if ext == ".7z":
                filetype = process_7z_file(filepath)
            elif ext == ".zip":
                filetype = process_zip_file(filepath)
            else:
                filetype = process_binary_file(filepath)

            filetype_count[filetype] += 1

            if filetype == "pebin":
                dest = os.path.join(dest_dir, "pebin")
                os.makedirs(dest, exist_ok=True)
                shutil.copy2(filepath, os.path.join(dest, file))
            elif filetype == "macho":
                dest = os.path.join(dest_dir, "macho")
                os.makedirs(dest, exist_ok=True)
                shutil.copy2(filepath, os.path.join(dest, file))
            elif filetype == "elf":
                dest = os.path.join(dest_dir, "elf")
                os.makedirs(dest, exist_ok=True)
                shutil.copy2(filepath, os.path.join(dest, file))
            elif filetype == "apk":
                dest = os.path.join(dest_dir, "apk")
                os.makedirs(dest, exist_ok=True)
                shutil.copy2(filepath, os.path.join(dest, file))
            else:
                dest = os.path.join(dest_dir, "other")
                os.makedirs(dest, exist_ok=True)
                shutil.copy2(filepath, os.path.join(dest, file))
            print(f"[STATUS] - Progres: {tot_files}/{len(files)} files processed")

    # Print the results
    # print("- File Extension Statistics:")
    # for ext, count in extension_count.items():
    #     if ext:  # To exclude files with no extension
    #         print(f"\t{ext}: {count} files")

    # if "" in extension_count:
    #     print(f'\t{extension_count[""]} files with no extension')

    print(f"- Total Number of Files: {tot_files}")
    print("\n- File Type Statistics:")
    for filetype, count in sorted(filetype_count.items()):
        print(f"\t{filetype:<15}{count:>8}")


if __name__ == "__main__":
    # Check if the path was passed as a command-line argument
    if len(sys.argv) != 3:
        print("Usage: python3 script.py <input_path> <dest_dir>")
        sys.exit(1)

    # Get the path from the command-line arguments
    input_path = sys.argv[1]
    dest_dir = sys.argv[2]

    # Check if the provided path is valid
    if not os.path.isdir(input_path):
        print(f"The path '{input_path}' is not a valid directory.")
        sys.exit(1)

    # Call the function to count file extensions
    count_file_extensions(input_path, dest_dir)