James S. Albus

44 papers A* 6A 3Journal 20Unranked 14
YearRankTypeTitle / Venue / Authors
2010 J jnl
Inf. Sci.
James S. Albus
2010 conf
BICA
James S. Albus
2008 conf
PerMIS
Roger Bostelman, James S. Albus, Joshua Johnson
2008 ch.
Computational Intelligence in Automotive Applications
James S. Albus, Roger Bostelman, Raj Madhavan, Harry Scott, Tony Barbera, Sandor Szabo, Tsai Hong, Tommy Chang, William P. Shackleford, Michael Shneier, Stephen Balakirsky, Craig Schlenoff, Hui-Min Huang, Frederick M. Proctor
2008 J jnl
Auton. Robots
Michael Shneier, Tommy Chang, Tsai Hong, William P. Shackleford, Roger Bostelman, James S. Albus
2008 conf
AAAI Fall Symposium: Biologically Inspired Cognitive Architectures
James S. Albus
2008 J jnl
Adv. Robotics
Roger Bostelman, James S. Albus
2008 conf
PETRA
Roger Bostelman, James S. Albus
2007 conf
PerMIS
Michael Shneier, Roger Bostelman, James S. Albus, William P. Shackleford, Tommy Chang, Tsai Hong
2007 A conf
IROS
Roger Bostelman, James S. Albus
2007 J jnl
Integr. Comput. Aided Eng.
James S. Albus, Roger Bostelman, Tsai Hong, Tommy Chang, William P. Shackleford, Michael Shneier
2006 J jnl
J. Field Robotics
James S. Albus, Roger Bostelman, Tommy Chang, Tsai Hong, William P. Shackleford, Michael Shneier
2006 conf
AIPR
James S. Albus, Tsai Hong, Tommy Chang
2006 conf
ICINCO-RA
James S. Albus, Roger Bostelman, Tsai Hong, Tommy Chang, William P. Shackleford, Michael Shneier
2006 J jnl
AI Mag.
Craig Schlenoff, James S. Albus, Elena Messina, Anthony Barbera, Raj Madhavan, Stephen Balakirsky
2005 J jnl
Annu. Rev. Control.
James S. Albus, Anthony J. Barbera
2004 J jnl
J. Field Robotics
Robert L. Williams II, James S. Albus, Roger Bostelman
2004 A* conf
ICRA
So-Ryeok Oh, Kalyan K. Mankala, Sunil Kumar Agrawal, James S. Albus
2004 J jnl
Robotics Auton. Syst.
Anthony Barbera, James S. Albus, Elena Messina, Craig Schlenoff, John Horst
2004 conf
AAAI Technical Report (1)
James S. Albus, Craig Schlenoff, Raj Madhavan, Stephen Balakirsky, Tony Barbera
2003 J jnl
J. Intell. Fuzzy Syst.
Elena Messina, James S. Albus, Craig Schlenoff, John M. Evans
2003 A conf
IROS
Hui-Min Huang, James S. Albus, Jeffery Kotora, Roger Liu
2002 conf
ISIC
James S. Albus, Karl N. Murphy, Alberto Lacaze, Steven A. Legowik, Stephen Balakirsky, Tsai Hong, Michael Shneier, Elena Messina
2002 conf
Mobile Robots
Craig Schlenoff, John M. Evans, Anthony J. Barbera, James S. Albus, Elena Messina, Stephen B. Balakirsky
2002 conf
ISIC
John M. Evans, Elena Messina, James S. Albus
2000 A* conf
ICRA
James S. Albus
1999 J jnl
Inf. Sci.
James S. Albus
1997 conf
CIRA
James S. Albus, Alexander M. Meystel, Sameh Uzzaman
1997 J jnl
J. Exp. Theor. Artif. Intell.
James S. Albus
1993 J jnl
J. Field Robotics
James S. Albus, Roger Bostelman, Nicholas G. Dagalakis
1992 J jnl
IEEE Trans. Syst. Man Cybern.
Daniel Raviv, James S. Albus
1992 J jnl
Computer
James S. Albus
1991 A conf
IROS
James S. Albus
1991 J jnl
IEEE Trans. Syst. Man Cybern.
James S. Albus
1990 A* conf
ICRA
James S. Albus, Tsai Hong
1990 J jnl
Robotics Auton. Syst.
James S. Albus
1989 conf
COMPCON
James S. Albus
1988 A* conf
ICRA
Martin Herman, James S. Albus
1988 J jnl
Robotics Auton. Syst.
Ronald Lumia, James S. Albus
1986 J jnl
Robotics
James S. Albus
1984 J jnl
Robotica
Ernest W. Kent, James S. Albus
1977 A* conf
IJCAI
William B. Gevarter, James S. Albus, N. Caplan, B. Chern, Kent K. Curtis, Marvin Denicoff, James R. Slagle
1972 conf
AFIPS Fall Joint Computing Conference (2)
James S. Albus
1971 A* conf
SIGIR
James S. Albus, Jeffrey Yeh
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)