TypeError:需要一个类似字节的对象,使用套接字时不是'str'

时间:2019-04-09 09:55:58

标签: python python-3.x sockets typeerror

作为网络安全课程的一部分,我有一个用于模糊vulnserver的基本脚本。

当我的脚本将有效负载A * 100发送到目标服务器时,我遇到了问题。我收到如下错误:

TypeError: a bytes-like object is required, not 'str'

SO上已经存在类似的问题,但它们似乎是在读取文件而不是通过套接字发送请求。

虽然我正在调试脚本,但已使用try/except函数添加了print(),如下所示,但这通常包装在调用方法中。我只是试图精确地确定异常的位置正在发生。

我曾尝试在多个地方使用encode(),但这似乎没有任何作用。

父方法位于底部,完整解决方案位于Github

#!/usr/bin/python3

import socket
import sys

class Send:

    def __init__(self, target):
        self.ip = target.ip
        self.port = target.port
        self.path = target.path

    def send_payload(self, payload):
        try:
            s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
            s.settimeout(2)
            s.connect((self.ip, self.port))
            s.recv(1024)

            s.send((self.path + payload))
            s.close()
        except Exception as e:
            print(f"Exception In send: {e}")
            sys.exit()

从这里打电话...

#!/usr/bin/python3

from time import sleep
from send_request import Send
import sys

def find_crash(target):

    buffer = "A" * 100
    s = Send(target)

    while True:
        try:
            s.send_payload(buffer)
            sleep(1)
            buffer = buffer + "A" * 100
        except Exception as e:
            print("Exception: " + str(e))
            return len(buffer)

0 个答案:

没有答案