ForgetNot is a terminal-based password manager written in C that allows users to generate, store, view, edit, and delete passwords using binary file storage.
The project focuses on low-level systems concepts such as memory management, binary I/O, and modular program design.
-
🔑 Password Generation
- User-defined length
- Optional symbols
- Randomized using
rand()seeded with system time
-
💾 Binary File Storage
- Passwords stored securely in a binary file (
passwords.db) - Uses fixed-size
structrecords for consistency and safety
- Passwords stored securely in a binary file (
-
👀 View Saved Passwords
- Lists all saved services
- View service, username, and password
-
✏️ Edit Passwords
- Edit service name, username, password, or all fields
- Option to generate a new password during edit
-
🗑 Delete Passwords
- Safely remove passwords with confirmation
-
🧠 Modular Design
- Separate source files for each feature
- Static library (
libpass.a) built with Makefile
- C (C99)
- Dynamic memory allocation (
malloc,realloc,free) - Binary file I/O (
fread,fwrite) - Struct-based data modeling
- Static libraries
- Makefile-based build system
- Defensive programming & input validation
ForgetNot/ │ ├── src/ │ ├── main.c │ ├── generatePassword.c │ ├── savePassword.c │ ├── viewPassword.c │ ├── editPassword.c │ ├── deletePassword.c │ └── header.h │ ├── Makefile └── README.md
- GCC (MinGW on Windows)
mingw32-make
mingw32-make.\bin\password.exeMoby Computer Science student Built as a systems programming & learning project