Post

NetCat ( nc )

standalone server

이를 이용하면 non-socket programming binary도 standalone server로 동작할 수 있다. 근데 하나의 connection만 처리할 수 있으며 connection이 종료되면 nc도 꺼진다.

1
2
$ nv -vvv -e /bin/sh -l -p 1234

1
2
3
$ rm -f /tmp/f; mkfifo /tmp/f
$ cat /tmp/f | /bin/sh -i 2>&1 | nc -vvv -l -p 1234 > /tmp/f

* -i 는 interactive 옵션인데, 대화형 모드로 띄워준다.

interactive mode

startup file을 읽어들이고, 프롬프트를 표시해준다. interactive mode를 백그라운드로 돌리면, 사용자 입력을 대기하며 멈춰있게 된다.

non-interactive mode

startup file을 읽어들이지 않는다. 쉘스크립트같은 경우 백그라운드에서 사람의 입력 없이 돌아가야 하는게 대부분이므로, 기본적으로 non-interactive mode로 동작한다. 그러나 이 것이 non-interactive mode가 사용자 입력을 받을 수 없다는 뜻은 아니기 때문에, nc server에서 non-interactive mode로 쉘을 열어 놓았다고 해도 사용자와의 입출력이 가능해 쉘이 정상적으로 동작한다.

Note ) socat을 활용해 remote로 포팅하는 방법도 있다.

1
2
3
socat tcp-listen:9090,fork,reuseaddr exec:/path

Basic

server :

1
2
nc -vvv -l -p 8888

client :

1
2
nc servIP 8888

파일 전송

server :

1
2
nc -l -p 8888 > output

client :

1
2
nc servIP < input 또는 cat input | nc servIP 8888

input, output 방향 반대로 해도 가능하다.

This post is licensed under CC BY 4.0 by the author.