On Mon, Nov 09, 2020 at 12:41:21AM +0100, Flavio Collocola via networkmanager-list wrote:
Hi all, I'm trying to port my Windows program WiFi Password Recovery to Linux. WiFi Password Recovery is a simple tool which scans all wireless networks stored on the device and then returns their info (such as SSID, Auth algorithm, *password...*). To keep portability I'm developing it in C++ using wxWidgets library. In particular on Linux I'm trying to use libnm to interface the program with NetworkManager. Before starting the port I decided to write a small C console program to learn libnm API and NetworkManager basis. I'm trying to get the passwords of all wireless networks saved on Ubuntu using libnm but when i call the function *nm_setting_wireless_security_get_psk *it returns null. It doesn't work with debug dump functions of libnm too. I think I should do something with NMSecretAgentOld but I don't understand what exactly and how. I also did not find any example on the Internet. I slightly modified a C example about using libnm available on internet and this is my current test code:
Hi, the remote connection doesn't contain any secrets. You should use nm_remote_connection_get_secrets() or nm_remote_connection_get_secrets_async() [1] to get them. The returned GVariant is a dictionary where each key indicates the setting name and the value is another dictionary mapping property names to the secret value; for example: {'802-11-wireless-security': {'psk': <'my-password'>}} Note that retrieving secrets for a connection requires Polkit permissions. If the connection has an owner (connection.permissions property), the owner needs the "settings.modify.own" permission to get secrets. Otherwise, the caller needs the "settings.modify.system" permission. You can check permissions for the current user with command: "nmcli general permissions". [1] https://developer.gnome.org/libnm/stable/NMRemoteConnection.html#nm-remote-connection-get-secrets Beniamino
Attachment:
signature.asc
Description: PGP signature