2012-03-15 11 views
15

एक .mobileprovision फ़ाइल की संरचना इस तरह दिखता है:प्रावधान प्रोफ़ाइल फ़ाइल में प्लिस्ट के आसपास बाइनरी डेटा क्या है?

  1. क्या इस बाइनरी डेटा है:

    <!-- small binary data --> 
    
    <?xml version="1.0" encoding="UTF-8"?> 
    <!-- plist data --> 
    </plist> 
    
    <!-- large binary data --> 
    

    मैं इस के आसपास कुछ प्रश्न हैं?

  2. क्या यह उपयोगी है?
  3. एक्सएमएल सीमाओं की खोज किए बिना मैं .mobileprovision फ़ाइल से प्लेस्ट कैसे निकाल सकता हूं?

विशेष रूप से, मैं इस सवाल को उत्तर के रूप में (और इसके साथ +100 बक्षीस का पुरस्कार दूंगा) जब ऊपर Q1 और Q3 दोनों का उत्तर दिया गया है।

उत्तर

23

मुझे अंततः an answer to another question से SO पर जवाब मिला।

मूल रूप से .mobileprovision फ़ाइल CMS एन्क्रिप्टेड XML फ़ाइल है। .mobileprovision फ़ाइल है

security cms -D -i /path/to/profile.mobileprovision 
+0

आपको इस विधि से प्राप्त जानकारी को टेक्स्ट एडिटर में मोबाइलप्रोविजन खोलकर भी प्राप्त किया जा सकता है। एक्सएमएल के बाद, अतिरिक्त डेटा का एक ब्लॉक है जो 'सुरक्षा' का उपयोग करके डीकोड नहीं करेगा। –

+1

मुझे पता है; यही कारण है कि मैंने इस सवाल से पूछा। मैं जो चाहता था वह सिर्फ एक्सएमएल प्राप्त करने का एक प्रोग्राम करने योग्य/पटकथा योग्य तरीका था और कुछ भी नहीं। –

1

फ़ाइल मूल रूप से सार्वजनिक वितरण कुंजी + ऐप्पल सार्वजनिक प्रमाणपत्र श्रृंखला + अनुमत डिवाइस है जिसे इंस्टॉल किया जा सकता है - जब तक आईपीए फ़ाइल को भी हस्ताक्षरित किया जाता है।

आपकी कुंजी प्लिस्ट प्रविष्टि में एन्कोड की गई है। एप्पल रूट सार्वजनिक प्रमाणपत्र (Apple से डाउनलोड करने और Apple iPhone प्रमाणन प्राधिकरण (अपने Apple पोर्टल के माध्यम से डाउनलोड किया जा सकता)

[टिप्पणी के आधार पर अपडेट किया गया]: और plist के बाद बाइनरी डेटा संबद्ध सार्वजनिक प्रमाणपत्रों हैं। वास्तविक लक्ष्य इतना है कि ऐप्लिकेशन को फिर से प्रवेश कर सकते प्रमाणपत्र "आम नाम" मेरे मोबाइल प्रावधान फ़ाइल का उपयोग किया बाहर काम करने के लिए है।

मोबाइल प्रावधान फ़ाइल ApplicationIdentifierPrefix टैग प्रमाण पत्र UserID शामिल अंदर। यह संख्या सका कीचेन उपकरण में प्रमाणपत्र खोजने के लिए इस्तेमाल किया जाए।

तो मैन्युअल रूप से, कदम होगा:

  1. .mobileprovision फ़ाइल
  2. ओपन कीचेन app से ApplicationIdentifierPrefix संख्या निकालें। प्रत्येक लॉगिन/प्रमाण पत्र के माध्यम से देखो UserId

मिलान प्रक्रिया

  1. रन कुछ फैंसी यूनिक्स कमांड को स्वचालित करने के आईडी
  2. निकालने के लिए रन security find-certificate -a >a.out तो आईडी के लिए grep के साथ एक खोजने के लिए। फिर एक ही रिकॉर्ड से आम नाम पाएं।
+0

मूल रूप से मैं एक अलग प्रावधान फ़ाइल के साथ एक ऐप इस्तीफा देना चाहता हूं। मैं सोच रहा था कि, ऐप को इस्तीफा देने के लिए प्रमाणपत्र नाम को स्पष्ट रूप से निर्दिष्ट करने के बजाय, हम नए प्रावधान प्रोफ़ाइल से हस्ताक्षर प्रमाणपत्र जानकारी निकाल सकते हैं। एक .mobileprovision फ़ाइल की सामग्री को देखते हुए मुझे इसका नेतृत्व किया। –

+0

मैं इस फ़ाइल से केवल plist जानकारी कैसे निकालूं? –

+0

AFAIK आप इस्तीफा नहीं दे सकते - क्योंकि आपको XCode में संकलन समय के दौरान और फिर अंतिम आईपीए के दौरान बाइनरी पर हस्ताक्षर करना होगा। हालांकि बाद में ऐप पैकेज में एम्बेडेड.मोबाइलप्रोविजनिंग के रूप में XX.mobileprovisiong फ़ाइल जोड़ना हो सकता है। तो आपकी स्थिति है कि आपके पास बाइनरी आईपीए/एपीपी है लेकिन स्रोत नहीं है? – peterept

5

मैं अपने प्रारंभिक प्रश्न का उत्तर नहीं है, लेकिन मैं कैसे .mobileprovision फ़ाइल से हस्ताक्षर करने के प्रमाण पत्र को निकालने के लिए व्याख्या कर सकते हैं:

  1. .mobileprovision की plist हिस्सा एक चाबी है 'डेवलपर सर्टिफिकेट्स', जिसका मूल्य एनएसडीटा की एक सरणी है।
  2. प्रत्येक एनएसडीटा एक .cer फ़ाइल है - जिस हस्ताक्षर प्रमाणपत्र को आप ढूंढ रहे हैं।

मेरे पास हस्ताक्षर प्रमाणपत्र के विषय को सीधे निकालने के लिए एक लघु खोल स्क्रिप्ट है।मोबाइलप्रोविजन फ़ाइल यहां: https://gist.github.com/2147247 - स्क्रिप्ट पहले वर्णित सरणी में केवल एक प्रमाणपत्र के साथ काम करती है, जो सामान्य मामला होना चाहिए।

जैसा कि आप स्क्रिप्ट में देख सकते हैं, मुझे आपके तीसरे प्रश्न का कोई जवाब नहीं है, मैं सिर्फ पहली पंक्ति और समापन टैग के बाद सब कुछ काट रहा हूं।

+0

बहुत बहुत धन्यवाद। हालांकि, जैसा कि आपने कहा था, यह प्रारंभिक प्रश्न का उत्तर नहीं देता है, यह अभी भी बहुत उपयोगी था - मैंने अंततः सीखा कि 'डेवलपर सर्टिफिकेट्स' कुंजी में प्रमाणपत्र एक x50 9 प्रमाण है, जो कुछ मैं एसओ-) पर पूछने की योजना बना रहा था धन्यवाद आप। –

2

उपयोग

security cms -D -i /path/to/profile.mobileprovision 

यदि आप त्रुटि संदेश /dev/null

security cms -D -i /path/to/profile.mobileprovision 2> /dev/null 
1

करने के लिए security: SecPolicySetValue: One or more parameters passed to a function were not valid सिर्फ पाइप त्रुटि मिलती है: यह ओएस एक्स पर security का उपयोग कर डीकोड किया जा सकता DER encoded ASN.1,

प्लास्ट है इस ASN.1 संदेश में संग्रहीत मानों में से एक।

संबंधित मुद्दे