使我的iPhone对iTunes不可见,密码保护连接

时间:2013-02-19 00:42:58

标签: iphone ios itunes jailbreak

我想知道,App Store中是否有任何应用程序可以让我的iPhone对iTunes不可见?这意味着,当我通过USB线将iPhone连接到PC时,iTunes会自动检测到我的iPhone。但是,我想要一个受密码保护的连接,因为当iPhone被盗时,任何人都可以将iPhone连接到iTunes并恢复所有数据。

所以我想保护这个...当我的iPhone连接到iTunes时,它应该要求输入密码。

有没有办法通过使用私有API 或越狱API,或者是现成的应用程序?

1 个答案:

答案 0 :(得分:2)

iTunes使用AFC守护程序通过USB与iPhone通信。很明显要做的是阻止这个守护进程自动启动。您可以使用launchctl执行此操作。

在设备启动时(或在iPhone连接到PC后),您需要执行

launchctl unload /System/Library/LaunchDaemons/com.apple.afcd.plist

当您将设备连接到PC时,iTunes将显示错误信息,表示无法连接到设备。然后您的应用程序可以要求输入密码,当输入正确时,您可以像这样启动AFC守护程序

launchctl load /System/Library/LaunchDaemons/com.apple.afcd.plist
launchctl start com.apple.afcd

此方法的唯一问题是您需要重新启动iTunes,否则即使您启动AFC守护程序后他也无法检测到设备。

<强>更新

找到合适的解决方案。 IOKit.framework API用于打开/关闭USB - http://www.opensource.apple.com/source/IOKitUser/IOKitUser-502/usb_device.subproj/IOUSBDeviceControllerLib.h

以下是代码:

//Declarations
IOReturn IOUSBDeviceControllerCreate(CFAllocatorRef allocator, IOUSBDeviceControllerRef* deviceRef);
IOReturn IOUSBDeviceControllerForceOffBus(IOUSBDeviceControllerRef device, int enable);    

...

//Create controller
IOUSBDeviceControllerRef device = NULL;
IOUSBDeviceControllerCreate(NULL, &device);

//Turn USB off
IOUSBDeviceControllerForceOffBus(device, 1);

//Turn USB on
IOUSBDeviceControllerForceOffBus(device, 0);

//Free controller
CFRelease(device);

当USB关闭时,您的mac / PC将不再看到该设备。这就像你在物理上断开了它。 iTunes,Xcode,文件浏览器 - 所有这些浏览器都不会再看到它了。

当USB打开时,您的mac / PC将检测到该设备。你不需要重新插入它。所有软件都会自动检测到它,就像设备被物理插入一样。

我应警告您,当USB关闭时,如果不使用上述代码,则无法将其重新打开。如果您坚持使用它,只有设备重启才有用。

仅在iOS 7上测试,但看起来这些功能自iOS 4起可用。