iPhone Wi-Fi Scan Stumbler

Я пытаюсь использовать SOLStumbler отсюда: Доступ и использование MobileWiFi.framework для сканирование сетей Wi-Fi. Я знаю, что это не поддерживается Apple, но предназначено для образовательных целей и экспериментов. Я добавляю следующие файлы в свое приложение, и оно отлично компилируется, но всегда завершается с кодом ошибки. (Как часть файла «.m».) Кто-нибудь знает, как заставить это работать?

SOLStumbler.h:

SOLStumbler.m:

Эта часть SOLStumbler.m всегда выводит однобуквенную ошибку. Обычно e, но иногда u.

libHandle = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY);

    char *error;
    if (libHandle == NULL && (error = dlerror()) != NULL)  {
            NSLog(@"%c",error);
            exit(1);
    }

Мой код ViewController:

#import "SOLStumbler.h"

-(void)viewDidLoad{
    SOLStumbler *networksManager = [[SOLStumbler alloc] init];      
    [networksManager scanNetworks]; 
    NSLog(@"%@", [networksManager description]);
    [networksManager release];  
}

person MrHappyAsthma    schedule 25.07.2012    source источник
comment
Какой код ошибки? Пожалуйста, не говорите нам, что это не работает. Расскажите нам, что не работает, и какие симптомы вы наблюдаете. Вы запускали в отладчике? Что ты видел? Что распечатали ваши NSLog отчеты?   -  person Nate    schedule 26.07.2012
comment
Я добавил дополнительную информацию об операторе ошибки. Он выводит одну букву как часть кода файла SOLStumbler.m.   -  person MrHappyAsthma    schedule 26.07.2012
comment
это для взломанного телефона?   -  person Nate    schedule 28.07.2012
comment
Я думаю, что ваш код ошибки печати неверен.   -  person Richard J. Ross III    schedule 28.07.2012
comment
@RichardJ.RossIII, он взял этот код прямо из источника SOLStumbler. В любом случае, вы даже не доберетесь до этого кода, если не libHandle == NULL, что было проблемой, вызванной изменением пути фреймворка.   -  person Nate    schedule 28.07.2012


Ответы (1)


Код SOLStumbler, который вы пытаетесь использовать, довольно старый. Этот материал (например, WiFiManager) находится в частной структуре. Это означает, что Apple может и часто будет изменять его или переходить с версии ОС на версию.

Я предполагаю, что вы сейчас используете iOS 5?

Я вошел в свой телефон с iOS 5, и действительно,

/System/Library/SystemConfiguration/WiFiManager.bundle/

не существует. Вот почему ваш код не работает.

посмотрите эту полезную тему.

Похоже, теперь вы можете найти эквивалентные (?) функции в структуре IPConfiguration. Попробуйте этот код:

libHandle = dlopen("/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration", RTLD_LAZY);

Я запустил его на взломанном телефоне iOS 5.0.1, и он работал (загрузил dylib и нашел несколько функций Apple80211). Из той ветки, на которую я ссылался, похоже, что вам может потребоваться установить это в /Applications на взломанном телефоне, чтобы полноценно работать. Или, возможно, придется возиться с добавлением некоторых прав в изолированное приложение.

person Nate    schedule 28.07.2012
comment
Спасибо тебе за это. Мне просто нужно найти эквивалентную структуру для моей версии ОС! Спасибо! :D - person MrHappyAsthma; 28.07.2012
comment
libHandle = dlopen(/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration, RTLD_LAZY); ‹br› не работает с iphone 5S OS 7.1 - person vualoaithu; 17.04.2014