Manoj Apte

34 papers A 2B 4C 6Misc 3Journal 8Unranked 11
YearRankTypeTitle / Venue / Authors
2026 conf
EACL (Volume 1: Long Papers)
Basit Ali, Anubhav Sinha, Nitin Ramrakhiyani, Sachin Pawar, Girish Keshav Palshikar, Manoj Apte
2025 J jnl
CoRR
Dinesh P. Srivasthav, Manoj Apte
2025 conf
IJCNLP-AACL (Short Papers)
Sachin Pawar, Manoj Apte, Kshitij Jadhav, Girish Keshav Palshikar, Nitin Ramrakhiyani
2025 J jnl
CoRR
Sachin Pawar, Manoj Apte, Kshitij Jadhav, Girish Keshav Palshikar, Nitin Ramrakhiyani
2025 C conf
ICAIL
Sachin Sharad Pawar, Manoj Apte, Girish Keshav Palshikar, Basit Ali, Nitin Ramrakhiyani
2025 J jnl
CoRR
Sachin Pawar, Manoj Apte, Girish K. Palshikar, Basit Ali, Nitin Ramrakhiyani
2025 conf
NAACL (Industry Track)
Nitin Ramrakhiyani, Delton Myalil, Sachin Pawar, Manoj Apte, Rajan MA, Divyesh Saglani, Imtiyazuddin Shaik
2024 conf
EACL (Findings)
Sachin Pawar, Nitin Ramrakhiyani, Anubhav Sinha, Manoj Apte, Girish K. Palshikar
2023 Misc conf
FLAIRS
Sachin Pawar, Manoj Apte, Aditi Pawde, Sushodhan Vaishampayan, Girish K. Palshikar, Akshada Shinde
2023 J jnl
SN Comput. Sci.
Delton Myalil, M. A. Rajan, Manoj Apte, Sachin Lodha
2022 conf
CIKM Workshops
Sushodhan Vaishampayan, Akshada Shinde, Aditi Pawde, Sachin Pawar, Manoj Apte, Girish Keshav Palshikar
2022 J jnl
SN Comput. Sci.
Aditi Pawde, Sushodhan Vaishampayan, Akshada Shinde, Manoj Apte, Girish Keshav Palshikar, Arun Jamkar
2021 conf
PKDD/ECML Workshops (2)
Sushodhan Vaishampayan, Aditi Pawde, Akshada Shinde, Manoj Apte, Girish Keshav Palshikar
2021 J jnl
Int. J. Data Sci. Anal.
Manoj Apte, Sushodhan Vaishampayan, Girish Keshav Palshikar
2021 C conf
ICMLA
Delton Myalil, M. A. Rajan, Manoj Apte, Sachin Lodha
2019 C conf
TENCON
Sushodhan Vaishampayan, Girish K. Palshikar, Manoj Apte, Vahida Z. Attar
2019 J jnl
Int. J. Data Sci. Anal.
Girish Keshav Palshikar, Manoj Apte, Sachin Pawar, Nitin Ramrakhiyani
2018 conf
COMAD/CODS
Devendra Kumar Luna, Girish Keshav Palshikar, Manoj Apte, Arnab Bhattacharya
2018 J jnl
Inf. Syst. Frontiers
Girish Keshav Palshikar, Manoj Apte, Deepak Pandita
2017 B conf
DSAA
Girish Keshav Palshikar, Manoj Apte, Sachin Pawar, Nitin Ramrakhiyani
2017 conf
SMERP@ECIR
Girish Keshav Palshikar, Manoj Apte, Deepak Pandita
2016 C conf
NLDB
Nitin Ramrakhiyani, Sachin Pawar, Girish K. Palshikar, Manoj Apte
2016 conf
ICON
Girish K. Palshikar, Manoj Apte, Deepak Pandita, Vikram Singh
2016 Misc conf
COMAD
Manoj Apte, Sachin Pawar, Sangameshwar Patil, Sriram Baskaran, Apoorv Shrivastava, Girish K. Palshikar
2014 conf
COMPUTE
Sriram Baskaran, Manoj Apte
2012 C conf
ICGSE
Manoj Apte, Kurt Hofmann
2011 C conf
ICGSE
Gerd Höfner, V. S. Mani, Raghu Nambiar, Manoj Apte
2005 conf
COMAD (b)
Girish K. Palshikar, Manoj Apte
2003 B conf
LCN
Jothi P. Neelamegam, Srigurunath Chakravarthi, Manoj Apte, Anthony Skjellum
2002 B conf
LCN
Srigurunath Chakravarthi, Anand Pillai, Jothi P. Neelamegam, Manoj Apte, Anthony Skjellum
2001 B conf
CCGRID
Rajanikanth Batchu, Anthony Skjellum, Zhenqian Cui, Murali Beddhu, Jothi P. Neelamegam, Yoginder S. Dandass, Manoj Apte
2001 A conf
IPDPS
Manoj Apte, Srigurunath Chakravarthi, Jothi Padmanabhan, Anthony Skjellum
1999 A conf
RTSS
Manoj Apte, Srigurunath Chakravarthi, Anand Pillai, Anthony Skjellum, Xin Yan Zan
1997 Misc conf
PDPTA
Manoj Apte, Bharat K. Soni
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)