Alucard - scan de redes defensivo

Publicado por felipe (última atualização em 25/02/2025)

[ Hits: 45 ]

Download alucard.c




Esse programa busca um range de ips e busca informação de cada ip do range.
Ele deve rodar em segundo plano, com comando ./alucard & esse programa deve ser usado como root,

  



Esconder código-fonte

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <netdb.h>
    struct sockaddr_in addr;
    struct timeval timeout;
    FILE *fr, *fw, *op;
    char ip[256], buff[256];
    // portas pela qual a aplicação irá
   // ficar rodando.
    int lport[] = {21, 22, 23, 80, 443, 445, 465};
    int sock = 0, cnx = 0;
    char cmdBuff[256];
    // pega dados e cria arquivo
    void add(){
       printf("Getway: ");
       fgets(ip, 256, stdin);
       fw = fopen("/var/log/alucard_ips.txt", "w");
       ip[strlen(ip)-3] = '\0';
       for(int loop = 1; loop < 256; loop++){
          fprintf(fw, "%s.%d\n", ip, loop);   
      }
      fclose(fw);
   }
   
    // verifica se o arquivo getway existe
    // caso não, ele será criado.
    void ok(){
       op = fopen("/var/log/alucard_ips.txt", "r");
       if(op == NULL){
          add();
      }
   }
    
    int main(){
      ok();
      timeout.tv_sec = 1;
      timeout.tv_usec = 0;
      //roda as portas definidas
      for(int run = 0; run < 7; run++){
          fr = fopen("/var/log/alucard_ips.txt", "r");   
          while(fgets(buff, 256, fr) != NULL){
             addr.sin_addr.s_addr = inet_addr(buff);
             addr.sin_port = htons(lport[run]);   
             addr.sin_family = AF_INET;
             sock = socket(AF_INET, SOCK_STREAM, 0);
             if(sock < 0){
               perror("sock error");
                return 1;   
            }
            setsockopt(sock, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout));
            setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO, &timeout, sizeof(timeout));
            cnx = connect(sock, (struct sockaddr *)&addr, sizeof(addr));
            if(cnx == 0){
               strcpy(cmdBuff, "nmap -sT -O -A -v ");
               strcat(cmdBuff, buff);
               op = popen(cmdBuff, "r");
               fw = fopen("/var/log/alucard_log.txt", "a");
               fprintf(fw, "=== [*]log[*] ===\n");
               while(fgets(buff, 256, op) != NULL){
                  fprintf(fw, "%s", buff);
               }
                fclose(op);
                fclose(fw);
            }
         }
      }
       return 0;   
   }

Scripts recomendados

Socket em C/C++ - CLIENT

Exemplo de daemon em C

Exemplo de Cliente e Servidor Usando Socket no Linux!

Acha IP

Simples TCP Cliente em C#


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts