1

いくつかの flex/amf トラフィックを読み取ろうとしていますが、適切なドキュメントや例がないため、非常に困難です。

次の rtmp/amf3 パケットのデコードについて教えてください。

0x43, 0x00, 0x68, 0xcd, 0x00, 0x01, 0x33, 0x11, 0x00, 0x05, 0x00, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x11, 0x0a, 0x81, 0x13, 0x4f, 0x66, 0x6c, 0x65, 0x78, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x69, 0x6e, 0x67, 0x2e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x13, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x17, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x13, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x11, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x15, 0x74, 0x69, 0x6d, 0x65, 0x54, 0x6f, 0x4c, 0x69, 0x76, 0x65, 0x13, 0x74, 0x69, 0x6d, 0x65, 0xc3, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x09, 0x62, 0x6f, 0x64, 0x79, 0x01, 0x06, 0x29, 0x6c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x50, 0x72, 0x61, 0x63, 0x74, 0x69, 0x63, 0x65, 0x47, 0x61, 0x6d, 0x65, 0x73, 0x0a, 0x0b, 0x01, 0x21, 0x44, 0x53, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x04, 0x3c, 0x15, 0x44, 0x53, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x06, 0x11, 0x6d, 0x79, 0x2d, 0x72, 0x74, 0x6d, 0x70, 0x73, 0x09, 0x44, 0x53, 0x49, 0x64, 0x06, 0x49, 0x42, 0x45, 0x32, 0x34, 0x31, 0x32, 0x33, 0x34, 0x2d, 0x31, 0x45, 0x31, 0x39, 0x2d, 0x30, 0x33, 0x43, 0x33, 0x2d, 0x39, 0x30, 0x34, 0x43, 0x2d, 0x32, 0x31, 0x36, 0x33, 0x36, 0x36, 0x30, 0x41, 0x42, 0x34, 0x37, 0x46, 0x01, 0x06, 0x17, 0x67, 0x61, 0x6d, 0x65, 0x53, 0x65, 0xc3, 0x72, 0x76, 0x69, 0x63, 0x65, 0x06, 0x49, 0x31, 0x34, 0x43, 0x30, 0x46, 0x42, 0x38, 0x30, 0x2d, 0x46, 0x37, 0x43, 0x34, 0x2d, 0x42, 0x42, 0x34, 0x42, 0x2d, 0x31, 0x46, 0x32, 0x34, 0x2d, 0x34, 0x39, 0x36, 0x32, 0x38, 0x30, 0x42, 0x38, 0x39, 0x33, 0x42, 0x38, 0x01, 0x04, 0x00, 0x04, 0x00, 0x09, 0x01, 0x01

私の試み:

0x43 - 0100 0011 : [01] - タイプ 1 = rtmp ヘッダーは 7 バイトになります。ストリーム ID - 3 は、この 1 バイトになります。

また、UTF 1 ビットをシフトして長さを取得することで、以下を読み取ることができました。

0x4f: flex.messaging.messages.RemotingMessage

0x0d: ソース

0x13: 操作

0x0f: ヘッダー

0x17: 宛先

0x13: メッセージ ID

0x11: クライアント ID

0x15: 生存時間

ここで私の推測は止まります。「時間」/「スタンプ」は機能しないようです。もちろん、他のすべてのバイトがどのようにエンコードされているか(オブジェクト/配列など)を理解できていません。

4

3 に答える 3

3

Charles を使用して AMF を解析してください。http://www.charlesproxy.com/documentation/additional/amf/

于 2012-11-29T07:57:50.477 に答える
1

私は読むことから始めます

AMF0

AMF3

さらにいくつかの例がウィキペディアにあります。

そして、おそらく必要のないRTMP仕様です。

次に、FluorineFXのソースコードを調べることができます。それで私は物事を理解し始めました。ソースFluorineFX。私がしたことは、FluorineFXソースコードにブレークポイントを設定してから、Flexアプリケーションから呼び出しを行うことでした。次に、FluorineFXソースコードをステップスルーして、物事を理解することができます(私の隣にはAMF仕様があります)。

仕様は読みにくいですが、実際にバイトを解析するために必要なのは仕様だけです。

たぶん、このJavaScriptAMFプロジェクトも見てください。

于 2013-01-07T08:12:18.300 に答える
1
0x43, 0x00, 0x68, 0xcd, 0x00, 0x01, 0x33, 0x11

1byte+7bytes RTMPヘッダデータ [ 0 ]

0x00, 0x05, 0x00, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05

Flex マジック バイト、呼び出しバージョン、ID などに関連するもの

0x11

AMF3 データの開始

0x0a.....

AMF3 オブジェクト、および通常の AMF3 エンコーディング [ 1 ]

RTMP について注意してください。AMF データを最小の 128 バイトにチャンクし、その後に 1 つのヘッダー バイト (AMF の一部ではない) が続きます (上記の例では 0xc3 など)。

于 2012-11-30T04:25:44.693 に答える