[英]How do I get the Mac OS X Firewall to permanently allow my iOS app?
我正在編寫一個iOS應用程序,其中包括一個telnet服務器。 當然,它一開始就會開始監聽連接。
當我在模擬器中運行應用程序時,Mac OS X(我碰巧在10.7.3上)提示我允許或拒絕我的應用程序接受傳入的網絡連接。 這是Mac OS X用於所有未簽名的聯網應用程序的標准防火牆消息。
我厭倦了每天點擊“允許”五十次或更多次,所以我尋求一種方法將我的應用程序永久添加到防火牆允許的應用程序列表中。
我嘗試了以下內容。
在最后一步中,有一個重要的決定。 您可以在該包上添加.app應用程序包或Show Contents,並在其中添加“Unix可執行文件”。 我嘗試了兩種方法。
有趣的是,防火牆實際上會暫時停止向您發出關於應用程序的警告。 然而,在幾次運行之后 - 我不清楚哪個事件實際導致了這種變化,但是對於我來說,它發生在半小時左右,一般來說 - 防火牆再次開始警告應用程序。
如何將防火牆設置為永久允許我的iOS應用程序?
當然,我可以通過禁用Mac OS X防火牆來繞過這整個問題。 我也可以通過砍掉它來避免再次在我的腳下划傷。 這些行動方案都沒有向我推薦。
你會建議什么?
所以我們要禁止以下對話框
您是否希望應用程序“NNN.app”接受傳入的網絡連接?
它出現在每次激活Xcode iOS模擬器時 。 我相信現在有一個解決方案。 基於我在這個博客上的答案。
只需在終端窗口中運行以下命令:
#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
對我來說它有效。 請注意模擬器地址是根據Xcode 8。
在嘗試了一段時間之后,我發現手動將可執行文件本身添加到防火牆“允許”列表中可以得到所需的結果。 您不在.app的Contents文件夾中添加.app,而是添加“Unix”可執行文件。 我相信我之前嘗試過這個文件沒有成功,但目前它正在運行。
我認為最好的解決方案可能是編寫將應用程序保存到防火牆的過程。
如果我沒記錯的話,最新的OSX防火牆實際上很聰明地識別允許的二進制文件的應用程序和指紋。 這可以防止僅僅命名惡意軟件“system32.exe”&c來逃避防火牆的驚人有效策略。 如果是這種情況,您的應用程序將被(正確)阻止,因為它不是可以使用的相同二進制文件,並且它沒有任何解決方法。
因此,嘗試編寫防火牆腳本,允許進程並將其合並到構建過程中。
手動將可執行文件添加到防火牆的允許列表中我從未幸運。 這是使用自動鼠標點擊的解決方案:
/usr/local/bin
。 Allow
按鈕的屏幕坐標使用⌘⇧4。 (在我的例子中,這些是x:750,y:600。) 使用此內容創建腳本( w:
是以ms為單位的等待時間):
/usr/local/bin/cliclick c:750,600 w:1500 m:+0,+0 c:.
(如果不將“移動”到同一位置( m:+0,+0
部分)並再次點擊c:.
的相同位置,我無法使CLIclick
工作。
Preferences / Behaviors
並添加上面的腳本。 我不知道這是不是正確的方式,但對我而言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.