netcat 또는 socat이있는 에코 서버


18

UDP 에코 서버가 패킷을 가져 와서 수신 한 내용에 정확하게 응답하기를 원합니다. 어떻게 간단하게 사용하여이 작업을 수행 할 수 있습니다 netcat또는 socat? 영원히 살아 있어야하며 여러 호스트에서 오는 패킷을 처리해야합니다.


7
인터넷에 액세스 할 수 없도록 만드십시오. UDP 기반이기 때문에 소스 위조 된 패킷을 사용하여 임의의 대상으로 패킷 스트림을 보내는 데 사용할 수 있습니다.
Evan Anderson

답변:


17

또 다른 netcat과 같은 도구는 nmap 버전입니다.이 도구는 이와 같은 ncat것을 단순화하기 위해 많은 내장 기능을 갖추고 있습니다. 이것은 작동합니다 :

ncat -e /bin/cat -k -u -l 1235

-e 수단이 빈 / 고양이 / 실행 (사용자가 입력 한 내용을 다시 반향)
-k 수단이 연결 유지, 그것은 각 연결 후 듣기 유지하는 것이
-u 수단 UDP
는 포트 1235에서 수신하는 -l 1235 개 수단



6

netcat을 사용하지 않고 socat을 에코 서버로 사용하고 netcat을 클라이언트로 사용할 수도 있습니다.

Socat 에코 서버 (TCP 포트 1234에 있음) :

socat -v tcp-l:1234,fork exec:'/bin/cat'

Netcat 클라이언트 (TCP 포트 1234의 serverip에 연결) :

nc serverip 1234

2

포크 nc -u -l -p 4321 한 다음 dup (2) 를 사용하여 연결 하는 C 프로그램을 작성할 수 있습니다 .

  • 부모의 표준 출력을 가진 nc stdin
  • 부모의 stdin을 가진 nc stdout

그런 다음 무한 루프에서 부모는 stdin에서 읽고 부모가 읽는 모든 것을 stdout에 씁니다.


사용할 수 socat -v PIPE UDP-LISTEN:5555,fork있지만 두 번째 연결이 거부됩니다. 그건 그렇고, 그것은 TCP-LISTEN과 잘 작동합니다. 코드 작성을 피하고 있습니다. 그렇지 않으면 C로 모두 작성할 수 있습니다.
Mohammad Hedayati

당신은 모든 것을 끝없는 루프로 감싸 야합니다 : while true; socat 물건을; 완료
adamo


0

Windows에서 실행 중이고 cygwin과 같은 환경과 같은 유닉스를 사용하는 경우 netcat migth는 -e 매개 변수를 제공하지 않습니다. 이것은 나를 위해 잘 작동했습니다.

http://bansky.net/echotool/


0

netcat Ubunutu에 사전 설치된 솔루션

netcat사전 설치된 우분투 16.04에은에서 온다 netcat-openbsd, 더없는 -c옵션을하지만, 매뉴얼 솔루션을 제공합니다 :

sudo mknod -m 777 fifo p
cat fifo | netcat -l -k localhost 8000 > fifo

그런 다음 클라이언트 예 :

echo abc | netcat localhost 8000

TODO : 입력 문자열 값을 수정하는 방법? 다음은 응답을 반환하지 않습니다.

cat fifo | tr 'a' 'b' | netcat -l -k localhost 8000 > fifo

그러나 원격 쉘 예제는 작동합니다.

cat fifo | /bin/sh -i 2>&1 | netcat -l -k localhost 8000 > fifo

그러나 동시 요청을 간단하게 처리하는 방법을 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.