implement flags -h -g -d -i -l p
This commit is contained in:
@@ -1,49 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
class Buffer
|
||||
{
|
||||
public:
|
||||
unsigned char* buffer = nullptr;
|
||||
int taken = 0;
|
||||
int size = 0;
|
||||
Buffer(int size)
|
||||
{
|
||||
this->size = size;
|
||||
this->buffer = new unsigned char[size];
|
||||
}
|
||||
uint8_t* buffer = nullptr;
|
||||
size_t taken = 0;
|
||||
size_t size = 0;
|
||||
|
||||
Buffer() {
|
||||
size = 0;
|
||||
buffer = nullptr;
|
||||
}
|
||||
Buffer(size_t size);
|
||||
Buffer();
|
||||
~Buffer();
|
||||
bool resize(size_t new_size);
|
||||
void add(uint8_t* data, size_t data_size);
|
||||
|
||||
~Buffer()
|
||||
{
|
||||
if (buffer) delete[] buffer;
|
||||
}
|
||||
// Removes data from buffer without checking if it's in the buffer
|
||||
void remove_fast(uint8_t* data, size_t data_size);
|
||||
|
||||
void resize(int new_size)
|
||||
{
|
||||
unsigned char* new_buffer = (unsigned char*)realloc(buffer, new_size);
|
||||
if (!new_buffer)
|
||||
{
|
||||
printf_s("Error resizing buffer\n");
|
||||
return;
|
||||
}
|
||||
void remove(size_t index, size_t data_size);
|
||||
|
||||
buffer = new_buffer;
|
||||
size = new_size;
|
||||
}
|
||||
size_t find(uint8_t* data, size_t data_size);
|
||||
|
||||
void add(void* data, int data_size)
|
||||
{
|
||||
if (taken + data_size > size)
|
||||
{
|
||||
resize(size + data_size);
|
||||
}
|
||||
memcpy_s(buffer + taken, size - taken, data, data_size);
|
||||
taken += data_size;
|
||||
}
|
||||
void remove(uint8_t* data, size_t data_size);
|
||||
|
||||
void clear() { taken = 0; }
|
||||
|
||||
};
|
@@ -5,87 +5,31 @@
|
||||
|
||||
struct Pass
|
||||
{
|
||||
char label[20];
|
||||
char password[20];
|
||||
char label[21];
|
||||
char password[21];
|
||||
|
||||
Pass()
|
||||
{
|
||||
memset(label, 0, 20);
|
||||
memset(password, 0, 20);
|
||||
};
|
||||
Pass() = default;
|
||||
};
|
||||
|
||||
bool find_password(Buffer* buff, char* label, char* password)
|
||||
enum class Args
|
||||
{
|
||||
Pass* passwords = (Pass*)buff->buffer;
|
||||
Get, // get password for label
|
||||
Generate, // generate password for label
|
||||
List, // list all labels
|
||||
Delete, // delete password for label
|
||||
Print_all_p, // print all passwords
|
||||
Input, // input password for label
|
||||
Error // error
|
||||
};
|
||||
|
||||
for (int i = 0; i < buff->taken / sizeof(Pass); i++)
|
||||
{
|
||||
if (!strcmp(passwords[i].label, label))
|
||||
{
|
||||
strcpy_s(password, 20, passwords[i].password);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Pass* find_password(Buffer* buff, char* label);
|
||||
|
||||
void generate_password(char* password)
|
||||
{
|
||||
srand(time(NULL));
|
||||
char characters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_-+={[}]|:;<,>.?";
|
||||
for (int i = 0; i < 15; i++)
|
||||
{
|
||||
password[i] = characters[rand() % (sizeof(characters) - 1)];
|
||||
}
|
||||
password[15] = '\0';
|
||||
}
|
||||
void generate_password(char* password);
|
||||
|
||||
bool save_buffer_to_file(Buffer* buffer)
|
||||
{
|
||||
std::ofstream file("passwords.bin", std::ios::binary);
|
||||
if (!file.is_open())
|
||||
{
|
||||
printf_s("Error saving file\n");
|
||||
return false;
|
||||
}
|
||||
file.write((char*)buffer->buffer, buffer->taken);
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
bool save_buffer_to_file(Buffer* buffer);
|
||||
|
||||
bool load_buffer_from_file(Buffer* buffer)
|
||||
{
|
||||
bool load_buffer_from_file(Buffer* buffer);
|
||||
|
||||
std::ifstream file("passwords.bin", std::ios::binary);
|
||||
if (!file.is_open()) return false;
|
||||
void print_usage();
|
||||
|
||||
file.seekg(0, std::ios::end);
|
||||
buffer->resize(file.tellg());
|
||||
file.seekg(0, std::ios::beg);
|
||||
file.read((char*)buffer->buffer, buffer->size);
|
||||
|
||||
if (file)
|
||||
buffer->taken = buffer->size;
|
||||
else
|
||||
buffer->taken = file.gcount();
|
||||
|
||||
file.close();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void print_usage()
|
||||
{
|
||||
printf_s(" Usage:\n\n");
|
||||
printf_s(" password_manager.exe [flags]\n\n");
|
||||
printf_s(" Flags:\n\n");
|
||||
printf_s(" -h\t\t\tprint this message WIP\n");
|
||||
printf_s(" <label>\t\tget password of this label\n");
|
||||
printf_s(" -g <label>\t\tgenerate or update password of this label WIP [update]\n");
|
||||
printf_s(" -l\t\t\tlist all labels WIP\n");
|
||||
printf_s(" -d <label>\t\tdelete password of this label WIP \n");
|
||||
printf_s(" -c\t\t\tclear all passwords WIP\n");
|
||||
printf_s(" -p\t\t\tprint all passwords WIP\n");
|
||||
|
||||
}
|
||||
Args get_args(int argc, char** argv, char** label);
|
Reference in New Issue
Block a user