artem90
@artem90
TeamLead, Developer

Как сканировать wifi сети на ubuntu (c++)?

Добрый день!

Решил на досуге изучать c/c++. Hello World уже написан, и хочется задачку поинтереснее.
К примеру сейчас хочу набросать программку, которая будет сканировать и выводить доступные wi-fi сети.

Подскажите в какую сторону искать?

На данный момент нашел библиотеку Wireless Tools и пример ее использования
но не удалось ее скомпилировать:

main.cpp:12: undefined reference to `iw_sockets_open'


#include <iostream>
#include "libs/wireless_tools.29/iwlib.h"

int main() {
    std::cout << "Hello, World!" << std::endl;
    wireless_scan_head head;
    wireless_scan *result;
    iwrange range;
    int sock;

    /* Open socket to kernel */
    sock = iw_sockets_open();

    /* Get some metadata to use for scanning */
    if (iw_get_range_info(sock, "wlan0", &range) < 0) {
        printf("Error during iw_get_range_info. Aborting.\n");
        exit(2);
    }

    /* Perform the scan */
    if (iw_scan(sock, (char *) "wlan0", range.we_version_compiled, &head) < 0) {
        printf("Error during iw_scan. Aborting.\n");
        exit(2);
    }

    /* Traverse the results */
    result = head.result;
    while (NULL != result) {
        printf("%s\n", result->b.essid);
        result = result->next;
    }

    exit(0);

}


Прошу толкните меня в нужном направлении))
  • Вопрос задан
  • 2530 просмотров
Решения вопроса 1
avsej
@avsej
Программист в Couchbase
Пример рабочий, ты явно забыл указать эту библиотеку линковщику. Твой пример работает с небольшой модификацией (системный #include <iwlib.h> вместо твоего, ну и имя интерфейса другое).
g++ -liw test.cc
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы