iphone设备管理器不见了 苹果手机的设备管理不见了怎么弄



文章插图
iphone设备管理器不见了 苹果手机的设备管理不见了怎么弄

文章插图

1. 证书申请
成为一个 MDM Vendor
访问https://developer.apple.com/contact/submit.php , 在这里你可以申请成为一个 MDMVendor;
创建证书申请
打开钥匙串 , 点击“钥匙串访问->证书助理->从证书颁发机构请求证书” , 创建一个 CSR 。将此 CSR 存储至磁盘(vendor.csr) 。记住“Vendor”字段应该是私钥的名字 , 创建CRS 时会同时创建一个私钥 , 这个私钥名字(Vendor)会显示在钥匙串中 。
导出私钥
在钥匙串中选择创建 CSR 时的私钥 , 导出为vendor.p12文件 。导出时会要求你设置私钥密码 。请记住这个密码 。
openssl pkcs12 -in vendor.p12 -nocerts -out vendor.key
会要求你输入3次密码:vendor.p12 的密码、vendor.key 的密码、vendor.key 的密码 。
提交 CSR登录 Portal(https://developer.apple.com/)
进入 Certificates->All,点击 Add Certificate(“+”按钮) , 选择Production 下的“MDM CSR” 。
点 Continue->Continue , 上传第二步中创建的 CSR , 然后点 Generate 。
点击 Download , 将得到一个 mdm.cer 。
重新创建一个CSR
打开钥匙串 , 点击“钥匙串访问->证书助理->从证书颁发机构请求证书” , 创建一个 CSR , 记住密钥对常用名称(MDMCustomer) , 导出 CSR 。文件名: MDMCustomer.csr和MDMCustomer.p12(设置密码)
python mdm_vendor_sign.py –csr MDMCustomer.csr –key ‘vendor.key’ –mdm mdm.cer
(mdm_vendor_sign.py : https://github.com/grinich/mdmvendorsign)
执行结果将生成一个 plist_encoded 文件 。
上传 plist_encoded
用你的 Apple ID 登录https://identity.apple.com/pushcert/  , 点击“Create aCertificate” , 上传 plist_encoded文件 。上传后会产生一个 APNS 证书 , 下载后得到一个 .pem 文件(为方便使用 , 改名push_cert.pem) 。双击 .pem 文件将证书安装到钥匙串中 。打开钥匙串 , 看看到该证书
为“APSP:” , 如下图所示:
右键导出“mdm_push.p12” , 导出时需要设置密码 , p12和密码为推送apns服务器时使用
2. https服务器
mdm服务器必须是一个https服务器 , 首先要有ssl签名证书
cloud.com_bundle.crt
cloud.com.key
双击crt文件加入钥匙串 , 然后再导出root.p12证书 , 设置密码;
3. 制作描述文件
下载安装iPhoneConfigUtility.dmg , iPhone 配置实用工具(http://221.229.167.24/file3.data.weipan.cn/2981255/006aa9846f79793b34b7419affe442e1a8e8fb0d?ip=1437039985,116.231.112.113&ssig=HDdX8Flq3y&Expires=1437041755&KID=sae,l30zoo1wmz&fn=iPhoneConfigUtility.dmg&skiprd=2&se_ip_debug=116.231.112.113&corp=2&from=1221134&wsiphost=local)
描述文件基本信息填写
凭证里面添加https的三个证书
cloud.com_bundle.crt
root.p12(预先填好密码)
MDMCustomer.p12(预先填好密码)
服务器URL和登记URL分别是mdm服务器的两个url(server , checkin)
主题是apns证书中的用户ID
身份选择MDMCustomer.p12
填写完成后导出为mdm.mobileconfig,放到mdm服务器中
4. 描述文件签名
openssl x509 -inform DER -outform PEM -in AppleAAICA.cer -out Intermediate.crt.pemopenssl rsa -in cloud.com.key -out cloud.comnopass.keyopenssl smime -sign -in mdm.mobileconfig -out signedmdm.mobileconfig -signer cloud.com_bundle.crt -inkey cloud.comnopass.key -certfile Intermediate.crt.pem -outform der -nodetach5. MDM服务器
创建两个Servlet分别为checkin和server
5.1. 手机访问mdm.mobileconfig文件url , 会自动弹出安装描述文件窗口 , 点击安装
5.2. checkin收到第一个验证包
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>MessageType</key><string>Authenticate</string><key>Topic</key><string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string><key>UDID</key><string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string></dict></plist>服务可以根据topic和udid验证当前设备是否允许安装描述文件;
返回空plist文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"> <dict> </dict></plist>5.3. checkin收到第二个更新包(更新包会发两次 , 以最后一个为准)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>MessageType</key><string>TokenUpdate</string><key>PushMagic</key><string>2E8EF54B-A3B8-4BB8-ACEC-EFF4FFD043FB</string><key>Token</key><data>u9Qw5N5UUbc+5OD9lN0UvUpGvIMh3TyQQF2eUMwxDUQ=</data><key>Topic</key><string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string><key>UDID</key><string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string><key>UnlockToken</key><data>REFUQQAABORWRVJTAAAABAAAAARUWVBFAAAABAAAAAJVVUlEAAAAEEMrLLiJok0Wnfyu4klmq6dITUNLAAAAKNxRe6wxFKcbmNEw4S7Ct018wzSWe2Ipzxi5IZn5eo7xGTKXTBzMucJXUkFQAAAABAAAAAFTQUxUAAAAFPtkVb3G7PT4x9OZEuNU9wTha149SVRFUgAAAAQAAMNQVVVJRAAAABAfgjk6tnRMYKIXTVZT06UiQ0xBUwAAAAQAAAABV1JBUAAAAAQAAAADS1RZUAAAAAQAAAAAV1BLWQAAACj93rqgfppn1uZxWl7kZcFv1Is6UPI2Yk7D+tHkXGXfUboM8dv+8C/WVVVJRAAAABAtvP11wHFJ9IOtjHme0wYdQ0xBUwAAAAQAAAACV1JBUAAAAAQAAAADS1RZUAAAAAQAAAABV1BLWQAAACgrJcL3j9LbJqi+s6kZnPQH5d+g8rHKbtuhxcx7pAejtsZ7xFuScdYBUEJLWQAAACCbeA00Z3VAojbWpfc52aE8gSIdvIyWToMDCv17tQp7d1VVSUQAAAAQfCzGf7SkTtmoQc/WarqpP0NMQVMAAAAEAAAAA1dSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAoXd+NxjkpOwer4uyQzA6wZdYm4/ctf8SfsspfxGXwqifVis3ImbMoA1VVSUQAAAAQKpmkOKBcSo+4TaqtdnGWcUNMQVMAAAAEAAAABVdSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAo1hDNfm3drLR+KOhVsbkcB5IIqYs4e5a2YeFt1o34SXGU1Ywu1mR1nlVVSUQAAAAQEOIKsC4kQ8+OuQR92Ps1fkNMQVMAAAAEAAAABldSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAoBjaVvl86lvOprH6/Vr+FQPOYsXHD9eMigny+BE+gHmMc/yR0h+czPVVVSUQAAAAQS7txzVVrTSCA1aHzgXo280NMQVMAAAAEAAAAB1dSQVAAAAAEAAAAA0tUWVAAAAAEAAAAAFdQS1kAAAAoVSKYdMuUE2sFP5s5LSJCmfwMXp+i9T1C0CPgVd9se1eji+XpIjmKWFVVSUQAAAAQoeU1R4wfSTGi6RRUaDT7t0NMQVMAAAAEAAAACFdSQVAAAAAEAAAAAUtUWVAAAAAEAAAAAFdQS1kAAAAgpKQZgWZJLfcfxkE8aWSnrodd9Uev5rw6s5GM8OSF7adVVUlEAAAAEMb92KQdw0p6m5DnIzsgogpDTEFTAAAABAAAAAlXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKKd5dM6Gh+yM1PIiu6cOWb3VQ2QQydbRpgAKbdbewZKPgX1TFPy5cxFVVUlEAAAAEDyP8gnJ60Suo1nQPlRu/V9DTEFTAAAABAAAAApXUkFQAAAABAAAAANLVFlQAAAABAAAAABXUEtZAAAAKMK/AHmOcWUVYAurqv+RTdV4Kub6HfqLH/VajJ/oHIKVZbtfJMYiKR5VVUlEAAAAEIR161V3Sksoic+XGHgURLhDTEFTAAAABAAAAAtXUkFQAAAABAAAAAFLVFlQAAAABAAAAABXUEtZAAAAIKvGDlUGGqFGRReQc33eb7OvhR5l6aCqi3wUIxnmaJSlU0lHTgAAABRZRuDuoEDKc/+1HogT1oZSezxH9w==</data></dict></plist>获取如下信息需要保存
PushMagic:推送时使用每次安装描述文件都会变化
Token:推送时使用标示推送到得设备重新安装描述文件不会变化
Topic:描述文件唯一标示
UDID:设备唯一标示
UnlockToken:在清除密码时需要额外提供的安全信息
5.4. 推送命令
try {ApnsService service = APNS.newService().withCert("mdm_push.p12","123456")//.withSandboxDestination()// 调试模式.withProductionDestination() // 产品模式(调试和产品模式只能使用一种).build();String mdmPayload = APNS.newPayload().customField("mdm", PushMagic).build();String Token = parseToken(Token);service.push(Token, mdmPayload);System.out.println("推送锁屏信息已发送!");} catch (Exception e) {System.out.println("出错了:"+e.getMessage());pushState = 0;}5.5. server获得设备请求命令
发出推送命令后 , apns服务器通知设备去MDM取命令;
收到设备的消息为:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Status</key><string>Idle</string><key>UDID</key><string> [ redacted ] </string></dict></plist>服务器返回命令为
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN""http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>Command</key><dict><key>RequestType</key><string>DeviceLock</string></dict><key>CommandUUID</key><string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string></dict></plist>6. 卸载描述文件
卸载描述文件分两种情况:
6.1. 设备在线
会发送一个checkin消息
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>MessageType</key><string>CheckOut</string><key>Topic</key><string>com.apple.mgmt.External.c07c9eec-07a2-460a-b972-36ee1068538b</string><key>UDID</key><string>e6f9b9a548733c1ec3306d4c6d9b20e2447f12a8</string></dict></plist>6.2. 设备离线
在确定设备在线的情况下 , 发送查询命令 , 如果逾期没收到返回信息标示设备描述文件被卸载;
7. 设备命令
7.1. Control Commands(控制类命令)
7.1.1. Device Lock(设备锁屏)
RequestType: DeviceLock
设备锁屏后 , 如果设备以前设置了锁屏密码 , 那么设备就会要求输入你以前的锁屏密码来解除屏幕锁 。
7.1.2. Erase Device(擦出设备数据)
RequestType: EraseDevice
擦拭设备的内存数据和重置为“恢复出厂”的状态 , 需要连接到iTunes备份或恢复配置新的 。
7.1.3. Clear Passcode(清除锁屏密码)
【iphone设备管理器不见了 苹果手机的设备管理不见了怎么弄】RequestType: ClearPasscode
另外需要TokenUpdate时返回的UnlockToken数据;
如果设备以前设置了锁屏密码 , 当发送此命令时会清除设备设置的密码 。如果密码被其他配置控制需要 , 用户将可以在宽限期内设置一个新密码 。
7.2. Device Queries(查询设备信息类)
7.2.1. Security Information(安全信息)
RequestType: SecurityInfo
列出指定的安全相关的设置装置 , 包括硬件加密功能 , 以及是否存在一个密码(如果是这样 , 是否符合配置) 。如果密码是存在的 , 装置必须解锁执行这个命令 。
7.2.2. Installed Application List(应用程序列表)
RequestType: InstalledApplicationList
所有的应用程序目前安装在设备列表 。包括应用程序所使用的总体持久性存储 , 表示字节 , 随着应用程序的名称 , 版本 , 和束标识符 。没有列出应用程序安装通过破解方法 。
7.2.3. Device Information(设备信息)
RequestType: DeviceInformation
检索指定的一般信息的装置 , 包括MAC的电话号码 , 软件版本 , 名称和编号等 。
7.2.4. Certificate list(证书列表)
RequestType: CertificateList
列出所有目前在设备上安装证书 。
7.2.5. Profile List(描述文件列表)
RequestType: ProfileList
安装在设备描述文件列表 。包括普通的名字 , 是否删除密码是必需的 , 是否去除无效 , 唯一的标识符 , 和其他类似的信息 。
7.2.6. Provisioning Profile List(预装的描述文件列表)
RequestType: ProvisioningProfileList
预装在设备列表描述文件(类似于描述文件列表) 。
7.2.7. Restrictions List(限制列表)
RequestType: RestrictionsList
列出目前在设备上的限制的影响 。例如 , 列表禁用应用程序 , 无论是备份加密是被迫的 , 等等 。
7.3. Device Configuration(设备配置)
7.3.1. Install Profile(安装描述文件)
RequestType: InstallProfile
给定一个base64编码的.mobileconfig描述文件(由IPCU或其他工具创建) , 安装在装置的配置 。
7.3.2. Remove Profile(卸载配置文件)
RequestType: RemoveProfile
给定一个载荷标识符(通常是作为一个反向DNS的标识符 , 如“com.example.cfg.restrictions”) , 删除从设备的配置文件 。
7.3.3. Install Provisioning Profile(安装预装描述配置文件)
RequestType: InstallProvisioningProfile
给定一个base64编码的.mobileprovision文件(由IPCU或其他工具创建) , 安装在装置的配置 。
7.3.4. Remove Provisioning Profile(卸载预先安装的描述配置文件)
RequestType: RemoveProvisioningProfile
该命令会删除配置文件从设备 , 给出了配置文件的UUID 。