From ccb1aa75481ad9bead771cc312f7bfce3feed9a0 Mon Sep 17 00:00:00 2001 From: AfonsoCMSousa Date: Thu, 27 Feb 2025 23:26:45 +0000 Subject: [PATCH] Possible optimisation by requesting how many passwords exist instead of brute forcing all passwords. --- KeyMaster | Bin 34552 -> 34552 bytes bin/KeyMaster | Bin 34552 -> 34552 bytes src/main.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 54 insertions(+), 2 deletions(-) diff --git a/KeyMaster b/KeyMaster index de712a4a5de8fb0f57a285f5f0e22ebbac951a15..4b2ffc37c5ef73cc1d385812991a1f59ad4e616d 100755 GIT binary patch delta 2743 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 b34c>qAALt_4eNpMJKGlMNY`Wc`py3Xh&Y7} diff --git a/bin/KeyMaster b/bin/KeyMaster index de712a4a5de8fb0f57a285f5f0e22ebbac951a15..4b2ffc37c5ef73cc1d385812991a1f59ad4e616d 100755 GIT binary patch delta 2743 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 b34c>qAALt_4eNpMJKGlMNY`Wc`py3Xh&Y7} diff --git a/src/main.c b/src/main.c index 6486d59..7ed8545 100644 --- a/src/main.c +++ b/src/main.c @@ -169,7 +169,39 @@ int main(void) printf("\nList of existing passwords:\n<------->\n"); Request req; - for (int i = 0; i < 256; i++) + // send request with type 4 to get IDs for all passwords + req.type = 4; + memset(&req.key, 0, sizeof(req.key)); + req.ID = 1; + req.level = 0; + + send(sockfd, &req, sizeof(req), 0); + if (req.level == -1) + { + printf("No passwords found\n"); + } + else + { + for (int i = 0; i < req.level; i++) + { + Request req1; + + req1.type = 0; + memset(&req1.key, 0, sizeof(req1.key)); + req1.ID = i; + req1.level = 0; + + send(sockfd, &req1, sizeof(req1), 0); + + // Receive response from the server + recv(sockfd, &req1, sizeof(req1), 0); + if (req1.level != -1 && strlen(req1.key) > 0) + { + printf("ID: %d\tKey: %s\n", req1.ID, req1.key); + } + } + } + /* for (int i = 0; i < 256; i++) { Request req1; @@ -186,7 +218,7 @@ int main(void) { printf("Level: %d\tKey: %s\n", req1.level, req1.key); } - } + } */ printf("<------->\n\n"); choice = prompNormalRequest(">> "); @@ -240,6 +272,26 @@ int main(void) free(aux); free(aux2); } + else if (strcmp(choice, "delpass") == 0) + { + printf("Please enter the level of security for the password to delete (1-255): "); + int level; + scanf("%d", &level); + clear_input_buffer(); + + if (level < 0 && level > 255) + { + printf("Invalid level of security\nStopping...\n"); + continue; + } + // send request with TYPE = 2 + req.type = 2; + memset(&req.key, 0, sizeof(req.key)); + req.ID = 1; + req.level = level; + + send(sockfd, &req, sizeof(req), 0); + } else { printf("Invalid command (%s)\n\"Q\" or \"quit\" or \"exit\" to close the program\n", choice);