This repository contains my solutions for the EE309 course assignments at KAIST. Each assignment focuses on different aspects of system-level programming in C, emphasizing Unix/Linux internals and network programming.
- Description: Implemented a simplified version of the Unix
lscommand supporting options-a,-l, and-R. - Key Features:
- Handles multiple file and directory inputs.
- Supports hidden files display with
-a. - Provides detailed file information with
-l. - Recursively lists directories with
-R.
- Assignment Details: Assignment 1 Description
- Description: Developed a custom dynamic memory allocator mimicking
mallocandfree. - Key Features:
- Implemented explicit free lists.
- Utilized segregated free lists for efficient allocation.
- Ensured coalescing of free blocks to minimize fragmentation.
- Assignment Details: Assignment 2 Description
- Description: Explored buffer overflow vulnerabilities and implemented protections.
- Key Features:
- Demonstrated exploitation techniques.
- Applied stack canaries and address space layout randomization (ASLR).
- Analyzed the impact of buffer overflows on program control flow.
- Assignment Details: Assignment 3 Description
- Description: Built a concurrent HTTP proxy server handling multiple client requests.
- Key Features:
- Parsed and forwarded HTTP/1.0 requests.
- Managed concurrent connections using multithreading.
- Implemented caching mechanisms for repeated requests.
- Assignment Details: Assignment 4 Description