通过dbus-send访问Avahi

时间:2014-02-13 01:53:35

标签: dbus avahi

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

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

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

$ 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"

但是,我无法浏览此类服务。

$ 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和c API执行上述shell命令的等效命令 按预期工作。但是,它们无法连接到我的ServiceBrowser 使用dbus-send构建,我无法使用dbus-monitor来倾听 他们构建的ServiceBrowser。

此时,我最好的猜测是:

  1. 关闭连接后(通过dbus-send命令终止), 我创建的ServiceBrowser被销毁了。然而,这并不能解释原因 dbus-monitor无法连接到处于活动状态的ServiceBrowser 与我的python脚本通信。
  2. 来自ServiceBrowser的信号仅发送到连接 实例化它们。

0 个答案:

没有答案