用bash特有的文件系统/dev/tcp建立tcp连接示例

在Bash中,/dev/tcp是一个特殊的文件系统,可以使用简单的重定向来建立TCP/IP连接。

文件名格式:

/dev/tcp//<端口>

以下是如何在Bash中使用/dev/tcp的一些示例:

  1. 检查远程端口是否打开:
echo >/dev/tcp/example.com/80 && echo "端口80已打开" || echo "端口80已关闭"

此命令通过尝试打开到远程主机example.com的连接来检查其端口80是否打开。如果连接成功,则显示消息“端口80已打开”。否则,它会显示消息“端口80已关闭”。

  1. 给HTTP服务器发送请求并获得响应:
exec 3<>/dev/tcp/example.com/80
echo -e "GET / HTTP/1.1r
Connection: closer
Host: example.comr
r
" >&3
cat <&3 

以下是命令的每一行的作用:

  1. exec 3<>/dev/tcp/example.com/80:这将在端口80上打开到"example.com"的网络连接,并将其与文件描述符3关联。使用exec命令为shell脚本的其余部分设置文件描述符重定向。
  2. echo -e "GET / HTTP/1.1r Connection: closer Host: example.comr r " >&3:这将使用文件描述符3向端口80上的Web服务器发送HTTP GET请求。>&3将echo命令的输出重定向到文件描述符3,该文件描述符将数据发送到网络连接。
  3. cat <&3:这将从文件描述符3读取Web服务器的响应。<&3将cat命令的输入从文件描述符3重定向,该文件描述符将读取响应数据。


  1. 设置端口转发隧道:
while true; do nc -l 1234 <&1 2>&1 | nc example.com 80 >&2 2>&1; done

执行转发命令

连接转发端口,回车发送http请求

此命令在两个主机之间设置了一个端口转发隧道。它在端口1234上侦听传入连接,并将所有输入和输出重定向到与端口80上的example.com的连接。可以访问远程主机上运行的服务,就好像它们在本地运行一样。

注意,/dev/tcp不是POSIX标准的一部分,可能不适用于所有系统或Shell。此外,由于它可以用于基于网络的攻击,系统管理员可能会限制/dev/tcp的使用。

展开阅读全文

页面更新:2024-04-21

标签:示例   可能会   文件名   文件系统   端口   命令   主机   消息   服务器   文件   网络

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top