Advertisement
ByMsx

Password generator

Feb 25th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.75 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4.  
  5. FILE *file;
  6.  
  7. void writeFile(const char* buffer, size_t buffer_len) {
  8.     assert(file);
  9.  
  10.     fwrite(buffer, sizeof(char), buffer_len, file);
  11.     fputc('\n', file);
  12. }
  13.  
  14. void gain(char* buffer, size_t buffer_idx, int remain_length);
  15.  
  16. inline void put_symbol(char* buffer, size_t buffer_idx, int remain_length, char symbol)
  17. {
  18.     buffer[buffer_idx] = symbol;
  19.     buffer_idx++;
  20.     if (remain_length > 0)
  21.     {
  22.         gain(buffer, buffer_idx, remain_length - 1);
  23.     } else {
  24.         writeFile(buffer, buffer_idx);
  25.     }
  26. }
  27.  
  28. void gain(char* buffer, size_t buffer_size, int remain_length)
  29. {
  30.     char i;
  31.     for (i = 'a'; i <= 'z'; i++)
  32.         put_symbol(buffer, buffer_size, remain_length, i);
  33.  
  34.     for (i = '0'; i <= '9'; i++)
  35.         put_symbol(buffer, buffer_size, remain_length, i);
  36.  
  37.     for (i = 'A'; i <= 'Z'; i++)
  38.         put_symbol(buffer, buffer_size, remain_length, i);
  39.  
  40.     char* symbols = "[]*.:;' \"|0";
  41.    
  42.     for (i = 0; symbols[i] != 0; i++)
  43.         put_symbol(buffer, buffer_size, remain_length, symbols[i]);
  44. }
  45.  
  46. int main(int argc, char** argv)
  47. {
  48.     if (argc <= 1)
  49.     {
  50.         fprintf(stderr, "Error: you must set password length\n");
  51.     } else {
  52.         file = fopen("passlist.txt", "w");
  53.         if (argc == 2) {
  54.             int password_length = atoi(argv[1]);
  55.             char* buffer = malloc(sizeof(char) * (password_length));
  56.  
  57.             gain(buffer, 0, password_length - 1);
  58.         } else if (argc == 3) {
  59.             int min_password_length = atoi(argv[1]);
  60.             int max_password_length = atoi(argv[2]);
  61.  
  62.             char *buffer = malloc(sizeof(char) * max_password_length);
  63.        
  64.             for (int i = min_password_length - 1; i < max_password_length; i++)
  65.             {
  66.                 gain(buffer, 0, i);
  67.                 printf("Generated passwords with length: %i", i + 1);
  68.             }
  69.         }
  70.     }
  71.  
  72.     if (file)
  73.         fclose(file);
  74.  
  75.     return 0;
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement