¿Cómo obtengo el Mac OS X Firewall para permitir permanentemente a mi aplicación iOS?

Estoy escribiendo una aplicación de iOS que actúa como, entre otras cosas, un server de telnet. Naturalmente, comienza a escuchar conexiones tan pronto como comienza.

Cuando ejecuto la aplicación en el simulador, Mac OS X (que sucede en 10.7.3) me pide Permitir o Denegar mi aplicación para aceptar las conexiones de networking entrantes. Este es el post estándar de Firewall que Mac OS X usa para todas las aplicaciones en networking sin firmar.

Me hago cansado de hacer clic en "Permitir" cincount o más veces al día, así que busco una forma de agregar mi aplicación de forma permanente a la list de aplicaciones permitidas del Firewall.

He probado lo siguiente.

  1. Abra Activity Monitor mientras se ejecuta mi aplicación.
  2. Seleccione mi aplicación. Haga clic en "Inspeccionar".
  3. Vaya a la pestaña Abrir files y puertos. Una de las primeras líneas es la ruta precisa a mi aplicación. Copie y pegue esta ruta.
  4. Abra el Firewall … Configuración avanzada.
  5. Haz clic en el button + (agregar).
  6. Navegue a la ruta de la aplicación y selecciónela, agregándola así a la list de aplicaciones para las que se permiten las conexiones entrantes.

En el último paso hay una decisión importante. Puede agregar el package de aplicación .app o Mostrar contenido en ese package y agregar el "ejecutable Unix" dentro. He intentado ambos enfoques.

Curiosamente, Firewall de hecho dejará de avisarle sobre la aplicación, por un time. Sin embargo, después de algunas ejecuciones, no está claro para mí qué evento realmente provoca este cambio, pero sucede dentro de media hora o más para mí, en términos generales, Firewall comienza a advertir nuevamente sobre la aplicación.

¿Cómo configuro Firewall para Permitir permanentemente mi aplicación iOS?

Naturalmente, podría evitar este problema al deshabilitar el firewall de Mac OS X. También podría evitar volver a recibir una astilla en mi pie cortándola. Ninguno de estos cursos de acción se me recomienda.

¿Qué sugieres?

Después de incursionar en esto durante algún time, descubrí que agregar el ejecutable manualmente a la list "Permitir" del Firewall da el resultado deseado. No agrega la .app, sino el ejecutable "Unix" dentro de la carpeta Contenido de la aplicación. Creía haber probado este file antes sin éxito, pero actualmente está funcionando.

Entonces queremos suprimir el siguiente cuadro de dialog

¿Desea que la aplicación "NNN.app" acepte las conexiones de networking entrantes?

que aparecen en cada activación del simulador Xcode iOS . Creo que ahora hay una solución para eso. Basando mi respuesta en este blog.

Simplemente ejecute los siguientes commands en una window de Terminal:

#temporarily shut firewall off: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate off #put Xcode as an exception: /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/MacOS/Xcode #put iOS Simulator as an exception: /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app/Contents/MacOS/Simulator #re-enable firewall: sudo /usr/libexec/ApplicationFirewall/socketfilterfw --setglobalstate on 

Para mi funcionó Tenga en count que la dirección del simulador está de acuerdo con Xcode 8.

Creo que la mejor solución podría ser guiar el process de aprobar tu aplicación en el firewall.

Si recuerdo bien, el último cortafuegos de OSX es realmente inteligente para identificar aplicaciones y huellas dactilares de los binarys permitidos. Esto evita la táctica sorprendentemente efectiva de nombrar su malware "system32.exe" & c para evadir el firewall. Si ese es el caso, su aplicación se bloqueará (correctamente) por no ser el mismo binary que se aceptó, y no hay realmente ninguna forma de evitarlo.

Por lo tanto, intente crear un script que permita el process de firewall e incorpórelo al process de compilation.

Nunca tuve suerte con agregar manualmente el ejecutable a la list permitida del firewall. Aquí hay una solución con un clic automático del mouse :

  1. Descargue CLIclick . (Gracias, Carsten.)
  2. Póngalo en un lugar adecuado, digamos /usr/local/bin .
  3. Obtenga las coorderadas de la pantalla del button Allow usando 4 . (En mi ejemplo, estos son x: 750, y: 600.)
  4. Cree un script con este contenido ( w: es el time de espera en ms):

     /usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:. 

    (No pude hacer que CLIclick funcione sin "moverlo" a la misma location (la parte m:+0,+0 ) y hacer clic nuevamente en el mismo punto con c:. .)

  5. Abra las Preferences / Behaviors Xcode y añada el script anterior. introduzca la descripción de la imagen aquí
  6. ¡Disfrutar!

No sé si es la forma correcta pero para mí funcionó.

  1. Apague el firewall
  2. Conéctese con la aplicación iphone a su mac
  3. Compruebe si todo en la connection funciona
  4. Encienda el firewall