2012-07-30 24 views
6

Necesito un código obj-c de muestra que escanea y se conecta a wifi. La API privada está bien, no voy a publicar la aplicación en la tienda de aplicaciones. Encontré la aplicación en cydia llamada "WiFiFoFum" que puede escanear y conectar, desafortunadamente no puedo encontrar el código fuente de esa aplicación. ¿Alguien sabe dónde puedo encontrar ese código? GraciasDónde encuentro código iOS Obj-C para escanear y conectarme a wifi (API privada)

+1

cualquier actualización sobre esto para iOS 8? Probé https://github.com/devinshively/wifiAssociate, no funciona en iOS 8. – divyum

+0

No, no lo he probado en iOS 8. – almas

Respuesta

6

encontrado la respuesta aquí: http://code.google.com/p/iphone-wireless/issues/detail?id=20

funciona perfectamente bien en mi iPhone 4 v5.1.1. Puedo escanear y conectarme a redes. Puede descargar el proyecto aquí https://github.com/devinshively/wifiAssociate

Aquí es una cita:

Apple80211Associate sigue trabajando (al menos en 3.1.2). Entre el iPhone OS 2 y 3, el marco ha cambiado de nombre, por lo que debe enlazar las funciones de la siguiente manera:

void *airportHandle; 
int  (*Apple80211Open)(void *); 
int  (*Apple80211BindToInterface)(void *, NSString *); 
int  (*Apple80211Close)(void *); 
int  (*Apple80211Info)(void *, NSDictionary**); 
int  (*Apple80211Associate)(void *, NSDictionary*, void *); 
int  (*Apple80211Scan)(void *, NSArray **, void *); 

libHandle  = dlopen("/System/Library/SystemConfiguration/WiFiManager.bundle/WiFiManager", RTLD_LAZY); 
Apple80211Open       = dlsym(libHandle, "Apple80211Open"); 
Apple80211BindToInterface  = dlsym(libHandle, "Apple80211BindToInterface"); 
Apple80211Scan       = dlsym(libHandle, "Apple80211Scan"); 
Apple80211Close       = dlsym(libHandle, "Apple80211Close"); 
Apple80211Info       = dlsym(libHandle, "Apple80211GetInfoCopy"); 
Apple80211Associate      = dlsym(libHandle, "Apple80211Associate"); 

El cambio más significativo de V2 a V3 es el parámetro SCAN_RSSI_THRESHOLD (utilizado para la función de exploración) . Suele tomar un número positivo, lejos del dB físico debería haber sido
y ahora toma los dB de la señal. Si usted hace uso de ella, se puede establecer a -100: Aquí está cortado con tijeras un código (cereza recogido de mi código, así como no probada es):

void *airportHandle; 

NSArray *keys = [NSArray arrayWithObjects:@"SCAN_RSSI_THRESHOLD", @"SSID_STR", nil]; 
NSArray *objects = [NSArray arrayWithObjects:[NSNumber numberWithInt:-100], ssid, nil]; 

NSDictionary *params = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; 
NSArray *found; 


int openResult = Apple80211Open(&airportHandle); 
NSLog(@"Openning wifi interface %@", (openResult == [email protected]"succeeded":@"failed")); 

int bindResult = Apple80211BindToInterface(airportHandle, @IF_NAME); 

int scanResult = Apple80211Scan(airportHandle, &found, params); 

NSDictionary *network; 

// get the first network found 
network = [found objectAtIndex:0]; 
int associateResult = Apple80211Associate(airportHandle, network,NULL); 

Apple80211Close(airportHandle); 
1

Objective-C está compilado, por lo que no puede obtener el código fuente de los programas como en un lenguaje de scripting. Puede verificar si "WiFiFoFum" es de código abierto y es posible que pueda descargar la fuente del github del autor. De lo contrario se puede ver en los marcos privados en el directorio /System/Library/PrivateFrameworks y volcar los ficheros de cabecera de ellos usando class-dump-z como esto

$ class-dump-z -H <private framework> 

sin los corchetes angulares por supuesto.

edición:

acaba de comprobar, no se ve como es de código abierto.

+0

No soy muy bueno en ingeniería inversa, por lo que incluso si obtengo archivos de encabezado (están disponibles para descargar), simplemente no sé cómo usarlos. Esos métodos toman algunos parámetros (estructuras), y no sé cuáles son. Es por eso que me gustaría tener un ejemplo de código listo para usar en obj-c – almas

+0

Bueno, no se puede ver la implementación de los métodos, se llaman privados (y no documentados) por alguna razón. Los nombres y parámetros suelen ser un buen indicador de lo que hace la función. Busque cualquier estructura de la que no esté seguro y, si realmente lo necesita, puede usar el sustrato móvil para escribir un ajuste para enganchar estos métodos y encontrar más información sobre lo que se les está transmitiendo y lo que están devolviendo. –

Cuestiones relacionadas