Ramlan Mahmod

46 papers B 1C 2Misc 2Journal 16Unranked 22
YearRankTypeTitle / Venue / Authors
2017 J jnl
CoRR
Mohd Najwadi Yusoff, Ali Dehghantanha, Ramlan Mahmod
2017 ch.
Contemporary Digital Forensic Investigations of Cloud and Mobile Applications
Mohd Najwadi Yusoff, Ali Dehghantanha, Ramlan Mahmod
2017 J jnl
CoRR
Mohd Najwadi Yusoff, Ali Dehghantanha, Ramlan Mahmod
2017 ch.
Contemporary Digital Forensic Investigations of Cloud and Mobile Applications
Mohd Najwadi Yusoff, Ali Dehghantanha, Ramlan Mahmod
2017 J jnl
Int. J. Commun. Networks Inf. Secur.
Abayomi Jegede, Nur Izura Udzir, Azizol Abdullah, Ramlan Mahmod
2016 J jnl
CoRR
Mohd Anuar Mat Isa, Ramlan Mahmod, Nur Izura Udzir, Jamalul-lail Ab Manan, Audun Jøsang, Ali Dehghan Tanha
2016 conf
IMCOM
Abayomi Jegede, Nur Izura Udzir, Azizol Abdullah, Ramlan Mahmod
2016 J jnl
CoRR
Mohd Anuar Mat Isa, Ramlan Mahmod, Nur Izura Udzir, Jamalul-lail Ab Manan, Ali Dehghan Tanha
2016 Misc conf
WISA
Abayomi Jegede, Nur Izura Udzir, Azizol Abdullah, Ramlan Mahmod
2016 J jnl
J. Comput. Sci.
Mohsen Bafandehkar, Sharifah Md Yasin, Ramlan Mahmod
2015 J jnl
CoRR
Auday H. Al-Wattar, Ramlan Mahmod, Zuriati Ahmad Zukarnain, Nur Izura Udzir
2015 conf
ITNG
Waleed Halboob, Ramlan Mahmod, Muhammad Abulaish, Haider Abbas, Kashif Saleem
2015 conf
FNC/MobiSPC
Waleed Halboob, Ramlan Mahmod, Nur Izura Udzir, Mohd Taufik Abdullah
2014 J jnl
CoRR
Mohd Anuar Mat Isa, Habibah Hashim, Syed Farid Syed Adnan, Jamalul-lail Ab Manan, Ramlan Mahmod
2014 J jnl
CoRR
Mohd Anuar Mat Isa, Habibah Hashim, Jamalul-lail Ab Manan, Syed Farid Syed Adnan, Ramlan Mahmod
2014 conf
CyberSec
Mohd Najwadi Yusoff, Ramlan Mahmod, Ali Dehghantanha, Mohd Taufik Abdullah
2014 conf
ISBAST
Mehdi Barati, Azizol Abdullah, Nur Izura Udzir, Ramlan Mahmod, Norwati Mustapha
2014 J jnl
J. Commun.
NorazahAbd Aziz, Nur Izura Udzir, Ramlan Mahmod
2014 J jnl
J. Comput. Sci.
Mehdi Barati, Azizol Abdullah, Nur Izura Udzir, Mostafa Behzadi, Ramlan Mahmod, Norwati Mustapha
2014 conf
CyberSec
Mohd Najwadi Yusoff, Ramlan Mahmod, Mohd Taufik Abdullah, Ali Dehghantanha
2014 conf
ISBAST
Waleed Halboob, Ali Mamat, Ramlan Mahmod
2014 conf
ICCSCE
Mohd Anuar Mat Isa, Habibah Hashim, Jamalul-lail Ab Manan, Syed Farid Syed Adnan, Ramlan Mahmod
2013 conf
ICITCS
Mohsen Bafandehkar, Sharifah Md Yasin, Ramlan Mahmod, Zurina Mohd Hanapi
2013 J jnl
J. Comput. Sci.
Waleed Halboob, Ali Mamat, Ramlan Mahmod, Muhammad Khurram Khan
2013 J jnl
J. Digit. Forensics Secur. Law
Kaveh Shaerpour, Ali Dehghantanha, Ramlan Mahmod
2012 ed.
CAMP
Ramlan Mahmod, Rusli Abdullah, Lili Nurliyana Abdullah, Tengku Mohd Tengku Sembok, Alan F. Smeaton, Fabio Crestani, Shyamala Doraisamy, Rabiah Abdul Kadir, Mahamod Ismail
2012 conf
CyberSec
Julia Juremi, Ramlan Mahmod, Salasiah Sulaiman
2012 conf
CAMP
M. N. Zawawi, Ramlan Mahmod, Nur Izura Udzir, Fatimah Ahmad, J. M. Desa
2012 conf
CyberSec
Mohd Anuar Mat Isa, Jamalul-lail Ab Manan, Ramlan Mahmod, Habibah Hashim, Mar Yah Said, Nur Izura Udzir, Ali Dehghantanha
2012 B conf
TrustCom
Mohd Anuar Mat Isa, Habibah Hashim, Jamalul-lail Ab Manan, Ramlan Mahmod, Hanunah Othman
2012 conf
CAMP
Mas Rina Mustaffa, Fatimah Ahmad, Ramlan Mahmod, Shyamala Doraisamy
2012 J jnl
Int. J. Nat. Comput. Res.
Suriyani Ariffin, Ramlan Mahmod, Azmi Jaafar, Muhammad Rezal Kamel Ariffin
2011 Misc conf
CISIS
Ali Dehghantanha, Nur Izura Udzir, Ramlan Mahmod
2011 conf
ICSECS (2)
Zul Hilmi Abdullah, Nur Izura Udzir, Ramlan Mahmod, Khairulmizam Samsudin
2011 conf
BIC-TA
Suriyani Ariffin, Ramlan Mahmod, Azmi Jaafar, Muhammad Rezal Kamel Ariffin
2011 C conf
IAS
Ali Dehghantanha, Nur Izura Udzir, Ramlan Mahmod
2010 J jnl
Comput. Speech Lang.
Anwar Ali Yahya, Ramlan Mahmod, Abd. Rahman Ramli
2010 conf
AINA Workshops
Ali Dehghantanha, Nur Izura Udzir, Ramlan Mahmod
2008 conf
ICCSA Workshops
Majid Javid Moayed, Abdul Azim Abdul Ghani, Ramlan Mahmod
2007 conf
MSA
Mas Rina Mustaffa, Fatimah Ahmad, Rahmita Wirza O. K. Rahmat, Ramlan Mahmod
2006 conf
GRAPHITE
Nurazlin Zainal Azmi, Rahmita Wirza O. K. Rahmat, Ramlan Mahmod
2005 conf
CITA
Muhamad Taufik Abdullah, Fatimah Ahmad, Ramlan Mahmod, Tengku M. T. Sembok
2005 conf
IJCNLP (companion)
Mohd Juzaiddin Ab Aziz, Fatimah Dato' Ahmad, Abdul Azim Abdul Ghani, Ramlan Mahmod
2003 conf
ICADL
Muhamad Taufik Abdullah, Fatimah Ahmad, Ramlan Mahmod, Tengku M. T. Sembok
2002 J jnl
IEEE Trans. Computers
Essam Al-Daoud, Ramlan Mahmod, Mohammad Rushdan, Adem Kiliçman
2001 C conf
AICCSA
Moawia Elfaki Yahia, Ramlan Mahmod
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)