【问题标题】:Can I get SSID and MAC address from C code in Linux?我可以从 Linux 中的 C 代码获取 SSID 和 MAC 地址吗?
【发布时间】:2019-10-30 08:24:38
【问题描述】:

我正在为我的 Majaro Linux 编写一个 C 备份程序。只有当我连接到我的家庭网络时,它才必须在我的家庭本地服务器中的某个时间备份文件。所以我需要获取当前网络的 SSIDMAC 地址 来确定它是否是我的网络。

Linux(Arch)默认命令、C 库函数或文件是否包含这些信息?

我已经尝试了一些 Linux 工具,例如 ifconfig,但对我来说毫无用处。

救命!

【问题讨论】:

  • 也许 libpcap 库有助于在 c 程序中获取有关您的网络的一些信息。
  • 这真的是一个 linux 问题,而不是 C 问题。您想要的是出售该数据的 linux 库。在你的 C 代码中链接到这些库,你很好。这是一个例子:stackoverflow.com/questions/1779715/…
  • This 是一个很好的 wifi 扫描器实现,您可能会感兴趣。

标签: c networking ssid


【解决方案1】:

完成

感谢大家的帮助,尤其是Iliya Ilievlibrary。 效果很好。

这正是我一直在寻找的!

我只是将它添加到我的主项目中。

#include "../wifi_scan.h"
#include <stdio.h>  
#include <unistd.h> 

const char *bssid_to_string(const uint8_t bssid[BSSID_LENGTH], char  bssid_string[BSSID_STRING_LENGTH])
    {
        snprintf(bssid_string, BSSID_STRING_LENGTH, "%02x:%02x:%02x:%02x:%02x:%02x",
             bssid[0], bssid[1], bssid[2], bssid[3], bssid[4], bssid[5]);
        printf("%x\n", bssid[5]);
        return bssid_string;
    }

    int main(int argc, char **argv){

        struct wifi_scan *wifi=NULL;
        struct station_info station;
        char mac[BSSID_STRING_LENGTH]; 

        wifi=wifi_scan_init(argv[1]);
        wifi_scan_station(wifi, &station);

        printf("ssid = %s mac = %s \n", station.ssid, bssid_to_string(station.bssid, mac));

        wifi_scan_close(wifi);

    }

【讨论】:

    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 2016-07-27
    • 2010-12-21
    • 1970-01-01
    • 2013-02-27
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多