roccomuso/nc

GitHub: roccomuso/nc

用 Node.js 重新实现的 Netcat 命令行网络工具,支持 TCP/UDP 通信、端口扫描、文件传输等多种网络操作。

Stars: 26 | Forks: 4

# nc [![NPM Version](https://img.shields.io/npm/v/nc.svg)](https://www.npmjs.com/package/nc) ![node](https://img.shields.io/node/v/nc.svg) [![Dependency Status](https://david-dm.org/roccomuso/nc.png)](https://david-dm.org/roccomuso/nc) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com) Patreon donate button 使用 Node.js 实现的 Netcat 移植版。CLI 工具。:computer: 如果要在你的 Node.js 应用中嵌入使用,请改用 [netcat](https://github.com/roccomuso/netcat) 包。本工具旨在作为独立工具使用,但并没有完全等同于原始版本的 netcat 实现。 | Linux | Mac OS | Windows | |-------|--------|---------| | :white_check_mark: | :white_check_mark: | :white_check_mark: | ## 功能 - [x] TCP & UDP - [x] 后门(反向 Shell) - [x] 蜜罐 - [x] 文件传输 - [x] 端口转发 - [ ] 代理 - [x] Web 服务器与 HTTP 客户端 - [x] 端口扫描 ## 安装 ``` $ npm install -g nc ``` ## 用法 ``` $ nc -l -p port [- options] [hostname] [port] ``` 可用选项: ``` -c shell commands as `-e’; use /bin/sh to exec [dangerous!!] -e filename program to exec after connect [dangerous!!] -b allow broadcasts -h this cruft -i secs delay interval for lines sent, ports scanned -k set keepalive option on socket -l listen mode, for inbound connects -n numeric-only IP addresses, no DNS -o file hex dump of traffic -p port local port number -r randomize local and remote ports -s addr local source address -u UDP mode -U Listen or connect to a UNIX domain socket -v verbose -w secs timeout for connects and final net reads (client-side) -z zero-I/O mode [used for scanning] ``` #### 服务器:监听入站连接 ``` $ nc -l -p 2389 ``` #### 客户端模式 ``` $ nc localhost 2389 ``` 打开一个到端口 `2389` 的原始连接。 #### 传输文件 | 服务器端 | 客户端 | |---------------------|------------------------------------| | `nc -l 2389 > test` | cat testfile | nc localhost 2389 | #### 超时支持 ``` $ nc -w 10 localhost 2389 ``` 上述连接将在 10 秒后被终止。 #### 强制 netcat 服务器保持运行 ``` $ nc -kl 2389 ``` 这样即使客户端断开连接,服务器也会继续运行。 #### Netcat 执行命令 更令人兴奋的是,通过 `-l` 或 `listen` 选项以及 `-e` 或 `execute` 选项,在远程机器上快速获取一个 shell。建立连接后,Netcat 会执行你选择的程序,并将该程序的 `stdin` 和 `stdout` 连接到该网络连接上。 ``` $ nc -l -p 23 -e /bin/sh ``` #### 获取网站首页 让我们创建一个 HTTP 请求文件 `get.txt`,其中包含以下内容,然后是一个空 行: ``` GET / HTTP/1.0 ``` 使用 Netcat 获取网站主页: ``` $ nc -v www.website.com 80 < get.txt ``` 你将看到 Netcat 连接到 80 端口,发送文件 `get.txt` 中包含的文本,然后将 Web 服务器的响应输出到 `stdout`。 #### 配置 netcat 客户端在断开连接时重试 在正常情况下,如果 nc 客户端断开连接,它是不会重试连接的。 使用 `--retry ` 或 `-R ` 参数,它将在指定的秒数后重试连接。 ``` $ nc -R 5 localhost 2389 ``` #### Unix socket 文件 如果你安装了 docker,我们可以尝试通过连接到 docker 的 unix socket 文件来列出我们的容器镜像: ``` $ echo -e "GET /images/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock ``` 附注:此示例需要 root 权限:`sudo su`。 #### 将 Netcat 作为代理 ``` $ mkfifo /tmp/fifo $ nc -l -k -p 8080 /tmp/fifo ``` #### 将 Netcat 作为简单的端口扫描器 ``` $ nc -z 192.168.1.100 1-255 ``` #### 导出十六进制流量 如果你使用 `-o` 选项,你可以导出所有的十六进制流量。 ``` $ nc 127.0.0.1 4445 -o /tmp/log.txt ``` #### UDP 协议 默认情况下,nc 工具创建的所有 socket 都是 TCP 协议,但该工具也支持 UDP 协议。要启用 UDP 协议,需使用 -u 标志。 | 服务器端 | 客户端 | |---------------------|------------------------------------| | `nc -u -l -p 2389` | `nc -u localhost 2389` | #### 发送 UDP 消息 ``` $ echo 'message' | nc -w 1 -u 192.168.1.111 514 ``` 通过 UDP (-u) 以 1 秒的等待时间 (-w) 将数据管道传输到 `192.168.1.111` 的 `514` 端口。 ## DEBUG Debug 对应于详细输出模式。 你可以使用 `-v` 参数或环境变量 `DEBUG=nc` 来启用它。该模块底层使用了 [netcat](https://github.com/roccomuso/netcat) 的 Node.js 实现,如果要同时调试两者,请使用:`DEBUG=netcat:*,nc`。 ## 作者 Rocco Musolino ([@roccomuso](https://twitter.com/roccomuso))
标签:GNU通用公共许可证, MITM代理, Node.js, 插件系统, 数据可视化, 暗色界面, 网络信息收集, 网络安全, 网络通信, 自定义脚本, 隐私保护