Доступ и Используя MobileWiFi.framework

Для персонального моего проекта я пытаюсь получить мощность сигнала iPhone WiFi. Я полностью осведомлен что это на земле недокументированного совершенства, поэтому не воздержитесь от "Никакого Appstore" ответы.:)

Anywho, я читал на предыдущих Приложениях для Сетевого сканера WiFi (Хромой WiFi), но я боюсь, что большинство (если не все) отражает устаревшую документацию SDK. Хотелось бы надеяться, этот вопрос также предоставит некоторым централизованным / проницательный материал с новым iPhone SDK 3.1.2.

Вот мой код incomplete/not-working:

.h

 void *libHandle;
 void *airportHandle; 
 int (*open)(void *);
 int (*bind)(void *, NSString *);
 int (*close)(void *);
 int (*scan)(void *, NSArray **, void *);

.m

libHandle = dlopen("/System/Library/PrivateFrameworks/MobileWiFi.framework/MobileWiFi",RTLD_LAZY);

open = dlsym(libHandle, "Apple80211Open");
bind = dlsym(libHandle, "Apple80211BindToInterface");
close = dlsym(libHandle, "Apple80211Close");
scan = dlsym(libHandle, "Apple80211Scan");

open(&airportHandle);
bind(airportHandle, @"en0");

NSLog(@"Result %@",libHandle);

При выполнении на устройстве оно произведет мое очень любимое...

Тип исключительной ситуации: EXC_BAD_ACCESS (SIGSEGV)

Я думаю динамический вызов загрузки, ничего не загружает. Каталог:/System/Library/PrivateFrameworks/только перечисляет файл Info.plist без двоичных файлов или псевдонимов.

Вероятно, делая что-то ужасно неправильно (неправильный каталог?)... ценят любую справку!

Кроме того, как развитие. Для извлечения информации о WiFi это могло бы быть сделано:

GetInfoCopy = dlsym(libHandle, "Apple80211GetInfoCopy");

И мои вопросы 1) Кто-либо, имел удачу с этим? 2) Как Вы получаете дамп заголовка как, я был бы с помощью с дампом класса на библиотеках Objective-C (потому что MobileWifi находится в C)?

8
задан Rev316 7 January 2010 в 03:54
поделиться

3 ответа

Для любого, кто наступает на этот вопрос, вот моя библиотека для доступа к сетянам 802.11. Хотя Apple утверждает, что запрещает любые приложения, которые используют частные рамки, есть несколько замкнутых приложений Wi-Fi на AppStore. Используйте на свой риск.

Эта библиотека работает с iPhone SDK 3.1.2.

Использование:

SOLStumbler *networksManager = [[SOLStumbler alloc] init];
[networksManager scanNetworks];

Результат:

Networks Nsdictionary информационного Nsdictionary.

Используйте CFShow для изучения возвращенного указателя, содержащей информацию. Или вызовите метод описания для вывода образца.

8
ответ дан 5 December 2019 в 08:52
поделиться

Не уверен, что это будет проблемой, но open/close/bind - это имена, которые уже используются (стандартная библиотека C).

Двоичного файла не существует, так как он хранится в dyld shared_cache (dlopen получится, потому что технически библиотека 'загружена'); однако, я заметил, что вы не проверяете, действительны ли какие-либо из libHandle, open, close, bind или scan, когда вы получаете их из dl* функций.

.
2
ответ дан 5 December 2019 в 08:52
поделиться

Эти функции Apple80211xxx не существуют в MobileWiFi.framework (вы можете проверить с помощью утилиты `nm' в бинарных файлах SDK).

(Также невозможно выгрузить заголовок C из двоичных файлов, так как при компиляции удаляется вся информация о типах. Вам нужно перепроектировать её самостоятельно или подождать, пока кто-нибудь сделает это.)

.
4
ответ дан 5 December 2019 в 08:52
поделиться
Другие вопросы по тегам:

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