AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[socat](unix)

Martin Hope
Evgeniy Berezovsky
Asked: 2022-06-19 17:45:49 +0800 CST

socat 不支持 sourceport 选项

  • 0

我正在尝试从特定端口发送 udp 数据包:

$ echo hello | socat - UDP-DATAGRAM:192.168.1.255:11111,broadcast,sourceport=22222

但是使用了随机端口:

# tcpdump -vvvv -ttttt -nienp0s31f6 udp
tcpdump: listening on enp0s31f6, link-type EN10MB (Ethernet), snapshot length 262144 bytes
 00:00:00.000000 IP (tos 0x0, ttl 64, id 40649, offset 0, flags [DF], proto UDP (17), length 34)
    192.168.1.17.35829 > 192.168.1.255.11111: [udp sum ok] UDP, length 6

如何从特定端口发送(广播)udp 数据包?

注意,我也尝试使用 socat 发送单播 udp 数据包,但sourceport在那里也没有受到尊重。

socat udp
  • 1 个回答
  • 69 Views
Martin Hope
Mr Krisey
Asked: 2021-12-07 09:36:34 +0800 CST

socat:EXEC 没有正确中继

  • 1

我有一个小程序,它首先向用户输出一个字符串,然后接受一个输入。相反,我希望程序通过从端口发送和接收来工作。为了尝试实现这一点,我运行了命令socat TCP4-LISTEN:1337,reuseaddr,fork EXEC:./program。通过这个命令,我希望能够运行nc 127.0.0.1 1337并期望程序:

  1. 接收来自程序的消息
  2. 能够提供输入
  3. 失去联系

但是,当使用socat它运行程序时,就像这样

  1. 提供输入
  2. 从程序收到的消息
  3. 给另一个输入
  4. 失去了连接

我不明白为什么会这样。我使用该socat命令有什么问题吗?如果是,请告诉我缺少/错误的内容。

这是程序。

#include <stdio.h>

void vuln(void) {
    printf("Input\n");
    char buffer[256];
    gets(buffer); // potential buffer overflow
}

int main(void) {
    vuln();
    return 0;
}
c socat
  • 1 个回答
  • 352 Views
Martin Hope
Roger Lipscombe
Asked: 2019-04-12 00:31:59 +0800 CST

TCP侦听器丢弃所有输入?

  • 1

我正在尝试实现一个接受连接的 TCP 侦听器,然后简单地丢弃其所有输入(它用于测试工具)。

现在,我正在使用socat - tcp-listen:2003,fork,reuseaddr,但这会将输入打印到标准输出。我不想要那个。

我无法将输出重定向到/dev/null,因为我在alpine/socat docker 容器中执行此操作,并且它实际上并未使用 shell,因此重定向不起作用。

如果我尝试使用socat /dev/null tcp-listen:2003,fork,reuseaddr,那么任何连接都会立即断开,大概是因为socat无法从/dev/null.

实现 TCP 侦听器的最佳方式是什么?

socat
  • 2 个回答
  • 1285 Views
Martin Hope
Will
Asked: 2019-04-04 04:50:47 +0800 CST

除非通过 UDP 使用 socat 代理,否则将数据发送到 Unix 套接字失败

  • 1

我正在尝试调试为什么不通过 Unix 域套接字发送数据。

我有 2 个应用程序应该通过 UDS 进行通信,但不是。

为了测试我做了以下事情:

使用socat,我在这样的套接字上监听:

socat -x -u UNIX-RECV:/tmp/dd.sock STDOUT

并使用 netcat 发送这样的数据:

echo "hello" | nc -U -w1 /tmp/dd.sock

什么都没发生。

但是,如果我还将 socat 设置为代理,以侦听 UDP 端口,并将其写入套接字,如下所示:

socat -s -u UDP-RECV:9988 UNIX-SENDTO:/tmp/dd.sock

然后通过netcatUDP 端口发送工作:

echo "Hello" | nc -u localhost 9988

我还能够让我的客户端应用程序将 UDP 写入代理,并且在写入 unix 套接字时没有成功。

我想了解为什么socat不接收由 写入它的数据nc,但如果我通过 UDP 代理则可以。

使用 Amazon Linux 4.14.101-75.76.amzn1.x86_64

unix-sockets socat
  • 1 个回答
  • 2015 Views
Martin Hope
abc
Asked: 2018-07-28 12:43:14 +0800 CST

如何将消息分隔符添加到 socat 正在管道的 UDP 流中?

  • 7

我socat用来拦截 UDP 消息并将它们发送到命名管道:

socat UDP-LISTEN:9999,fork PIPE:/tmp/mypipe,append

我能够跟踪此管道并查看它收到的所有消息。

我想通过管道输出tail -f /tmp/mypipetosed对消息进行一些后处理,但不幸的是其中一些不是换行符终止的。这是一个问题,因为这意味着多个不同的 UDP 消息可能在同一行上,并且还因为tail -f /tmp/mypipe | sed ...如果最后一行未终止,则不会通过最后一行。

理想情况下,我希望能够在将消息发送到我的管道时添加自定义消息分隔符,以便我可以轻松找到消息边界。如果这是不可能的,那么有什么方法可以让我按照这个文件并将最后(可能未终止的)行传输到另一个程序进行后处理?

socat
  • 2 个回答
  • 2012 Views
Martin Hope
z0lupka
Asked: 2018-07-25 06:39:13 +0800 CST

如何在没有文件路径的情况下嗅探 unix dgram 套接字?

  • 5

从那篇文章中,我意识到:

UNIX 域套接字绑定到文件路径。

所以,我需要通过这里socat提到的嗅探 DGRAM Unix 套接字。但是当我尝试为此目的检索路径时,我发现目标应用程序使用了一个没有文件路径的套接字。

该ss -apex命令显示有和没有文件路径的结果,例如:

u_dgr UNCONN 0 0 /var/lib/samba/private/msg.sock/32222   1345285 * 0   users:(("nmbd",pid=32222,fd=7))
u_dgr UNCONN 0 0 * 8567674   * 0   users:(("gnome-shell",pid=16368,fd=23))

从ss 手册页* 8567674我无法找到,例如没有文件路径是什么意思。

所以,两个问题:

  1. 为什么在某些情况下没有指向 unix 套接字的文件路径?
  2. 如何在socat没有文件路径的情况下通过嗅探 unix DGRAM 套接字?
linux socat
  • 1 个回答
  • 1281 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve