当前位置:   article > 正文

IOS系统mobileconfig的作用,mobileconfig文件如何使用,苹果超级签实现

mobileconfig

.mobileconfig是苹果系统配置描述文件,目前常用于苹果超级签获取设备UDID。

官方介绍:

配置描述⽂件是XML ⽂件,包含以下内容:设备安全策略、VPN 配置信息、Wi-Fi 设置、APN 设置、Exchange帐户设置、邮件设置以及允许 iPhone 和 iPod touch 与企业系统配合使⽤的证书。

“iPhone配置实⽤⼯具”可让您轻松地创建、维护和安装配置描述⽂件及对配置描述⽂件进⾏加密,跟踪和安装预置描述⽂件与授权的应⽤程序,以及采集包括控制台⽇志在内的设备信息。(这个⼯具可以从官⽹上进⾏下载)

⽬前所知的,安装这个配置⽂件除了上述的使⽤“iphone配置实⽤⼯具”之外,还可以通过邮件附件或通过使⽤safari浏览包含有下载的⽹页的⽅式激活安装(install profile窗⼝)。

1、代码示例

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple/DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>PayloadContent</key>
  6. <array>
  7. <dict>
  8. <key>PayloadDisplayName</key>
  9. <string>LDAP Settings</string>
  10. <key>PayloadType</key>
  11. <string>com.apple.ldap.account</string>
  12. <key>PayloadVersion</key>
  13. <integer>1</integer>
  14. <key>PayloadUUID</key>
  15. <string>6df7a612-ce0a-4b4b-bce2-7b844e3c9df0</string>
  16. <key>PayloadIdentifier</key>
  17. <string>com.example.iPhone.settings.ldap</string>
  18. <key>LDAPAccountDescription</key>
  19. <string>Company Contacts</string>
  20. <key>LDAPAccountHostName</key>
  21. <string>ldap.example.com</string>
  22. <key>LDAPAccountUseSSL</key>
  23. <false />
  24. <key>LDAPAccountUserName</key>
  25. <string>uid=username,dc=example,dc=com</string>
  26. <key>LDAPSearchSettings</key>
  27. <array>
  28. <dict>
  29. <key>LDAPSearchSettingDescription</key>
  30. <string>Company Contacts</string>
  31. <key>LDAPSearchSettingSearchBase</key>
  32. <string></string>
  33. <key>LDAPSearchSettingScope</key>
  34. <string>LDAPSearchSettingScopeSubtree</string>
  35. </dict>
  36. <dict>
  37. <key>LDAPSearchSettingDescription</key>
  38. <string>Sales Departments</string>
  39. <key>LDAPSearchSettingSearchBase</key>
  40. <string>ou=Sales,dc=example,dc=com</string>
  41. <key>LDAPSearchSettingScope</key>
  42. <string>LDAPSearchSettingScopeSubtree</string>
  43. </dict>
  44. </array>
  45. </dict>
  46. <dict>
  47. <key>PayloadDisplayName</key>
  48. <string>Email Settings</string>
  49. <key>PayloadType</key>
  50. <string>com.apple.mail.managed</string>
  51. <key>PayloadVersion</key>
  52. <integer>1</integer>
  53. <key>PayloadUUID</key>
  54. <string>362e5c11-a332-4dfb-b18b-f6f0aac032fd</string>
  55. <key>PayloadIdentifier</key>
  56. <string>com.example.iPhone.settings.email</string>
  57. <key>EmailAccountDescription</key>
  58. <string>Company E-mail</string>
  59. <key>EmailAccountName</key>
  60. <string>Full Name</string>
  61. <key>EmailAccountType</key>
  62. <string>EmailTypeIMAP</string>
  63. <key>EmailAddress</key>
  64. <string>username@example.com</string>
  65. <key>IncomingMailServerAuthentication</key>
  66. <string>EmailAuthPassword</string>
  67. <key>IncomingMailServerHostName</key>
  68. <string>imap.example.com</string>
  69. <key>IncomingMailServerUseSSL</key>
  70. <true />
  71. <key>IncomingMailServerUsername</key>
  72. <string>username@es2eng.com</string>
  73. <key>OutgoingPasswordSameAsIncomingPassword</key>
  74. <true />
  75. <key>OutgoingMailServerAuthentication</key>
  76. <string>EmailAuthPassword</string>
  77. <key>OutgoingMailServerHostName</key>
  78. <string>smtp.example.com</string>
  79. <key>OutgoingMailServerUseSSL</key>
  80. <true />
  81. <key>OutgoingMailServerUsername</key>
  82. <string>username@example.com</string>
  83. </dict>
  84. </array>
  85. <key>PayloadOrganization</key>
  86. <string>Your Organization's Name</string>
  87. <key>PayloadDisplayName</key>
  88. <string>Organization iPhone Settings</string>
  89. <key>PayloadVersion</key>
  90. <integer>1</integer>
  91. <key>PayloadUUID</key>
  92. <string>954e6e8b-5489-484c-9b1d-0c9b7bf18e32</string>
  93. <key>PayloadIdentifier</key>
  94. <string>com.example.iPhone.settings</string>
  95. <key>PayloadDescription</key>
  96. <string>Sets up Organization's LDAP directories and email on the iPhone</string>
  97. <key>PayloadType</key>
  98. <string>Configuration</string>
  99. </dict>
  100. </plist>

2、超级签获取UDID mobileconfig文件示例

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3. <plist version="1.0">
  4. <dict>
  5. <key>PayloadContent</key>
  6. <dict>
  7. <key>URL</key>
  8. <string>http://127.0.0.1/receive.php</string> <!--接收数据的接⼝地址-->
  9. <key>DeviceAttributes</key>
  10. <array>
  11. <string>UDID</string>
  12. <string>IMEI</string>
  13. <string>ICCID</string>
  14. <string>VERSION</string>
  15. <string>PRODUCT</string>
  16. </array>
  17. </dict>
  18. <key>PayloadOrganization</key>
  19. <string>com.sssss.orgName</string> <!--组织名称-->
  20. <key>PayloadDisplayName</key>
  21. <string>获取设备UDID</string> <!--安装时显⽰的标题-->
  22. <key>PayloadVersion</key>
  23. <integer>1</integer>
  24. <key>PayloadUUID</key>
  25. <string>3C4DC7D2-E475-3375-489C-0BB8D737A653</string> <!--随机填写的字符串-->
  26. <key>PayloadIdentifier</key>
  27. <string>dev.skyfox.profile-service</string>
  28. <key>PayloadDescription</key>
  29. <string>获取设备UDID</string> <!--描述-->
  30. <key>PayloadType</key>
  31. <string>Profile Service</string>
  32. </dict>
  33. </plist>

3、PHP服务端接收receive.php

  1. $data = file_get_contents('php://input');
  2. $plistBegin = '<?xml version="1.0"';
  3. $plistEnd = '</plist>';
  4. $data2 = substr($data, strpos($data, $plistBegin), strpos($data, $plistEnd) - strpos($data, $plistBegin));
  5. $xml = xml_parser_create();
  6. $UDID = "";
  7. $CHALLENGE = "";
  8. $DEVICE_NAME = "";
  9. $DEVICE_PRODUCT = "";
  10. $DEVICE_VERSION = "";
  11. $iterator = 0;
  12. $arrayCleaned = array();
  13. $data = "";
  14. xml_parse_into_struct($xml, $data2, $vs);
  15. xml_parser_free($xml);
  16. foreach ($vs as $v) {
  17. if ($v['level'] == 3 && $v['type'] == 'complete') {
  18. $arrayCleaned[] = $v;
  19. }
  20. }
  21. foreach ($arrayCleaned as $elem) {
  22. switch ($elem['value']) {
  23. case "CHALLENGE":
  24. $CHALLENGE = $arrayCleaned[$iterator + 1]['value'];
  25. break;
  26. case "DEVICE_NAME":
  27. $DEVICE_NAME = $arrayCleaned[$iterator + 1]['value'];
  28. break;
  29. case "PRODUCT":
  30. $DEVICE_PRODUCT = $arrayCleaned[$iterator + 1]['value'];
  31. break;
  32. case "UDID":
  33. $UDID = $arrayCleaned[$iterator + 1]['value'];
  34. break;
  35. case "VERSION":
  36. $DEVICE_VERSION = $arrayCleaned[$iterator + 1]['value'];
  37. break;
  38. }
  39. $iterator++;
  40. }
  41. header('HTTP/1.1 301 Moved Permanently'); //这⾥⼀定要301跳转,否则设备安装会提⽰"⽆效的描述⽂件"
  42. $url = "127.0.0.1/udid.php?udid=".$UDID."&version='.$DEVICE_VERSION.'&device_name='.$DEVICE_PRODUCT;
  43. header("Location: ".$url);

4、PHP服务端信息处理 udid.php

  1. $UDID = $_GET['UDID'];
  2. $version = $_GET['version'];
  3. $device_name = $_GET['device_name'];

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/983003
推荐阅读
相关标签
  

闽ICP备14008679号