加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Sniff UNIX域套接字

发布时间:2020-12-13 18:04:11 所属栏目:Linux 来源:网络整理
导读:我知道有些进程正在写入某个unix域套接字(/var/run/asterisk/asterisk.ctl),但我不知道发送方的pid.如何找出谁在写入套接字?我尝试过: sudo lsof /var/run/asterisk/asterisk.ctl 但它只列出了套接字的所有者.我想知道谁正在写/读这个套接字,我也想嗅探数
我知道有些进程正在写入某个unix域套接字(/var/run/asterisk/asterisk.ctl),但我不知道发送方的pid.如何找出谁在写入套接字?我尝试过:
sudo lsof /var/run/asterisk/asterisk.ctl

但它只列出了套接字的所有者.我想知道谁正在写/读这个套接字,我也想嗅探数据.这可能吗?

解决方法

简短的答案是否定的,不容易.

在Linux上,lsof依赖于/ proc / net / unix来检索有关UNIX域套接字的信息.此接口列出了所有绑定套接字,但它不跟踪端点.因此,您可以看到存在哪些套接字,但您无法看到与它们相关的内容.在某处跟踪此信息,必须跟踪它,否则套接字连接将无法工作.我还没有找到任何机制来检索连接信息.

嗅探问题稍微有点儿,但同样令人失望.我的意思是“不容易”,就是没有任何钩子潜入并抓取数据.最接近的模拟是使用tcpdump或Wireshark,两者都使用libpcap来实际进行繁重的工作.虽然网络(AF_INET)和UNIX域(AF_UNIX)都是使用socket()函数调用创建的,但都使用connect()连接,都使用read()和write()来处理数据,它们由不同的内核处理子系统.这有一个令人遗憾的副作用,即libpcap不适用于UNIX域套接字.

这个问题略显暗淡.看一下recv(2)的手册页.这是read()使用的低级系统调用. recv()存在一个名为MSG_PEEK的标志.这将允许您嗅探通过UNIX域套接字的流量.所以这是光明的一面,黑暗的一面是,据我所知,目前没有任何设计用于此目的的应用程序.所以你正在寻找一些开发工作.

我真的希望F’YEAH对你问题的两个部分都有一个很好的简单答案.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读