From d7c1195a1a3a18ff9b3b7c8b9fbe71b53571f9d7 Mon Sep 17 00:00:00 2001 From: benstrb Date: Sat, 1 Nov 2025 20:52:03 +0100 Subject: [PATCH] Version 1.0 --- a.out | Bin 0 -> 16376 bytes password_gen.c | 82 +++++++++++++++++++++++++++++++++++++------------ 2 files changed, 62 insertions(+), 20 deletions(-) create mode 100755 a.out diff --git a/a.out b/a.out new file mode 100755 index 0000000000000000000000000000000000000000..0603d81c3e8d7cb3c595a37bf5f6e9d8fca13b79 GIT binary patch literal 16376 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 #include +#define error "minimal_length maximal_length options custom_characters\n" + int str_to_int(char* str) { int output = 0; for (int i = 0; i < strlen(str); i++) { + if (str[i] < '0' || str[i] > '9') { + printf("That is not a number.\n"); + exit(1); + } + output *= 10; output += str[i] - '0'; } @@ -14,6 +21,13 @@ int str_to_int(char* str) { return output; } +void not_avaliable_options(char** argv) { + if (strcmp(argv[3], "-c") != 0) { + printf(error); + exit(1); + } +} + void invalid_args(int argc) { if (argc < 4 && argc > 5) { printf("nuhuh\n"); @@ -37,7 +51,7 @@ char* character_list(int argc, char** argv) { case 'U': final_size += sizeof(uppercase) - 1; break; - case 'L': + case 'l': final_size += sizeof(lowercase) - 1; break; case 's': @@ -46,42 +60,60 @@ char* character_list(int argc, char** argv) { case 'n': final_size += sizeof(numbers) - 1; break; + default: + printf(error); + exit(1); } } + output = malloc(sizeof(char) * (final_size + 1)); - int copy_index = 0; + int last_index = 0; + const char* current_list; + int size; for (int i = 0; argv[3][i] != '\0'; i++) { - const char* current_list; - int size; - switch (argv[3][i]) { case 'U': current_list = uppercase; - size = sizeof(uppercase); + size = sizeof(uppercase) - 1; break; - case 'L': + case 'l': current_list = lowercase; - size = sizeof(lowercase); + size = sizeof(lowercase) - 1; break; case 's': current_list = symbols; - size = sizeof(symbols); + size = sizeof(symbols) - 1; break; case 'n': current_list = numbers; - size = sizeof(numbers); + size = sizeof(numbers) - 1; break; } - for (int j = 0; j < size - 1; j++) { - output[copy_index] = current_list[j]; - copy_index++; + for (int j = 0; j < size; j++) { + output[last_index] = current_list[j]; + last_index++; } - - output[final_size] = '\0'; } + output[final_size] = '\0'; + } + + else if (argc == 5) { + int final_size = 0; + + for (int i = 0; argv[4][i] != '\0'; i++) { + final_size++; + } + + output = malloc(sizeof(char) * (final_size + 1)); + + for (int i = 0; argv[4][i] != '\0'; i++) { + output[i] = argv[4][i]; + } + + output[final_size] = '\0'; } return output; @@ -106,16 +138,26 @@ char* random_str(int length, char* symbols) { int main(int argc, char** argv) { invalid_args(argc); + + if (argc == 5) { + not_avaliable_options(argv); + } + srand(time(NULL)); int min_length = str_to_int(argv[1]); int max_length = str_to_int(argv[2]); + if (min_length > max_length) { + printf("Your minimal length is longer than your maximal length.\n"); + exit(1); + } + int length = random_len(min_length, max_length); - if (argc == 4) { - char* password = random_str(length, character_list(argc, argv)); - puts(password); - free(password); - } + char* symbols = character_list(argc, argv); + char* password = random_str(length, symbols); + free(symbols); + puts(password); + free(password); }