2011-02-09 2 views
0

バイナリplistファイルを編集するスクリプトを作成しようとしています。 plistは、DVDスタジオプロファイルに含まれるオブジェクトを記述します。 DVD studio proのテキストボックスは、plistのbase64データとしてエンコードされており、テキスト文字列とそのフォーマットについて記述されているようです。私はこのデータを理解する方法を理解できないようです。理想的には、私はテキスト文字列を変更することができますが、書式設定はできません。以下は、 "ここにメニュータイトル"と書かれたテキストボックスを説明しているようです。 2つの文字列があります。一方は「辞書」と呼ばれ、もう一方は「文字列」と呼ばれます。どちらもCFDataです。どのように私はこれを解析することができますか私は直接編集することができる形式にこれを変換する任意のアイデア?私はココアに小さなコンバータを書いて遊んできましたが、運はまだありません。バイナリplistでフォーマットされたテキストエンコーディング

<dict> 
              <key>Dictionary</key> 
              <data> 
          BAtzdHJlYW10 
          eXBlZIHoA4QB 
          QISEhAxOU0Rp 
          Y3Rpb25hcnkA 
          hIQITlNPYmpl 
          Y3QAhYQBaQaS 
          hISECE5TU3Ry 
          aW5nAZSEASsG 
          TlNGb250hpKE 
          hIQGTlNGb250 
          HpSVJIQFWzM2 
          Y10GAAAAGgAA 
          AP/+TAB1AGMA 
          aQBkAGEARwBy 
          AGEAbgBkAGUA 
          AACEAWYVhAFj 
          AJsBmwCbAIaS 
          hJaXB05TQ29s 
          b3KGkoSEhAdO 
          U0NvbG9yAJSb 
          AYQEZmZmZoPz 
          8nI/g/Dvbz+D 
          7OtrPwGGkoSW 
          lwtOU0V4cGFu 
          c2lvboaShISE 
          CE5TTnVtYmVy 
          AISEB05TVmFs 
          dWUAlIQBKoSa 
          moNHx9c9hpKE 
          lpcNTlNPYmxp 
          cXVlbmVzc4aS 
          hJ6ghIQBZKEA 
          hpKElpcQTlNQ 
          YXJhZ3JhcGhT 
          dHlsZYaShISE 
          EE5TUGFyYWdy 
          YXBoU3R5bGUA 
          lIQEQ0NAUwAA 
          hQCGkoSWlxFO 
          U0JhY2tncm91 
          bmRDb2xvcoaS 
          hJubA4QCZmYA 
          AIaG 
              </data> 
              <key>String</key> 
              <data> 
          BAtzdHJlYW10 
          eXBlZIHoA4QB 
          QISEhBJOU0F0 
          dHJpYnV0ZWRT 
          dHJpbmcAhIQI 
          TlNPYmplY3QA 
          hZKEhIQITlNT 
          dHJpbmcBlIQB 
          Kw9OZW51IFRp 
          dGxlIEhlcmWG 
          hAJpSQEPkoSE 
          hAxOU0RpY3Rp 
          b25hcnkAlIQB 
          aQWShJaWDU5T 
          T2JsaXF1ZW5l 
          c3OGkoSEhAhO 
          U051bWJlcgCE 
          hAdOU1ZhbHVl 
          AJSEASqEhAFk 
          nQCGkoSWlgtO 
          U0V4cGFuc2lv 
          boaShJuchIQB 
          Zp6DR8fXPYaS 
          hJaWEE5TUGFy 
          YWdyYXBoU3R5 
          bGWGkoSEhBBO 
          U1BhcmFncmFw 
          aFN0eWxlAJSE 
          BENDQFMAAIUA 
          hpKElpYGTlNG 
          b250hpKEhIQG 
          TlNGb250HpSZ 
          JIQFWzM2Y10G 
          AAAAGgAAAP/+ 
          TAB1AGMAaQBk 
          AGEARwByAGEA 
          bgBkAGUAAACe 
          FYQBYwCjAaMA 
          owCGkoSWlgdO 
          U0NvbG9yhpKE 
          hIQHTlNDb2xv 
          cgCUowGEBGZm 
          ZmaD8/JyP4Pw 
          728/g+zraz8B 
          hoaG 
              </data> 
             </dict> 

答えて

2

これは、Base64でコード化されたNSArchiverアーカイブです。最初にbase64をデコードしてから[NSUnarchiver unarchiveObjectWithData:]を使用する必要があります。上記の "Dictionary"エントリは、デコード後にpyObjCを使用しているため、Python構文では次のようになります。

{ 
    NSBackgroundColor = "NSCalibratedWhiteColorSpace 0 0"; 
    NSColor = "NSCalibratedRGBColorSpace 0.94902 0.937255 0.921569 1"; 
    NSExpansion = "0.1053606"; 
    NSFont = "\"LucidaGrande 21.00 pt. P [] (0x103110b60) fobj=0x103110c30, spc=6.64\""; 
    NSObliqueness = 0; 
    NSParagraphStyle = "Alignment 0, LineSpacing 0, ParagraphSpacing 0, ParagraphSpacingBefore 0, HeadIndent 0, TailIndent 0, FirstLineHeadIndent 0, LineHeight 0/0, LineHeightMultiple 0, LineBreakMode 0, Tabs (\n 28L,\n 56L,\n 84L,\n 112L,\n 140L,\n 168L,\n 196L,\n 224L,\n 252L,\n 280L,\n 308L,\n 336L\n), DefaultTabInterval 0, Blocks (null), Lists (null), BaseWritingDirection -1, HyphenationFactor 0, TighteningFactor 0.05, HeaderLevel 0"; 
} 
関連する問題