2013-05-16 1 views
0

집에서 PC를 통한 원격 작업을위한 백도어 프로그램을 만들고 있습니다. 서버가 잘 연결되어 있지만 각 문자를 입력 할 때 새 명령으로 분할 된 문자로 명령을 실행할 때 문제가 있습니다 ... 'echo'를 입력하면 'e'가 인식되지 않으므로 결과가 인쇄됩니다. 내부 또는 외부 명령과 어쩌구처럼. 그러면 'c'를 인식하지 못합니다.각 문자 뒤에 python 리모컨 프로그램이있는 명령 입력이 나뉘어집니다.

내 포인트를 얻었습니까 ??? PLZ

import socket 
import subprocess 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
s.bind((ipadd_of_pc_running_this_appl,12345)) 
s.listen(3) #ignore this plz..i will change this later 
cli,addr=s.accept() 
while 1: 
    data=cli.recv(1024) 
    if data: 
     data=data.decode() #string type conversion 
     proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
     output=proc.stdout.readline()+proc.stderr.readline() 
     cli.send(output) 

가 Btw은 내가에 연결하기 위해 유사하거나 TELENT를 사용하려면 : 코드

어떻게 내가 에코 입력 할 때 전체 명령 여기

을 기다리는이 일을 할 것입니다 감사는 recv_into 미안 사전 에 ... 난 그것을 RECV 감사

주를 변경하는 것을 잊었다 : 문제는 아직 해결되지 않습니다. 내 다른 파일의 내용을 복사하여 붙여 넣었습니다. 이제 코드가 편집됩니다. 친절하게 밖으로 도와

는 popen이 시도 인수 목록을 기대하고, 그래서
+0

'stderr = subprocess.PIPE'를 제거하면 stderr은 stdout으로 간다. -> 오류와 출력이 혼합되면 더 읽기 쉽다. – User

+0

버퍼를'recv_into'에 건네주지 않는 이유는 무엇입니까 – iruvar

답변

0

, 나는이 솔루션

줄을 모르겠어요 data =cli.recv(2048)

-data =cli.recv(1024) 변화를 발견하지만 왜 그것은 작동했다 : D

0

:

Popen([data], 
0

내가이

data=cli.recv(1024) 

data=cli.recv_into(1024) 

을 변경하여 작업을 얻을 수 recv_into은 버퍼 매개 변수를 예상합니다. OP 코드가 어떻게 실패하지 않는지 전혀 알지 못합니다. ure. 여기

이 흔적 - 및 - 오류의 많은 후 코드

import socket 
import subprocess 
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
s.bind(('127.0.0.1',12345)) 
s.listen(1) #ignore this plz..i will change this later 
cli,addr=s.accept() 
while 1: 
     data =cli.recv(1024) 
     if data: 
       data=data.decode() #string type conversion 
       proc=subprocess.Popen(data,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE) 
       output=proc.stdout.readline()+proc.stderr.readline() 
       print(output) 
+0

내 친구는 미안하지만 그 recv는 recv_into가 아닙니다 ... 미안 해요 내 잘못 –

+0

@suryatejakarra, 그것이 작동한다면 자유롭게 대답을 받아 들일 수 있습니다 – iruvar

+0

아니 내 친구, 내 문제 이건 ... 그 문제를 일으키는 창문의 텔넷 클라이언트 ... 나는 우분투를 사용하여 동일한 서버로 연결을 시도하고 그것에 텔넷을했다 ... 서버는 내가 돌아올 때까지 기다렸다가 진행된다. 나는 안드로이드 터미널 에뮬레이터를 사용하여 그것도 시도했다. [dnt는 내가 뿌리 낀 안드로이드 모바일을 가지고있다.] ... 나의 윈도우 7의 텔넷 클라이언트는 범인이다. –

관련 문제