web-dev-qa-db-fra.com

Comment obtenir le pare-feu Mac OS X pour autoriser définitivement mon application iOS?

J'écris une application iOS qui agit, entre autres choses, un serveur Telnet. Naturellement, il commence à écouter les connexions dès qu'il commence.

Lorsque j'exécute l'application dans le simulateur, Mac OS X (je suis sur 10.7.3) m'inquiète d'autoriser ou de refuser mon application d'accepter des connexions réseau entrantes. Il s'agit du message de pare-feu standard que Mac OS X utilise pour toutes les applications non signées et en réseau.

Je grandis fatigué de cliquer sur cinquante fois ou plus par jour, et je recherche donc un moyen d'ajouter de manière permanente mon application à la liste des applications autorisées du pare-feu.

J'ai essayé ce qui suit.

  1. Moniteur d'activité ouvert pendant que mon application est en cours d'exécution.
  2. Sélectionnez mon application. Cliquez sur "Inspecter".
  3. Accédez à l'onglet Ouvrir des fichiers et des ports. L'une des premières lignes est le chemin précis de mon application. Copier et coller ce chemin.
  4. Ouvrez le pare-feu ... Paramètres avancés.
  5. Cliquez sur le bouton + (Ajouter).
  6. Naviguez jusqu'au chemin de l'application et sélectionnez-la, en ajoutant ainsi à la liste des applications pour lesquelles des connexions entrantes sont autorisées.

Au cours de la dernière étape, il y a une décision importante. Vous pouvez ajouter le package d'applications .app ou afficher le contenu de ce package et ajouter le "exécutable UNIX" dans. J'ai essayé les deux approches.

Fait intéressant, le pare-feu arrêtera en fait de vous avertir à propos de l'application - pendant un moment. après quelques courses, cependant, ce n'est pas clair pour moi quoi L'événement provoque réellement ce changement, mais cela se produit dans une demi-heure ou donc pour moi, en général, le pare-feu commence à avertir à nouveau sur l'application.

Comment définir le pare-feu pour autoriser définitivement mon application iOS?

Naturellement, je pourrais contourner tout ce problème en désactivant le pare-feu Mac OS X. Je pourrais aussi éviter de nouveau en train de retrouver un éclaté dans le pied en coupant-le. Ni l'un ni l'autre des actions ne se recommandent de me recommander.

Que suggérerais-tu?

34
OldPeculier

Nous voulons donc supprimer la boîte de dialogue suivante

Voulez-vous que l'application "nnn.app" accepte des connexions réseau entrantes?

qui apparaissent sur chaque activation du simulateur IOS XCode . Je crois qu'il y a maintenant une solution pour cela. Baser ma réponse sur Ceci Blog.

Exécutez simplement les commandes suivantes dans une fenêtre 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

Pour moi ça a fonctionné. Veuillez noter que l'adresse du simulateur est en fonction de Xcode 8.

26
ishahak

Je pense que la meilleure solution pourrait être de scripter le processus d'accord de votre application au pare-feu.

Si je vous souviens bien, le dernier pare-feu OSX est vraiment intelligent sur l'identification des applications et des empreintes digitales des fichiers binaires autorisés. Cela empêche la tactique étonnamment efficace de simplement nommer votre logiciel malveillant "system32.exe" et c pour échapper au pare-feu. Si tel est le cas, votre application sera (correctement) bloquée pour ne pas être le même binaire qui était accepté, et il n'y a pas vraiment de route.

Essayez donc de scripter du processus d'autorisation de pare-feu et d'incorporer cela dans le processus de construction.

3
blahdiblah

Je n'ai jamais eu de chance avec l'ajout manuellement l'exécutable à la liste autorisée du pare-feu. Voici une solution à l'aide d'un clic automatisé de souris :

  1. Télécharger cliclick . (Merci Carsten.)
  2. Mettez-le dans un endroit approprié, dites /usr/local/bin.
  3. Obtenir les coordonnées d'écran Allow utilise 4. (Dans mon exemple, ceux-ci sont X: 750, Y: 600.)
  4. Créez un script avec ce contenu (le w: est le temps d'attente dans la SP):

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

    (Je n'ai pas pu obtenir CLIclick pour travailler sans "bouger" vers le même endroit (le m:+0,+0 partie) et en cliquant à nouveau au même endroit avec c:..)

  5. Ouvrez xcode Preferences / Behaviors et ajouter le script ci-dessus. enter image description here
  6. Prendre plaisir!
1
Blaz