지금까지 코드 명령처럼 : 여기 스크린 샷에서 볼 수 있듯이netcat을 다시 전송하지 않습니다 델파이에서 프로그램을 듣는 것은 내가 여기 윈속 를 사용하여 포트 8080을 청취 델파이 프로그램이
program Project1;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils,
WinSock;
var
WSAData: TWSAData;
ServerSocket,ClientSocket: TSocket;
ServerAddr, ClientAddr: TSockAddr;
ClientAddrSize,Status,ret: Integer;
Buffer1,buffer2: array[0..1024] of Char;
begin
writeln('started..');
WSAStartup($0101,WSAData);
ServerSocket:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family:=AF_INET;
ServerAddr.sin_port:=htons(8080);
ServerAddr.sin_addr.S_addr:=INADDR_ANY;
bind(ServerSocket,ServerAddr,SizeOf(ServerAddr));
listen(ServerSocket,10);
ClientAddrSize:=SizeOf(ClientAddr);
ClientSocket:=accept(ServerSocket,@ClientAddr,@ClientAddrSize);
if ClientSocket <> INVALID_SOCKET then
begin
while True do
begin
ret:=recv(ClientSocket,Buffer2,SizeOf(Buffer2),0);
Writeln(Buffer2);
Readln(Input, Buffer1);
ret:=send(ClientSocket,Buffer1,SizeOf(Buffer1),0);
end;
end;
end.
:
내가 netcat을 열고 내 프로그램은 원격 명령 셸을 엽니 다 을 "NC 127.0.0.1 8080 -e cmd.exe를"을 사용하여 연결합니다. 내가
Readln(Input, Buffer1);
모든 아이디어는 이후에 명령을 보내더라도,
내 프로그램은 명령 프롬프트를 열 때 일반적으로 볼 수있는 첫 번째 라인을 얻을 수 있지만, 나중에 내가 "디렉토리"와 같은 명령을 실행할 수없는 이유는 무엇입니까?
EDIT : "dir"명령은 "C : \>"아래에 작성되었습니다. netcat처럼해야 할 필요가 있습니다. 아마도 명령에 대한 파이프를 만들어야합니다.
netcat' 작동하지만, 당신은 라인을 보내는 확인을 얼마나'확실하지 각 명령의 종료 문자는 무엇입니까? –
흠, 당신은 vaild 포인트가, 나는 테스트를 만들거야. – Ira
그게 내가 명령을 보내는 각 Buffer1의 끝에 문자 # 13 # 10을 추가하면 그랬다. – Ira