Raffaele Iervolino

41 papers C 3Journal 25Unranked 13
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Ali Forootani, Raffaele Iervolino
2026 J jnl
CoRR
Ali Forootani, Raffaele Iervolino
2025 J jnl
Autom.
Massimo Tipaldi, Raffaele Iervolino, Paolo Roberto Massenio, Ali Forootani
2025 J jnl
Autom.
Massimo Tipaldi, Raffaele Iervolino, Paolo Roberto Massenio, David Naso
2025 J jnl
CoRR
Ali Forootani, Raffaele Iervolino
2025 J jnl
CoRR
Ali Forootani, Raffaele Iervolino, Massimo Tipaldi, Mohammad Khosravi
2024 J jnl
Autom.
Ali Forootani, Raffaele Iervolino, Massimo Tipaldi, Silvio Baccari
2024 J jnl
CoRR
Ali Forootani, Raffaele Iervolino
2024 J jnl
Autom.
Raffaele Iervolino, Sabato Manfredi
2024 J jnl
IEEE Control. Syst. Lett.
Ali Forootani, Raffaele Iervolino, Massimo Tipaldi, Mohammad Khosravi
2023 J jnl
Int. J. Control
Raffaele Iervolino, Massimo Tipaldi, Ali Forootani
2023 J jnl
Eng. Appl. Artif. Intell.
Ali Forootani, Majid Ghaniee Zarch, Massimo Tipaldi, Raffaele Iervolino
2023 J jnl
Autom.
Raffaele Iervolino, Roberto Ambrosino
2023 J jnl
Comput. Electr. Eng.
Ali Forootani, Sara Forootani, Raffaele Iervolino, Majid Ghaniee Zarch
2022 J jnl
IEEE Control. Syst. Lett.
Ali Forootani, Massimo Tipaldi, Raffaele Iervolino, Subhrakanti Dey
2022 J jnl
IEEE Trans. Control. Netw. Syst.
Carmela Bernardo, Francesco Vasca, Raffaele Iervolino
2022 J jnl
Annu. Rev. Control.
Massimo Tipaldi, Raffaele Iervolino, Paolo Roberto Massenio
2022 J jnl
Autom.
Ali Forootani, Raffaele Iervolino, Massimo Tipaldi, Subhrakanti Dey
2021 J jnl
IEEE Trans. Autom. Control.
Raffaele Iervolino, Stephan Trenn, Francesco Vasca
2021 J jnl
Autom.
Francesco Vasca, Carmela Bernardo, Raffaele Iervolino
2020 J jnl
IEEE CAA J. Autom. Sinica
Ali Forootani, Raffaele Iervolino, Massimo Tipaldi, Joshua Neilson
2019 J jnl
IEEE Control. Syst. Lett.
Luigi Iannelli, Raffaele Iervolino, Francesco Vasca
2018 C conf
ISCAS
Raffaele Iervolino, Francesco Vasca, Domenico Tangredi
2018 J jnl
Int. J. Syst. Sci.
Laura Celentano, Raffaele Iervolino
2017 conf
M&N
Raffaele Iervolino, Francesco Bonavolontà, Adolfo Cavallari
2017 J jnl
Autom.
Raffaele Iervolino, Domenico Tangredi, Francesco Vasca
2017 conf
RAAD
Raffaele Iervolino, Aleksandr Sakhnevych
2017 conf
CDC
Raffaele Iervolino, Stephan Trenn, Francesco Vasca
2016 conf
COMPLEX NETWORKS
Domenico Tangredi, Raffaele Iervolino, Francesco Vasca
2016 conf
ECC
Raffaele Iervolino, Domenico Tangredi, Francesco Vasca
2015 J jnl
IEEE Trans. Autom. Control.
Raffaele Iervolino, Francesco Vasca, Luigi Iannelli
2015 conf
CDC
Raffaele Iervolino, Francesco Vasca, Luigi Iannelli
2014 conf
MED
Giovanni Celentano, Raffaele Iervolino
2014 conf
CDC
Raffaele Iervolino, Francesco Vasca
2011 conf
CDC/ECC
Raffaele Iervolino, Francesco Vasca, Luigi Iannelli
2010 conf
CDC
Raffaele Iervolino, Luigi Iannelli, Francesco Vasca
2003 C conf
CCA
Giovanni Celentano, Raffaele Iervolino, Stefano Porreca, Vincenzo Fontana
2003 C conf
CCA
Francesco Amato, Carlo Cosentino, Raffaele Iervolino, Umberto Ciniglio
2001 conf
ECC
Francesco Amato, Raffaele Iervolino, M. Pandit
2000 conf
CDC
Francesco Amato, Raffaele Iervolino, M. Pandit, Stefano Scala, L. Verde
1999 conf
ECC
Francesco Amato, Raffaele Iervolino, Stefano Scala, L. Verde
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)