首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过dbus发送访问Avahi

通过dbus发送访问Avahi
EN

Stack Overflow用户
提问于 2014-02-13 01:53:34
回答 1查看 2.4K关注 0票数 2

在使用dbus-monitor进行黑客攻击的过程中,我尝试连接到Avahi守护进程:

代码语言:javascript
复制
$ dbus-monitor --system \
  "type='signal',interface='org.freedesktop.Avahi.Server',member='StateChanged'"

这将响应Avahi守护进程状态的变化。

代码语言:javascript
复制
$ sudo restart avahi-daemon

signal sender=org.freedesktop.DBus -> 
         dest=:1.315 
         serial=2
         path=/org/freedesktop/DBus;
         interface=org.freedesktop.DBus;
         member=NameAcquired
    string ":1.315"

signal sender=:1.318 ->
         dest=(null destination)
         serial=4
         path=/;
         interface=org.freedesktop.Avahi.Server; 
         member=StateChanged
    int32 1
    string "org.freedesktop.Avahi.Success"

signal sender=:1.318 -> 
         dest=(null destination)
         serial=13
         path=/;
         interface=org.freedesktop.Avahi.Server;
         member=StateChanged
    int32 2
    string "org.freedesktop.Avahi.Success"

但是,我不能浏览这样的服务。

代码语言:javascript
复制
$ dbus-send --system --dest=org.freedesktop.Avahi --print-reply \
    / org.freedesktop.Avahi.Server.ServiceBrowserNew \
    int32:-1 int32:-1 string:'_http._tcp' string:'local' uint32:0

method return sender=:1.345 -> 
         dest=:1.354
         reply_serial=2
    object path "/Client5/ServiceBrowser1"

$ dbus-monitor --system \
    "type='signal',interface='org.freedesktop.Avahi.ServiceBrowser'"

据我所知,这应该响应新的/删除的http服务实例,但它不响应。

为什么?

更新:

使用python和APIs执行与上述shell命令相当的命令,就像预期的那样。但是,它们不能连接到我用dbus-send构建的dbus-send,我也不能使用dbus-monitor来听他们构建的ServiceBrowser。

在这一点上,我最好的猜测是:

  1. 一旦连接被关闭(通过终止dbus-send命令),我创建的ServiceBrowser就会被销毁。但是,这并不能解释为什么dbus-monitor无法连接到与我的python脚本处于主动通信状态的ServiceBrowser。
  2. 来自ServiceBrowser的信号只发送到实例化它们的连接。
EN

回答 1

Stack Overflow用户

发布于 2022-05-11 17:04:04

我相信问题是由巴士公司的政策引起的。尝试像这样在/etc/dbus-1/system.d/avahi-dbus.conf中更改avahi dbus策略(记得重新启动avahi守护进程):

代码语言:javascript
复制
<busconfig>

  <policy context="default">
    <!-- All messages may be received by default -->
    <allow receive_requested_reply="false" receive_type="method_call" eavesdrop="true"/>
    <allow receive_requested_reply="false" receive_type="method_return" eavesdrop="true"/>
    <allow receive_requested_reply="false" receive_type="error" eavesdrop="true"/>
    <allow receive_requested_reply="false" receive_type="signal" eavesdrop="true"/>
    <allow eavesdrop="true"/>
  </policy>
  <policy user="root">
      <allow send_destination="*" eavesdrop="true"/>
      <allow receive_sender="*" eavesdrop="true"/>
  </policy>
</busconfig>

并使用root权限运行dbus-监视器:

代码语言:javascript
复制
sudo dbus-monitor --system \
    "type='signal',interface='org.freedesktop.Avahi.ServiceBrowser'"

参考资料:http://blog.nutsfactory.net/2011/03/08/test-and-debug-dbus/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21743696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档