GNOME NetworkManager本地任意文件访问漏洞(3)

self.aps[path] = {
                'Ssid' : ssid_raw,
                '_ssid_readable' : ssid,
                'HwAddress' : addr,
                'WpaFlags' : wpaflags,
                'RsnFlags' : rsnflags,
                }
            self.ap_by_addr[addr] = path
            if not ssid in self.ap_by_ssid:
            self.ap_by_ssid[ssid] = set({})
            self.ap_by_ssid[ssid].add(path)

for ssid in sorted(self.ap_by_ssid.keys()):
            print ssid
            for path in self.ap_by_ssid[ssid]:
            ap = self.aps[path]
            print ' ', ap['HwAddress']
            if ap['WpaFlags']:
                print "    WPA: ", self.secflags2str(ap['WpaFlags'])
            if ap['RsnFlags']:
                print "    RSN: ", self.secflags2str(ap['RsnFlags'])
    else:
        if not device in self.devices:
        debug(0, "got remove signal for unknown device %s removed"%device)
        else:
        name = self.devices[device]
        del self.devices[device]
        del self.devices_by_name[name]
        debug(0,"device %s removed"%name)

def _connect_nm(self):
    try:
        self.proxy = self.bus.get_object("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager")
        self.manager = manager = dbus.Interface(self.proxy, "org.freedesktop.NetworkManager")
        running = True
    except dbus.DBusException, e:
        running = False
        print e

return running

def check_status(self, force_off=False):
    if (force_off):
        running = False
    else:
        running = self.running
        if (not self.manager):
        running = self._connect_nm()

if (running):
        if (not self.running):
        devices = self.manager.GetDevices()
        for d in devices:
            self.device_add_rm(d, True)

if (not running):
        self.proxy = self.manager = None

self.running = running
    debug(1,"NM Running: %s"%self.running)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwdydf.html