2020년 1월 14일 화요일

nc — arbitrary TCP and UDP connections and listens

# 네트워크 port open 여부 확인.
ex) nc -v 127.0.0.1 1234


#네트워크 Sour/Dest 간 port open 여부 확인 방법
- 아래 명령어를 통해 basic client/server model을 만들기 위해,  netcat의 listening을 시작한다.

Server side:
$ nc -l 1234

Client side:
$ nc -v 127.0.0.1 1234

Result:
Connection to 127.0.0.1 1234 port [tcp/*] succeeded!

# 예제
$ nc -zv host.example.com 20-30
           Connection to host.example.com 22 port [tcp/ssh] succeeded!
           Connection to host.example.com 25 port [tcp/smtp] succeeded!

the source port, with a timeout of 5 seconds:
           $ nc -p 31337 -w 5 host.example.com 42

     Open a UDP connection to port 53 of host.example.com:
           $ nc -u host.example.com 53

     Open a TCP connection to port 42 of host.example.com using 10.1.2.3 as
     the IP for the local end of the connection:
           $ nc -s 10.1.2.3 host.example.com 42





#응용1: 위와 같이 서버를 생성하고, 클라이언트에서 접속 후 text를 쓸수 있음.
Server side:
$ nc -l 1234 > filename.out


Client side:
$ nc -v 127.0.0.1 1234
Connection to 127.0.0.1 1234 port [tcp/*] succeeded!
a
^C

Result: 
$ cat filename.out 

a
$


#응용2: 특정 IP에 port 범위를 지정하고 scan할 수 있음
$ echo "QUIT" | nc -v 127.0.0.1 20-30
$ nc -v 127.0.0.1 20-30
$ nc -v -w 1 127.0.0.1 20-30            (1sec 단위)
$ nc -v -w 1 192.168.0.44 400-500 | grep succeeded        (open된 port만 보여주기)