Ioan Tomescu

95 papers Misc 3Journal 90Unranked 2
YearRankTypeTitle / Venue / Authors
2026 J jnl
Discret. Appl. Math.
Ioan Tomescu
2023 J jnl
Electron. J. Graph Theory Appl.
Ioan Tomescu
2022 J jnl
Discret. Appl. Math.
Ioan Tomescu
2022 J jnl
Art Discret. Appl. Math.
Ioan Tomescu
2021 J jnl
Discret. Appl. Math.
Muhuo Liu, Ioan Tomescu, Jianping Liu
2020 J jnl
Discret. Appl. Math.
Muhuo Liu, Kun Cheng, Ioan Tomescu
2019 Misc conf
SYNASC
Mihaita Dragan, Ioan Tomescu
2019 J jnl
Discret. Appl. Math.
Faisal Javaid, Muhammad Kamran Jamil, Ioan Tomescu
2019 J jnl
Art Discret. Appl. Math.
Ioan Tomescu
2019 J jnl
Discret. Appl. Math.
Ioan Tomescu
2018 J jnl
Ars Comb.
Muhammad Kamran Jamil, Ioan Tomescu
2017 J jnl
Discret. Appl. Math.
Muhammad Kamran Jamil, Ioan Tomescu
2016 J jnl
Ars Comb.
Muhammad Imran, Syed Ahtsham Ul Haq Bokhary, Abdul Qudair Baig, Ioan Tomescu
2016 J jnl
Electron. J. Graph Theory Appl.
Ioan Tomescu
2015 J jnl
Graphs Comb.
Ioan Tomescu, Sana Javed
2015 Misc conf
SYNASC
Rozica-Maria Tache, Ioan Tomescu
2015 J jnl
Discret. Appl. Math.
Ioan Tomescu, Misbah Arshad
2014 J jnl
Discret. Appl. Math.
Ioan Tomescu
2014 J jnl
Discuss. Math. Graph Theory
Ioan Tomescu
2014 J jnl
Ars Comb.
Muhammad Imran, Abdul Qudair Baig, Muhammad Kashif Shafiq, Ioan Tomescu
2014 J jnl
Discret. Appl. Math.
Ioan Tomescu, Salma Kanwal
2013 J jnl
Graphs Comb.
Ioan Tomescu, Sana Javed
2012 J jnl
Ars Comb.
M. Tariq Rahim, Ioan Tomescu
2012 J jnl
Ars Comb.
Ioan Tomescu, Akhlaq Ahmad Bhatti
2012 conf
Computation, Physics and Beyond
Ioan Tomescu
2012 J jnl
Electron. J. Comb.
Ioan Tomescu
2011 J jnl
Ars Comb.
Ngurah Anak Agung Gede, Edy Tri Baskoro, Ioan Tomescu
2011 J jnl
Graphs Comb.
Ioan Tomescu, Muhammad Imran
2010 J jnl
Discret. Appl. Math.
Ioan Tomescu
2010 J jnl
Discret. Appl. Math.
Ioan Tomescu, Syed Ahtsham Ul Haq Bokhary
2009 J jnl
Int. J. Comput. Math.
Liviu Petrisor Dinu, Ioan Tomescu
2009 J jnl
Graphs Comb.
Syed Ahtsham Ul Haq Bokhary, Ioan Tomescu, Akhlaq Ahmad Bhatti
2009 J jnl
Discret. Math.
Ioan Tomescu
2009 J jnl
Graphs Comb.
Ioan Tomescu, Syed Ahtsham Ul Haq Bokhary
2008 J jnl
Discret. Math.
Ioan Tomescu
2008 J jnl
Graphs Comb.
Surahmat, Edy Tri Baskoro, Ioan Tomescu
2008 J jnl
J. Autom. Lang. Comb.
Ioan Tomescu
2007 J jnl
Discret. Math.
Ioan Tomescu
2007 J jnl
Discret. Appl. Math.
Ioan Tomescu
2007 J jnl
Ars Comb.
Ioan Tomescu, Imran Javaid, Slamin
2006 J jnl
Theor. Comput. Sci.
Ioan Tomescu
2006 J jnl
Discret. Math.
Surahmat, Edy Tri Baskoro, Ioan Tomescu
2005 J jnl
Australas. J Comb.
Ioan Tomescu
2005 J jnl
Fundam. Informaticae
Ioan Tomescu
2004 J jnl
Discret. Math.
Ioan Tomescu
2003 J jnl
J. Graph Theory
Ioan Tomescu
2003 J jnl
Theor. Comput. Sci.
Ioan Tomescu
2002 J jnl
Electron. J. Comb.
Ioan Tomescu
2002 Misc conf
COCOON
Ioan Tomescu
2002 J jnl
Discret. Math.
Ioan Tomescu
2001 J jnl
Discret. Math.
Ioan Tomescu
2001 conf
DMTCS
Ioan Tomescu
2001 J jnl
Australas. J Comb.
Ioan Tomescu
2000 J jnl
Am. Math. Mon.
Ioan Tomescu, Kee-Wai Lau, O. P. Lossers, Kenneth F. Andersen, Robin J. Chapman, Óscar Ciaurri, E. Fernandez, Valerio De Angelis, Emeric Deutsch, G. Will, M. Falkowitz, Zachary Franco, C. Georghiou, J. Lewandowski, Albert Nijenhuis, Timothy S. Norfolk, Allen Stenger
2000 J jnl
Discret. Math.
Ioan Tomescu
1999 J jnl
Discret. Appl. Math.
Ioan Tomescu
1998 J jnl
Bull. EATCS
Ioan Tomescu
1998 J jnl
J. Comb. Theory B
Ioan Tomescu
1998 J jnl
Theor. Comput. Sci.
Ioan Tomescu
1997 J jnl
Discret. Math.
Ioan Tomescu
1997 J jnl
Discret. Math.
Ioan Tomescu
1997 J jnl
J. Univers. Comput. Sci.
Cristian Calude, Ioan Tomescu
1997 J jnl
J. Univers. Comput. Sci.
Ioan Tomescu
1996 J jnl
Discret. Math.
Ioan Tomescu
1996 J jnl
Eur. J. Comb.
Dragos Radu Popescu, Ioan Tomescu
1996 J jnl
Discret. Appl. Math.
Dragos Radu Popescu, Ioan Tomescu
1996 J jnl
Theor. Comput. Sci.
Ioan Tomescu
1996 J jnl
Discret. Math.
Ioan Tomescu
1996 J jnl
Australas. J Comb.
Ioan Tomescu
1994 J jnl
J. Graph Theory
Ioan Tomescu
1994 J jnl
Discret. Appl. Math.
Ioan Tomescu, Marius Zimand
1994 J jnl
Random Struct. Algorithms
Ioan Tomescu
1992 J jnl
Discret. Math.
Ioan Tomescu
1990 J jnl
Discret. Math.
Ioan Tomescu
1990 J jnl
J. Graph Theory
Ioan Tomescu
1988 J jnl
Discret. Appl. Math.
Alexandru T. Balaban, Ioan Tomescu
1987 J jnl
Discret. Math.
Ioan Tomescu
1987 J jnl
J. Graph Theory
Ioan Tomescu
1986 J jnl
J. Comb. Theory B
Ioan Tomescu
1986 J jnl
Comb.
Ioan Tomescu
1984 J jnl
Pattern Recognit. Lett.
Frank Harary, Robert A. Melter, Ioan Tomescu
1984 J jnl
Comput. Vis. Graph. Image Process.
Robert A. Melter, Ioan Tomescu
1983 J jnl
J. Graph Theory
Ioan Tomescu
1983 J jnl
Pattern Recognit. Lett.
Robert A. Melter, Ioan Tomescu
1982 J jnl
Discret. Math.
Frank Harary, Robert A. Melter, Uri N. Peled, Ioan Tomescu
1981 J jnl
Discret. Math.
Ioan Tomescu
1980 J jnl
J. Comb. Theory B
Ioan Tomescu
1979 J jnl
Discret. Math.
Ioan Tomescu
1976 J jnl
Discret. Math.
Ioan Tomescu
1974 J jnl
Discret. Math.
Ioan Tomescu
1973 J jnl
IEEE Trans. Computers
Ioan Tomescu
1972 J jnl
IEEE Trans. Computers
Ioan Tomescu
1972 J jnl
Math. Syst. Theory
Ioan Tomescu
1972 J jnl
Discret. Math.
Ioan Tomescu
1970 J jnl
IEEE Trans. Computers
Ioan Tomescu
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)