2013-10-24 4 views
15

以前のバージョンでは、非常に単純な文書フォーマットを使用:リバースエンジニアリングの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バイトを切り捨てると、明らかに使用できませんでした。

+0

あなたは 'file ThemeStylesheet.iwa'を試して、ファイルが何であるか把握できるかどうか確認しましたか? –

+0

はい、ファイルは単に 'data'を返します(つまり、それは分かりません)。 – jrk

+0

私はこのフォーマットを解読しようとしていますが、Pagesに焦点を当てていますので、私は 'Document.iwa'を見ています。何人かはAppleがプロトコルバッファを使用していると示唆していたので、私はドキュメントの可能な全てのスライス(例えば、100〜3000バイト)を '--decode_raw 'するスクリプトを書いた。あなたのように、私は使用可能な出力がないことを発見しました。 – stevel

答えて

22

here

これは私が見て4つのファイルに対してチェックアウト。私はフォーマットのdescriptionを書き、サンプルプロジェクトも提供しました。

基本的に、.iwaファイルはSnappyを使用して圧縮されたProtobufストリームです。

希望すると便利です。

+0

素敵な仕事とドキュメンテーション! – WMIF

3

興味深いプロジェクトです、私はそれが好きです!これまでに私が見つけたものがここにあります。

各iwaファイルの最初の4バイトは、調整された長さのようです。だから、ファイルタイプを確認するための「魔法」は存在しないようです。 Slide1.iwaで

ルック: - 633 = 00 02 79
00 02 79 == 633
637:
最初の4つのバイトは00 79 02 00
ファイルサイズである637バイト
最初00オフを取り、バイトを逆でありますファイルのサイズを保持する4バイト。私は逆の形式をエンジニアリング、いくつかの仕事をして、私の結果を公開したSlide1.iwa、Slide2.iwa、Document.iwa、DocumentStylesheet.iwa

+1

"リトルエンディアン"(http://en.wikipedia.org/wiki/Endianness#Little-endian)ではなく、 "微調整"と呼ばれています。 –

関連する問題