Advertisement
Guest User

Keygen

a guest
Aug 30th, 2017
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. /*
  2. * Cyber Jawara 2017 - RSA Key generator 2.0
  3. *
  4. * gcc rsa_keygen2.c -o rsa_keygen2
  5. * socat -d -d -d TCP4-LISTEN:41337,reuseaddr,fork EXEC:"./rsa_keygen2" &
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <time.h>
  11.  
  12. void rand_str(char *str, size_t len) {
  13. char cset[] = "0123456789"
  14. "abcdefghijklmnopqrstuvwxyz"
  15. "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
  16.  
  17. while (len-- > 0) {
  18. size_t idx = (double) rand() / RAND_MAX * (sizeof cset - 1);
  19. *str++ = cset[idx];
  20. }
  21.  
  22. *str = '\0';
  23. }
  24.  
  25. size_t escape_gets(char *pass, size_t limit) {
  26. size_t sz;
  27. char c;
  28. sz = 0;
  29.  
  30. while (sz++ < limit) {
  31. c = getchar();
  32. if (c == '\n' || c == '\0') {
  33. break;
  34. } else if (c == '\'') {
  35. *pass++ = '\'';
  36. *pass++ = '\\';
  37. *pass++ = '\'';
  38. *pass++ = '\'';
  39. } else {
  40. *pass++ = c;
  41. }
  42. }
  43.  
  44. *pass = '\0';
  45. return sz;
  46. }
  47.  
  48. void rsa_keygen() {
  49. char passphrase[128];
  50. char private_gen[320];
  51. char public_gen[320];
  52. char tmp[128];
  53. char dir[32];
  54. size_t len;
  55.  
  56. puts("");
  57. puts(" --//-- CJ RSA Key Generator --//-- ");
  58. puts("");
  59.  
  60. rand_str(dir, 30);
  61. sprintf(tmp, "mkdir dir/%s 2>/dev/null ", dir);
  62.  
  63. passphrase[0] = '\0';
  64. len = 0;
  65. while (len < 4) {
  66. puts("Passphrase: ");
  67. len = escape_gets(passphrase, 127);
  68. if (len < 4 || len > 127) {
  69. puts("You must type in 4 to 127 characters");
  70. }
  71. }
  72. puts("");
  73.  
  74. system(tmp);
  75.  
  76. sprintf(private_gen,
  77. "openssl genrsa -aes128 -passout 'pass:%s' -out "
  78. "dir/%s/private.pem 2048 2>/dev/null",
  79. passphrase, dir);
  80.  
  81. sprintf(public_gen,
  82. "openssl rsa -passin 'pass:%s' -in dir/%s/private.pem "
  83. "-outform PEM -pubout -out dir/%s/public.pem 2>/dev/null",
  84. passphrase, dir, dir);
  85.  
  86. system(private_gen);
  87. system(public_gen);
  88.  
  89. sprintf(tmp, "cat dir/%s/private.pem 2>/dev/null ", dir);
  90. system(tmp);
  91. sprintf(tmp, "cat dir/%s/public.pem 2>/dev/null ", dir);
  92. system(tmp);
  93. }
  94.  
  95. void init() {
  96. char buff[1];
  97. buff[0] = 0;
  98. setvbuf(stdout, buff, _IOFBF, 1);
  99. srand(time(0));
  100. }
  101.  
  102. int main() {
  103. init();
  104. rsa_keygen();
  105. return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement