Calvin Lin

96 papers A* 29A 11B 4C 2Journal 17Unranked 31
YearRankTypeTitle / Venue / Authors
2026 A* conf
HPCA
Quang Duong, Calvin Lin
2024 A* conf
ISCA
Quang Duong, Akanksha Jain, Calvin Lin
2024 J jnl
CoRR
Chirag Sakhuja, Charles Hong, Calvin Lin
2024 conf
SEED
Shijia Wei, Austin Harris, Yongye Zhu, Prakash Ramrakhyani, Calvin Lin, Mohit Tiwari
2023 J jnl
IEEE Micro
Ishan Shah, Akanksha Jain, Calvin Lin
2023 A* conf
HPCA
Chirag Sakhuja, Zhan Shi, Calvin Lin
2023 conf
BuildSys
Calvin Lin, Ting-Yu Dai, Aysegül Demir Dilsiz, Drury Crawley, Dev Niyogi, Zoltán Nagy
2022 A* conf
HPCA
Ishan Shah, Akanksha Jain, Calvin Lin
2022 J jnl
IEEE Trans. Computers
Hao Wu, Krishnendra Nathella, Matthew Pabst, Dam Sunwoo, Akanksha Jain, Calvin Lin
2021 B conf
PPoPP
Kai Wang, Don Fussell, Calvin Lin
2021 A* conf
ASPLOS
Zhan Shi, Akanksha Jain, Kevin Swersky, Milad Hashemi, Parthasarathy Ranganathan, Calvin Lin
2020 J jnl
CoRR
Zhan Shi, Chirag Sakhuja, Milad Hashemi, Kevin Swersky, Calvin Lin
2020 conf
BuildSys
Hagen Fritz, Calvin Lin, Zoltán Nagy
2019 A* conf
MICRO
Zhan Shi, Xiangru Huang, Akanksha Jain, Calvin Lin
2019 book
Akanksha Jain, Calvin Lin
2019 A* conf
ISCA
Hao Wu, Krishnendra Nathella, Dam Sunwoo, Akanksha Jain, Calvin Lin
2019 A* conf
ASPLOS
Kai Wang, Don Fussell, Calvin Lin
2019 A* conf
MICRO
Hao Wu, Krishnendra Nathella, Joseph Pusdesris, Dam Sunwoo, Akanksha Jain, Calvin Lin
2018 A* conf
ISCA
Akanksha Jain, Calvin Lin
2017 A* conf
ISCA
Kai Wang, Calvin Lin
2017 A* conf
ASE
Jia Chen, Oswaldo Olivo, Isil Dillig, Calvin Lin
2016 A* conf
ISCA
Akanksha Jain, Calvin Lin
2016 A conf
SIGCSE
George Veletsianos, Bradley Beth, Calvin Lin
2016 A* conf
USENIX Security Symposium
Ashay Rane, Calvin Lin, Mohit Tiwari
2015 A conf
SIGCSE
Daniel D. Garcia, Owen L. Astrachan, Bennett Brown, Jeffrey G. Gray, Calvin Lin, Bradley Beth, Ralph A. Morelli, Marie desJardins, Nigmanath Sridhar
2015 A* conf
CCS
Oswaldo Olivo, Isil Dillig, Calvin Lin
2015 A conf
OOPSLA
Yu Feng, Xinyu Wang, Isil Dillig, Calvin Lin
2015 A* conf
USENIX Security Symposium
Ashay Rane, Calvin Lin, Mohit Tiwari
2015 A* conf
PLDI
Oswaldo Olivo, Isil Dillig, Calvin Lin
2015 J jnl
Inroads
Bradley Beth, Calvin Lin, George Veletsianos
2014 A conf
ICER
Elynn Lee, Victoria Shan, Bradley Beth, Calvin Lin
2014 J jnl
IEEE Trans. Vis. Comput. Graph.
Paul A. Navrátil, Hank Childs, Donald S. Fussell, Calvin Lin
2013 A* conf
MICRO
Akanksha Jain, Calvin Lin
2013 A conf
ICER
Joe Tessler, Bradley Beth, Calvin Lin
2012 conf
EGPGV@Eurographics
Paul A. Navrátil, Donald S. Fussell, Calvin Lin, Hank Childs
2012 A conf
ICER
Joanna Smith, Joe Tessler, Elliot Kramer, Calvin Lin
2011 ch.
Encyclopedia of Parallel Computing
Calvin Lin
2011 A conf
CGO
Ben Hardekopf, Calvin Lin
2010 conf
High-End Visualization Workshop
Paul A. Navrátil, Donald S. Fussell, Calvin Lin
2010 conf
ICDE Workshops
Antonio Sala, Calvin Lin, Howard Ho
2009 A* conf
HPCA
Ibrahim Hur, Calvin Lin
2009 A* conf
POPL
Ben Hardekopf, Calvin Lin
2008 A* conf
HPCA
Ibrahim Hur, Calvin Lin
2008 A* conf
CCS
Walter Chang, Brandon Streiff, Calvin Lin
2007 A conf
IPDPS
Adam Brown, James C. Browne, Calvin Lin
2007 B conf
SAS
Ben Hardekopf, Calvin Lin
2007 J jnl
ACM Trans. Comput. Syst.
Ibrahim Hur, Calvin Lin
2007 A* conf
PLDI
Ben Hardekopf, Calvin Lin
2006 J jnl
IEEE Micro
Ibrahim Hur, Calvin Lin
2006 C conf
ISMM
Kartik K. Agaram, Stephen W. Keckler, Calvin Lin, Kathryn S. McKinley
2006 B conf
CC
Teck Bok Tok, Samuel Z. Guyer, Calvin Lin
2006 A* conf
MICRO
Ibrahim Hur, Calvin Lin
2006 A conf
IPDPS
James C. Browne, Calvin Lin, Kevin Kane, Yoonsik Cheon, Patricia J. Teller
2005 J jnl
Proc. IEEE
Samuel Z. Guyer, Calvin Lin
2005 J jnl
Sci. Comput. Program.
Samuel Z. Guyer, Calvin Lin
2004 A* conf
MICRO
Ibrahim Hur, Calvin Lin
2004 conf
LCR
Alison N. Norman, Sung-Eun Choi, Calvin Lin
2004 J jnl
Computer
Doug Burger, Stephen W. Keckler, Kathryn S. McKinley, Michael Dahlin, Lizy Kurian John, Calvin Lin, Charles R. Moore, James H. Burrill, Robert G. McDonald, William Yode
2004 conf
IEEE PACT
Ramadass Nagarajan, Sundeep K. Kushwaha, Doug Burger, Kathryn S. McKinley, Calvin Lin, Stephen W. Keckler
2003 B conf
SAS
Samuel Z. Guyer, Calvin Lin
2002 J jnl
ACM Trans. Comput. Syst.
Daniel A. Jiménez, Calvin Lin
2002 conf
AOSD
Richard Cardone, Adam Brown, Sean McDirmid, Calvin Lin
2001 conf
IEEE PACT
Daniel A. Jiménez, Heather L. Hanson, Calvin Lin
2001 A* conf
ICSE
Richard Cardone, Calvin Lin
2001 conf
PP
Emery D. Berger, Samuel Z. Guyer, Calvin Lin
2001 A* conf
HPCA
Daniel A. Jiménez, Calvin Lin
2001 conf
Euro-Par
Scott B. Baden, Paul H. J. Kelly, Sergei Gorlatch, Calvin Lin
2000 J jnl
J. Parallel Distributed Comput.
Martin C. Herbordt, Jade Cravy, Renoy Sam, Owais Kidwai, Calvin Lin
2000 conf
CAMP
Martin C. Herbordt, Jade Cravy, Honghai Zhang, Calvin Lin, Hong Rao
2000 conf
The Architecture of Scientific Software
Samuel Z. Guyer, Calvin Lin
2000 conf
ASAP
Martin C. Herbordt, Honghai Zhang, Calvin Lin, Hong Rao, Jade Cravy
2000 conf
LCPC
Samuel Z. Guyer, Calvin Lin
2000 A* conf
MICRO
Daniel A. Jiménez, Stephen W. Keckler, Calvin Lin
2000 J jnl
IEEE Trans. Software Eng.
Bradford L. Chamberlain, Sung-Eun Choi, E. Christopher Lewis, Calvin Lin, Lawrence Snyder, Derrick Weathersby
1999 conf
DSL
Samuel Z. Guyer, Calvin Lin
1999 conf
USENIX Symposium on Internet Technologies and Systems
Jian Yin, Lorenzo Alvisi, Michael Dahlin, Calvin Lin
1999 conf
APL
Bradford L. Chamberlain, E. Christopher Lewis, Calvin Lin, Lawrence Snyder
1999 J jnl
IEEE Trans. Knowl. Data Eng.
Jian Yin, Lorenzo Alvisi, Michael Dahlin, Calvin Lin
1998 conf
IPPS/SPDP
John A. Gunnels, Calvin Lin, Greg Morrow, Robert A. van de Geijn
1998 J jnl
IEEE Trans. Parallel Distributed Syst.
Gail A. Alverson, William G. Griswold, Calvin Lin, David Notkin, Lawrence Snyder
1998 A* conf
PLDI
E. Christopher Lewis, Calvin Lin, Lawrence Snyder
1998 A conf
ICDCS
Jian Yin, Lorenzo Alvisi, Michael Dahlin, Calvin Lin
1998 C conf
HIPS
Bradford L. Chamberlain, Sung-Eun Choi, E. Christopher Lewis, Calvin Lin, Lawrence Snyder, Derrick Weathersby
1997 conf
PDSE
Lorenzo Alvisi, Rajeev Joshi, Calvin Lin, Jayadev Misra
1996 conf
LCPC
Bradford L. Chamberlain, Sung-Eun Choi, E. Christopher Lewis, Calvin Lin, Lawrence Snyder, Derrick Weathersby
1995 conf
PP
E. Christopher Lewis, Calvin Lin, Lawrence Snyder, George Turkiyyah
1995 A conf
International Conference on Supercomputing
Marios D. Dikaiakos, Daphne Manoussaki, Calvin Lin, Diana E. Woodward
1994 conf
IPPS
Calvin Lin, Lawrence Snyder
1994 conf
LCPC
Calvin Lin, Lawrence Snyder
1993 conf
Workshop on Parallel and Distributed Debugging
Janice E. Cuny, George Forman, Alfred Hough, Joydip Kundu, Calvin Lin, Lawrence Snyder, David W. Stemple
1993 conf
LCPC
Calvin Lin, Lawrence Snyder
1992 conf
LCPC
Calvin Lin, Lawrence Snyder
1991 J jnl
Int. J. Parallel Program.
Calvin Lin, Lawrence Snyder
1991 conf
PP
Calvin Lin, Lawrence Snyder
1991 conf
LCPC
Jinling Lee, Calvin Lin, Lawrence Snyder
1990 conf
ICPP (2)
Calvin Lin, Lawrence Snyder
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)