标签: netcat

将十六进制字符串转换为二进制并使用 netcat 发送

我有一个可以发送的二进制文件netcat

$ nc -l localhost 8181 < my.dat
Run Code Online (Sandbox Code Playgroud)

该文件包含以下内容:

$ xxd my.dat
0000000: 0006 3030 3030 4e43                      ..0000NC
Run Code Online (Sandbox Code Playgroud)

我真正想做的是直接发送十六进制字符串。我试过这个:

$ echo '0006303030304e43' | nc -l localhost 8181
Run Code Online (Sandbox Code Playgroud)

但是,上面的命令只是将 ascii 字符串直接发送到nc.

linux binary netcat

63
推荐指数
3
解决办法
13万
查看次数

netcat 如何知道 UDP 端口是否打开?

所以我可以使用这个 netcat 命令来检查 UDP 端口是否打开:

$  nc -vz -u 10.1.0.100 53
Connection to 10.1.0.100 53 port [udp/domain] succeeded!
Run Code Online (Sandbox Code Playgroud)

与 TCP 不同,UDP 是无连接的(即发即忘)。那么在高层次上有没有人知道 netcat 是如何知道 UDP 端口是打开的?它是否要求回复或类似的东西?

udp netcat

57
推荐指数
4
解决办法
14万
查看次数

/dev/tcp 监听而不是 nc 监听

使用 netcat 侦听器,例如:

nc -l <port> < ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

我可以在一台新机器(没有nc或 LDAP)上抓取我的 .bashrc :

cat < /dev/tcp/<ip>/<port> > ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

我的问题是:有没有办法nc -l <port>用 /dev/tcp 而不是模仿我第一行中的功能nc

我正在使用的机器是极其坚固的实验室/沙盒环境 RHEL(没有 ssh,没有 nc,没有 LDAP,没有 yum,我无法安装新软件,而且它们没有连接到互联网)

shell bash rhel io-redirection netcat

40
推荐指数
2
解决办法
4万
查看次数

ncat、nc 和 netcat 有什么区别?

我不确定何时使用nc,netcatncat。如果一个是另一个的弃用版本?如果一个仅在一个发行版上可用?如果它是相同的命令但名称不同?

其实我有点困惑。我的问题来自想要在两台 CentOS 7 服务器之间进行网络速度测试。我遇到了几个使用nc和 的例子,dd但使用netcat或 的例子并不多ncat

有人可以为我澄清一下吗?

centos netcat nc

36
推荐指数
2
解决办法
4万
查看次数

无法通过 nc 访问主机,但可以 ping

我正在尝试使用 netcat 从一台虚拟机连接到另一台虚拟机的端口 25,但它告诉我,no route to host尽管我可以 ping。我确实将防火墙默认策略设置为丢弃,但我有一个例外,可以接受该特定子网上端口 25 的流量。我可以使用 nc 在端口 25 上从 VM 3 连接到 VM 2,但不能从 VM 2 连接到 3。

这是我的 VM2 防火墙规则的预览

截屏

这是我的 VM 3 防火墙规则的预览

截屏

当我显示我拥有的侦听服务时*:25,这意味着它正在侦听所有 ipv4 ip 地址和:::25ipv6 地址。我不明白错误在哪里以及为什么不工作两个防火墙规则都接受端口 25 上的流量,因此它应该连接。我尝试比较两者之间的差异以了解为什么我可以从 vm3 连接到 vm2 但配置都是相同的。关于可能是什么问题的任何建议?

更新停止 iptable 服务解决了问题,但我仍然需要存在这些规则。

linux firewall iptables centos netcat

33
推荐指数
1
解决办法
8万
查看次数

使用 netcat 进行端口转发

我有一个侦听进程IP:port- 实际上它是连接到套接字的火花流。问题是我希望以某种方式创建一个连接到一个端口上的 spark 的服务器,并且数据从另一个端口流入该服务器。

例如,火花流示例使用 netcat 实用程序(例如nc -lk 5005)。但是,我有另一个服务可以侦听传入的消息然后吐出一条消息。所以我需要某种服务器来监听来自服务 A 的消息并将它们传递给 spark。

我的服务 A,依赖于套接字。我的火花消费者依赖于套接字。

这是我到目前为止所做的是从端口到端口的转发,但这似乎不起作用:

nc -X 4 -x 127.0.0.1:5005 localhost 5006
Run Code Online (Sandbox Code Playgroud)

有了服务A:5005->套接字-> 5006->Spark的想法

我似乎找不到正确的方法来完成这项工作。

一些答案提出了以下建议:

socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006
Run Code Online (Sandbox Code Playgroud)

我的火花插座接收器没有或似乎无法连接。我收到错误:Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

linux networking netcat nc

29
推荐指数
1
解决办法
6万
查看次数

Netcat - 如何使用 IPv6 地址侦听 TCP 端口?

我正在使用最新版本的 netcat ( v1.10-41.1),它似乎没有 IPv6 地址的选项(就像-6旧版本的nc)。

如果我输入nc -lvnp 2222并检查监听端口netstat -punta,服务器似乎只监听2222IPv4 地址的端口:

tcp        0      0 0.0.0.0:2222            0.0.0.0:*               LISTEN      2839/nc  
Run Code Online (Sandbox Code Playgroud)

tcp6 不活跃,例如,我的 apache2 服务器:

tcp6       0      0 :::80                   :::*                    LISTEN      -
Run Code Online (Sandbox Code Playgroud)

linux netcat

19
推荐指数
1
解决办法
3万
查看次数

通过 ProxyCommand 大大提高了 SSH 速度 - 但为什么呢?

TL;DR 版本

观看此 ASCII 演员表此视频- 然后找出发生这种情况的任何原因。下面的文字说明提供了更多的上下文。

设置细节

  • 机器 1 是一台 Arch Linux 笔记本电脑,在其ssh上生成,连接到运行 Armbian 的 SBC(橙色 PI 零)。
  • SBC 本身通过以太网连接到 DSL 路由器,IP 为 192.168.1.150
  • 笔记本电脑通过 WiFi 连接到路由器 - 使用官方 Raspberry PI WiFi 加密狗。
  • 还有另一台笔记本电脑(机器 2)通过以太网连接到 DSL 路由器。

拓扑

使用 iperf3 对链接进行基准测试

以 为基准时iperf3,笔记本电脑和 SBC 之间的链接低于理论 56 Mbits/sec - 正如预期的那样,因为这是一个非常“拥挤的 2.4GHz” (公寓楼)内的 WiFi 连接。

更具体地说:在iperf3 -sSBC 上运行后,在笔记本电脑上执行以下命令:

# iperf3 -c 192.168.1.150
Connecting to host 192.168.1.150, port 5201
[  5] local 192.168.1.89 port …
Run Code Online (Sandbox Code Playgroud)

networking ssh netcat

17
推荐指数
1
解决办法
3732
查看次数

使用输入/输出命名管道进行 TCP 连接

我一直在摆弄让这个工作一段时间,所以我怀疑对管道如何工作的某种根本误解是我遇到麻烦的根本原因。

我的目标是通过netcat并在文件系统上有两个命名管道启动到某个远程主机的 TCP 连接:一个进程可以从中读取以获取传入数据,另一个进程可以写入作为传出数据。我目前正在使用以下结构:

mkfifo in
mkfifo out
cat out | netcat foo.bar.org 4000 > in &
Run Code Online (Sandbox Code Playgroud)

从这里开始,我想允许其他进程从这个打开的 TCP 连接读取和写入。这应该“正常工作”,还是有这样的构造不能工作的原因?

什么似乎目前发生的是,我可以读取out没有问题,但是当我写到in我得到的输出提一个破碎的管道和所有后续通信似乎是死了。想法?

(相关:我最初使用的是:

netcat foo.bar.org 4000 < out > in &
Run Code Online (Sandbox Code Playgroud)

但发现它阻塞等待输入。我对此也很好奇,但最好在单独的问题中解决。)

bash pipe tcp netcat

16
推荐指数
1
解决办法
2万
查看次数

通过 SSH 反向隧道的远程桌面替换 TeamViewer

我想通过我的 SSH(反向)隧道打开从我的笔记本电脑到桌面的远程桌面会话。那应该很简单(或者至少是可行的),对吧?到目前为止,我一直在使用 Team Viewer 登录远程桌面。我想在没有 Team Viewer 的情况下获得类似的结果。

这是我的 SSH 隧道的样子:

laptop--->nat--->middleman<--nat<--desktop
Run Code Online (Sandbox Code Playgroud)

所有机器都运行 Linux(主要是 Kubuntu 12.04 或 OpenSuse 12.3)。我无法在 nat 路由器上更改任何端口或进行任何配置更改。

我将描述我的 SSH 隧道,因为在解决作为我问题核心的 VNC/远程桌面问题时,理解这一点似乎是必要的。关于这条腿:

middleman<--nat<--desktop
Run Code Online (Sandbox Code Playgroud)

...这是它的建立方式:

autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com
Run Code Online (Sandbox Code Playgroud)

关于这条腿:

laptop--->nat--->middleman
Run Code Online (Sandbox Code Playgroud)

我可以按如下方式连接到中间人:

me@laptop:~$ ssh -i ~/.ssh/id_rsa admin@middleman  
Run Code Online (Sandbox Code Playgroud)

但是,我实际上需要做的是直接连接到桌面,而不是中间人。为此,我在中间人上使用 netcat(“nc”)。基于,似乎需要 nc 。所以我在笔记本电脑上编辑我的 SSH 配置文件以使用 ProxyCommand 和 nc:

me@laptop:~/.ssh$ nano config
Run Code Online (Sandbox Code Playgroud)

内容是:

Host family_desktops
  ProxyCommand ssh middleman_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa
Run Code Online (Sandbox Code Playgroud)

哪里middleman_fqdn像“middleman.com”

然后我只需一步连接到“桌面”:

me@laptop:~$ ssh family_desktops -p …
Run Code Online (Sandbox Code Playgroud)

ssh ssh-tunneling remote-desktop netcat

15
推荐指数
1
解决办法
1万
查看次数