以前のバージョンでは、非常に単純な文書フォーマットを使用:リバースエンジニアリングのiWork '13フォーマットは、AppleのiWorkのスイートの
- 文書は、バンドルが記述
index.apxl[z]
ファイルが含まれていたリソースのバンドル(フォルダ、ZIP形式またはない) - ました私有ではあるがわかりやすいスキーマの文書構造
iWork '13はフォーマットを完全にやり直しました。ドキュメントはまだバンドルですが、インデックスXMLファイルに含まれていたものは、.iwa
のタイプ接尾辞がIndex.zip
にパックされたバイナリファイルのセットにエンコードされました。基調で
、例えば、以下iwa
ファイルがある:
MasterSlide
S 1 ...
Nため
AnnotationAuthorStorage.iwa
CalculationEngine.iwa
Document.iwa
DocumentStylesheet.iwa
MasterSlide-{n}.iwa
Metadata.iwa
Slide{m}.iwa
ThemeStylesheet.iwa
ViewState.iwa
Tables/DataList.iwa
とSlide
S 1 ... メートル
これらのそれぞれの目的は彼らの命名からかなり明らかです。ファイルは圧縮されていなくても、本質的にすべての内容のテキストがバイナリBLOBの中で文字列として直接表示されます(RTF/NSAttributedString /類似の関連ガベージが読みやすいASCII文字の中にあります)。
Index
の簡単な例のKeynoteドキュメントは、https://github.com/jrk/iwork-13-formatです。
ただし、全体的なファイル形式はわかりません。 Appleは、ほとんどのドキュメントをエンコードするためのplistのようなシンプルなプラットフォーム標準フォーマットを使用してきた長い歴史を持っていますが、ファイルの先頭に明確なタイプタグはなく、iwa
ファイルが何であるかはわかりません。
これらのファイルには何も表示されませんか?合理的に分かりやすいシリアライズ形式の証拠はありますか?
KeynoteアプリケーションのランタイムとF-Scriptでクラスダンプを実行すると、私が見つけた唯一の証拠は、iWorkで使用されるようなシリアライゼーションクラスでプロトコルバッファを使用した場合の唯一の証拠です(例:https://github.com/nst/iOS-Runtime-Headers/blob/master/PrivateFrameworks/iWorkImport.framework/TSPArchiverBase.h)。
protoc --decode_raw
でファイルの一部を素早くパイプし、最初の0〜16バイトを切り捨てると、明らかに使用できませんでした。
あなたは 'file ThemeStylesheet.iwa'を試して、ファイルが何であるか把握できるかどうか確認しましたか? –
はい、ファイルは単に 'data'を返します(つまり、それは分かりません)。 – jrk
私はこのフォーマットを解読しようとしていますが、Pagesに焦点を当てていますので、私は 'Document.iwa'を見ています。何人かはAppleがプロトコルバッファを使用していると示唆していたので、私はドキュメントの可能な全てのスライス(例えば、100〜3000バイト)を '--decode_raw 'するスクリプトを書いた。あなたのように、私は使用可能な出力がないことを発見しました。 – stevel