【问题标题】:Prevent socat from stealing stdin防止 socat 窃取标准输入
【发布时间】:2015-12-31 21:10:29
【问题描述】:

我使用socat 进行快速 telnet 横幅抓取,如下所示:

for ip in $list
do
    socat -T 1 - tcp:$ip:23 &
done

它遍历指定的 IP 地址列表,并为每个 IP 地址调用 socat,它将端口 23 上的 TCP socketstdin (-) 链接起来,并在一秒钟后断开连接,同时在后台运行。问题是所有后台进程都使用相同的stdin,所以它们都会挂起。我尝试了readline 选项,以及用</dev/null 抑制stdin,但没有结果。例如,netcat 的行为方式相同,除非指定 -d 忽略输入。

我指定的socat 行是用于其他目的的脚本的一部分,所以如果问题可以在不诉诸masscannmapnetcat 的情况下解决就好了.谢谢。

【问题讨论】:

  • 我真的不知道您要达到什么目的,但是如果您将- 替换为不执行任何操作的进程替换会有所帮助吗?这个:socat -T 1 <(:) tcp:$ip:23 &.
  • 你指定了< /dev/null 之前 &,对吧?
  • socat 必须允许在一秒后超时。如果从管道的一端或另一端提供echo -n |</dev/null,它什么也不发送并立即退出会话,有时甚至在横幅显示之前。当提供<(:) 时,socat 抱怨 /dev/fd/.. 是一个只读文件系统。

标签: linux bash stdin telnet socat


【解决方案1】:

必须有更好的方法来做到这一点,但到目前为止我还没有找到。

echo -n 的问题 |是当 echo 完成时,一个 sigpipe 将被发送到 socat。

为了解决这个问题,我做了

虽然是真的;睡觉 10 ;完成 | socat -T 1 - tcp:$ip:23

这给出了一个管道并且没有结束。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2020-09-27
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多