:py:mod:`dissect.target.plugins.apps.vpn.wireguard` =================================================== .. py:module:: dissect.target.plugins.apps.vpn.wireguard Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.target.plugins.apps.vpn.wireguard.WireGuardPlugin dissect.target.plugins.apps.vpn.wireguard.MultiDict Attributes ~~~~~~~~~~ .. autoapisummary:: dissect.target.plugins.apps.vpn.wireguard.WireGuardInterfaceRecord dissect.target.plugins.apps.vpn.wireguard.WireGuardPeerRecord .. py:data:: WireGuardInterfaceRecord .. py:data:: WireGuardPeerRecord .. py:class:: WireGuardPlugin(target) Bases: :py:obj:`dissect.target.plugin.Plugin` WireGuard configuration parser. .. rubric:: References - https://manpages.debian.org/testing/wireguard-tools/wg.8.en.html#CONFIGURATION_FILE_FORMAT - https://github.com/pirate/wireguard-docs .. py:attribute:: __namespace__ :value: 'wireguard' NetworkManager uses a different stanza format "/etc/NetworkManager/system-connections/Wireguard*", TODO: systemd uses a different stanza format "/etc/systemd/network/wg*.netdev", "/etc/systemd/network/*wg*.netdev", TODO: other locations such as $HOME/.config/wireguard TODO: parse native network manager formats from MacOS, Ubuntu and Windows. :type: TODO .. py:attribute:: CONFIG_GLOBS :value: ['/etc/wireguard/*.conf', '/usr/local/etc/wireguard/*.conf',... .. py:attribute:: TUNNEL_NAME_RE .. py:method:: check_compatible() -> None Perform a compatibility check with the target. This function should return ``None`` if the plugin is compatible with the current target (``self.target``). For example, check if a certain file exists. Otherwise it should raise an ``UnsupportedPluginError``. :raises UnsupportedPluginError: If the plugin could not be loaded. .. py:method:: config() -> Iterator[Union[WireGuardInterfaceRecord, WireGuardPeerRecord]] Parses interface config files from wireguard installations. .. py:class:: MultiDict(*args, **kwargs) Bases: :py:obj:`collections.OrderedDict` dict() -> new empty dictionary dict(mapping) -> new dictionary initialized from a mapping object's (key, value) pairs dict(iterable) -> new dictionary initialized as if via: d = {} for k, v in iterable: d[k] = v dict(**kwargs) -> new dictionary initialized with the name=value pairs in the keyword argument list. For example: dict(one=1, two=2) .. py:method:: __setitem__(key, val) Set self[key] to value.