Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让Mac OS X防火墙永久允许我的iOS应用?_Ios_Macos_Firewall - Fatal编程技术网

如何让Mac OS X防火墙永久允许我的iOS应用?

如何让Mac OS X防火墙永久允许我的iOS应用?,ios,macos,firewall,Ios,Macos,Firewall,我正在编写一个iOS应用程序,它可以充当telnet服务器。当然,它一开始就开始监听连接 当我在模拟器中运行应用程序时,Mac OS X(我正好在10.7.3上)会提示我允许或拒绝我的应用程序接受传入的网络连接。这是Mac OS X用于所有未签名的网络应用程序的标准防火墙消息 我对每天点击“允许”50次或更多次感到厌倦,因此我寻求一种方法,将我的应用程序永久添加到防火墙的允许应用程序列表中 我试过以下方法 在我的应用程序运行时打开活动监视器 选择我的应用程序。单击“检查” 转到“打开文件和端口”

我正在编写一个iOS应用程序,它可以充当telnet服务器。当然,它一开始就开始监听连接

当我在模拟器中运行应用程序时,Mac OS X(我正好在10.7.3上)会提示我允许或拒绝我的应用程序接受传入的网络连接。这是Mac OS X用于所有未签名的网络应用程序的标准防火墙消息

我对每天点击“允许”50次或更多次感到厌倦,因此我寻求一种方法,将我的应用程序永久添加到防火墙的允许应用程序列表中

我试过以下方法

  • 在我的应用程序运行时打开活动监视器
  • 选择我的应用程序。单击“检查”
  • 转到“打开文件和端口”选项卡。第一行是我的应用程序的精确路径。复制并粘贴此路径
  • 打开防火墙。。。高级设置
  • 单击+(添加)按钮
  • 浏览到应用程序路径并选择它,从而将其添加到允许传入连接的应用程序列表中
  • 最后一步是一个重要的决定。您可以添加.app应用程序包,也可以显示该包上的内容并在其中添加“Unix可执行文件”。两种方法我都试过了

    有趣的是,防火墙实际上会在一段时间内停止向您发出有关该应用程序的警告。在运行了几次之后,我不清楚到底是什么事件导致了这种变化,但对我来说,这种变化发生在半小时左右的时间内,一般来说,防火墙会再次开始对应用程序发出警告

    如何设置防火墙以永久允许我的iOS应用

    当然,我可以通过禁用MacOSX防火墙来绕过整个问题。我也可以通过把脚砍掉来避免再次被刺伤。这两种做法都不适合我


    您有什么建议?

    我认为最好的解决方案可能是编写将应用程序发送到防火墙的脚本

    如果我没记错的话,最新的OSX防火墙实际上很聪明,能够识别应用程序和允许的二进制文件的指纹。这就防止了将恶意软件命名为“system32.exe”&c以逃避防火墙的惊人有效策略。如果是这样的话,你的应用程序将(正确地)被阻止,因为它不是相同的二进制文件


    因此,尝试编写防火墙允许过程的脚本,并将其纳入构建过程。

    在涉猎了一段时间后,我发现手动将可执行文件本身添加到防火墙“允许”列表中可以得到所需的结果。您不添加.app,而是在.app的Contents文件夹中添加“Unix”可执行文件。我相信我以前尝试过这个文件,但没有成功,但目前它正在工作。

    我从未幸运地将可执行文件手动添加到防火墙的允许列表中。下面是一个使用自动鼠标点击的解决方案:

  • 下载。(谢谢你,卡斯滕。)
  • 把它放在合适的位置,比如说
    /usr/local/bin
  • 使用获取
    Allow
    按钮的屏幕坐标⌘⇧4.(在我的示例中,它们是x:750,y:600。)
  • 使用此内容创建脚本(
    w:
    是以毫秒为单位的等待时间):

    (如果不将
    click
    移动到同一位置(
    m:+0,+0
    部分)并使用
    c:>在同一位置再次单击,我将无法让
    click
    工作。

  • 打开Xcode的
    首选项/行为
    并添加上述脚本。
  • 享受吧
    我不知道这是否是正确的方法,但对我来说是有效的

  • 关闭防火墙
  • 将iphone应用程序连接到mac
  • 检查连接是否一切正常
  • 打开防火墙

  • 因此,我们要抑制以下对话框

    是否希望应用程序“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。

    您是否尝试将模拟器添加到允许传入连接的列表中?@lnafziger:添加模拟器不起作用。应用程序已用完进程。@blahdiblah我认为无法编写脚本。防火墙没有提供AppleScript库,shell脚本也没有用处。这是我见过的防火墙规则中最复杂的解决方法。我佩服你的坚韧不拔,但这是对我享受OSX的又一次打击……我想知道你还做了些什么使它起作用,因为这个解决方案对我不起作用:-\Thank@Ishahahak,它有帮助。但奇怪的是,苹果不信任自己的防火墙软件。这对我来说很有效,但手动将可执行文件(我的例子是Electron)添加到安全和防火墙面板却没有。每次登录Mac时,我都必须运行这些命令。因此,我最终使用Lingon X(www.peterborgapps.com/Lingon)在以root身份登录时从shell脚本中执行这些命令,因此从脚本的第一行和最后一行中删除了“sudo”前缀。似乎从Catalina和Big Sur开始,此解决方案不再有效。脚本为脚本中间的两行提供了一个“您指定的文件路径无效”。这看起来与此处提到的问题相同:
    #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