尝试在 iMobileDevice 中查找设备的 STORAGE SIZE 时,lockdownd_get_value() 的 KEY 是什么?
What's the KEY for lockdownd_get_value(), when trying to find STORAGE SIZE of device in iMobileDevice?
我正在尝试使用 iMobileDevice
从我的 iPhone 中获取尽可能多的信息,但我无法在 libimobiledevice
[=21] 中找到要搜索的支持键列表=] 或其他地方。我知道像 here 这样的地方存在并且很有帮助,但在使用 lockdownd_get_value(LockdownClientHandle ld, string domain, string KEY, out PListHandle value)
时并不完全支持它们。这就是我的使用方式。
ReadOnlyCollection<string> udids;
int count = 0;
var idevice = LibiMobileDevice.Instance.iDevice;
var lockdown = LibiMobileDevice.Instance.Lockdown;
var ret = idevice.idevice_get_device_list(out udids, ref count);
if (ret == iDeviceError.NoDevice)
{
// Not actually an error in our case
return;
}
ret.ThrowOnError();
// Get the device name
foreach (var udid in udids)
{
string t1;
PlistHandle tested1;
//Find serial number in plist
lockdown.lockdownd_get_value(lockdownHandle, null, "SerialNumber", out
tested1);
//Get string values from plist
tested1.Api.Plist.plist_get_string_val(tested1, out t1);
Console.WriteLine(t1);
}
另外,是否有支持所有按键的参考列表?
您可以使用 ideviceinfo 命令行实用程序探索锁定所公开的密钥。 ideviceinfo --help
列出已知域,其中包括 com.apple.disk_usage
并且听起来很有趣。通常,指定域但省略键会得到该域中所有键及其值的列表:
让我们看看是什么让我们:
> ideviceinfo -q com.apple.disk_usage
AmountDataAvailable: 24795447296
AmountDataReserved: 209715200
AmountRestoreAvailable: 30147182592
CalculateDiskUsage: OkilyDokily
NANDInfo: AQAA...
TotalDataAvailable: 25086046208
TotalDataCapacity: 26836963328
TotalDiskCapacity: 32000000000
TotalSystemAvailable: 0
TotalSystemCapacity: 5142020096
在您的情况下,com.apple.disk_usage
域中的 TotalDiskCapacity
键似乎就是您要查找的内容。您可以使用 lockdown.lockdown_get_value(lockdownHandle, "com.apple.disk_usage", "TotalDiskCapacity", out tests1)
获取 属性 列表句柄,其中应包含请求的值。
我还发现您可以通过 afc 访问 disk_usage 信息:
LockdownServiceDescriptorHandle ldsHandle;
AfcClientHandle afcClient;
idevice.idevice_new(out deviceHandle, udid).ThrowOnError();
lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle,
"Quamotion").ThrowOnError();
lockdown.lockdownd_start_service(lockdownHandle, "com.apple.afc", out ldsHandle);
ldsHandle.Api.Afc.afc_client_new(deviceHandle, ldsHandle, out afcClient);
ldsHandle.Api.Afc.afc_get_device_info_key(afcClient, "FSTotalBytes", out totalSize);
我正在尝试使用 iMobileDevice
从我的 iPhone 中获取尽可能多的信息,但我无法在 libimobiledevice
[=21] 中找到要搜索的支持键列表=] 或其他地方。我知道像 here 这样的地方存在并且很有帮助,但在使用 lockdownd_get_value(LockdownClientHandle ld, string domain, string KEY, out PListHandle value)
时并不完全支持它们。这就是我的使用方式。
ReadOnlyCollection<string> udids;
int count = 0;
var idevice = LibiMobileDevice.Instance.iDevice;
var lockdown = LibiMobileDevice.Instance.Lockdown;
var ret = idevice.idevice_get_device_list(out udids, ref count);
if (ret == iDeviceError.NoDevice)
{
// Not actually an error in our case
return;
}
ret.ThrowOnError();
// Get the device name
foreach (var udid in udids)
{
string t1;
PlistHandle tested1;
//Find serial number in plist
lockdown.lockdownd_get_value(lockdownHandle, null, "SerialNumber", out
tested1);
//Get string values from plist
tested1.Api.Plist.plist_get_string_val(tested1, out t1);
Console.WriteLine(t1);
}
另外,是否有支持所有按键的参考列表?
您可以使用 ideviceinfo 命令行实用程序探索锁定所公开的密钥。 ideviceinfo --help
列出已知域,其中包括 com.apple.disk_usage
并且听起来很有趣。通常,指定域但省略键会得到该域中所有键及其值的列表:
让我们看看是什么让我们:
> ideviceinfo -q com.apple.disk_usage
AmountDataAvailable: 24795447296
AmountDataReserved: 209715200
AmountRestoreAvailable: 30147182592
CalculateDiskUsage: OkilyDokily
NANDInfo: AQAA...
TotalDataAvailable: 25086046208
TotalDataCapacity: 26836963328
TotalDiskCapacity: 32000000000
TotalSystemAvailable: 0
TotalSystemCapacity: 5142020096
在您的情况下,com.apple.disk_usage
域中的 TotalDiskCapacity
键似乎就是您要查找的内容。您可以使用 lockdown.lockdown_get_value(lockdownHandle, "com.apple.disk_usage", "TotalDiskCapacity", out tests1)
获取 属性 列表句柄,其中应包含请求的值。
我还发现您可以通过 afc 访问 disk_usage 信息:
LockdownServiceDescriptorHandle ldsHandle;
AfcClientHandle afcClient;
idevice.idevice_new(out deviceHandle, udid).ThrowOnError();
lockdown.lockdownd_client_new_with_handshake(deviceHandle, out lockdownHandle,
"Quamotion").ThrowOnError();
lockdown.lockdownd_start_service(lockdownHandle, "com.apple.afc", out ldsHandle);
ldsHandle.Api.Afc.afc_client_new(deviceHandle, ldsHandle, out afcClient);
ldsHandle.Api.Afc.afc_get_device_info_key(afcClient, "FSTotalBytes", out totalSize);