Van Hai Do

38 papers A 10B 1Misc 3Journal 5Unranked 18
YearRankTypeTitle / Venue / Authors
2025 J jnl
IEEE Signal Process. Lett.
Bao Thang Ta, Nhat Minh Le, Huynh Thi Thanh Binh, Van Hai Do
2024 A conf
INTERSPEECH
Bao Thang Ta, Minh Tu Le, Van Hai Do, Huynh Thi Thanh Binh
2024 A conf
INTERSPEECH
Bao Thang Ta, Van Hai Do, Huynh Thi Thanh Binh
2024 B conf
IJCNN
Bao Thang Ta, Minh Khang Pham, Nhat Minh Le, Van Hai Do
2024 J jnl
Eng. Appl. Artif. Intell.
Bao Thang Ta, Nhat Minh Le, Van Hai Do
2023 conf
CSoNet
Minh Tu Le, Bao Thang Ta, Nhat Minh Le, Phi Le Nguyen, Van Hai Do
2023 conf
APSIPA ASC
Ngoc-Anh Nguyen Thi, Bao Thang Ta, Nhat Minh Le, Van Hai Do
2023 A conf
INTERSPEECH
Dinh Son Dang, Tung Lam Nguyen, Bao Thang Ta, Tien Thanh Nguyen, Thi Ngoc Anh Nguyen, Dang Linh Le, Nhat Minh Le, Van Hai Do
2023 A conf
INTERSPEECH
Bao Thang Ta, Minh Tu Le, Nhat Minh Le, Van Hai Do
2022 conf
SoICT
Quang Tien Duong, Duc Huy Nguyen, Bao Thang Ta, Nhat Minh Le, Van Hai Do
2022 conf
O-COCOSDA 2022
Bao Thang Ta, Xuan Vuong Dang, Quang Tien Duong, Nhat Minh Le, Van Hai Do
2021 conf
O-COCOSDA
Quang Tien Duong, Van Hai Do
2020 conf
IALP
Van Hai Do, Van Tuan Mai
2018 conf
SoICT
Quoc Bao Nguyen, Van Tuan Mai, Quang Trung Le, Ba Quyen Dam, Van Hai Do
2018 J jnl
IEEE ACM Trans. Audio Speech Lang. Process.
Van Hai Do, Nancy F. Chen, Boon Pang Lim, Mark A. Hasegawa-Johnson
2017 conf
O-COCOSDA
Quoc Bao Nguyen, Van Hai Do, Ba Quyen Dam, Minh Hung Le
2017 conf
APSIPA
Nancy F. Chen, Boon Pang Lim, Van Hai Do, Van Tung Pham, Chongjia Ni, Haihua Xu, Mark Hasegawa-Johnson, Wenda Chen, Xiong Xiao, Sunil Sivadas, Eng Siong Chng, Bin Ma, Haizhou Li
2017 Misc conf
ACSSC
Mark Hasegawa-Johnson, Preethi Jyothi, Wenda Chen, Van Hai Do
2017 A conf
INTERSPEECH
Van Hai Do, Nancy F. Chen, Boon Pang Lim, Mark Hasegawa-Johnson
2016 conf
RIVF
Van Hai Do, Nancy F. Chen, Boon Pang Lim, Mark Hasegawa-Johnson
2016 A conf
INTERSPEECH
Van Hai Do, Nancy F. Chen, Boon Pang Lim, Mark Hasegawa-Johnson
2016 Misc conf
ICASSP
Haihua Xu, Jingyong Hou, Xiong Xiao, Van Tung Pham, Cheung-Chi Leung, Lei Wang, Van Hai Do, Hang Lv, Lei Xie, Bin Ma, Eng Siong Chng, Haizhou Li
2016 Misc conf
ICASSP
Nancy F. Chen, Van Tung Pham, Haihua Xu, Xiong Xiao, Van Hai Do, Chongjia Ni, I-Fan Chen, Sunil Sivadas, Chin-Hui Lee, Eng Siong Chng, Bin Ma, Haizhou Li
2016 conf
ACIIDS (2)
Thi-Nga Ho, Tze Yuang Chong, Van Hai Do, Van Tung Pham, Eng Siong Chng
2016 conf
IALP
Van Hai Do, Nancy F. Chen, Boon Pang Lim, Mark Hasegawa-Johnson
2015 A conf
INTERSPEECH
Haihua Xu, Van Hai Do, Xiong Xiao, Engsiong Chng
2015
Van Hai Do
2015 J jnl
Int. J. Asian Lang. Process.
Van Hai Do, Xiong Xiao, Engsiong Chng, Haizhou Li
2015 conf
APSIPA
Van Hai Do, Xiong Xiao, Eng Siong Chng, Haizhou Li
2015 conf
APSIPA
Van Hai Do, Xiong Xiao, Haihua Xu, Eng Siong Chng, Haizhou Li
2015 conf
APSIPA
Van Tung Pham, Haihua Xu, Van Hai Do, Tze Yuang Chong, Xiong Xiao, Eng Siong Chng, Haizhou Li
2014 J jnl
IEICE Trans. Inf. Syst.
Van Hai Do, Xiong Xiao, Engsiong Chng, Haizhou Li
2014 A conf
INTERSPEECH
Van Hai Do, Xiong Xiao, Chng Eng Siong, Haizhou Li
2014 conf
ISCSLP
Mirco Ravanelli, Van Hai Do, Adam Janin
2013 A conf
INTERSPEECH
Korbinian Riedhammer, Van Hai Do, James Hieronymus
2013 A conf
INTERSPEECH
Van Hai Do, Xiong Xiao, Engsiong Chng, Haizhou Li
2012 conf
IALP
Van Hai Do, Xiong Xiao, Engsiong Chng, Haizhou Li
2012 conf
ISCSLP
Van Hai Do, Xiong Xiao, Engsiong Chng, Haizhou Li
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)