首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AMF解码示例

AMF解码示例
EN

Stack Overflow用户
提问于 2012-11-29 15:48:50
回答 3查看 6.8K关注 0票数 1

我正在尝试阅读一些flex/amf流量,但缺乏适当的文档/示例使其变得非常困难。

请告诉我以下rtmp/amf3数据包的解码过程:

代码语言:javascript
复制
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 - type 1= rtmp报头将为7个字节。流ID - 3,将在此单个字节中。

还设法通过移位UTF 1位来读取以下内容,以获得长度:

0x4f: flex.messaging.messages.RemotingMessage

0x0d:源

0x13:操作

0x0f:标头

0x17:目的地

0x13: messageId

0x11: clientId

0x15: timeToLive

我的猜测到此结束,"time“/ "stamp”似乎不起作用。当然,我不能理解所有其他字节是如何编码的(对象/数组等);

EN

回答 3

Stack Overflow用户

发布于 2012-11-29 15:57:50

使用Charles解析AMF!http://www.charlesproxy.com/documentation/additional/amf/

票数 3
EN

Stack Overflow用户

发布于 2012-11-30 12:25:45

代码语言:javascript
复制
0x43, 0x00, 0x68, 0xcd, 0x00, 0x01, 0x33, 0x11

1byte+7bytes RTMP报头数据[0]

代码语言:javascript
复制
0x00, 0x05, 0x00, 0x40, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05

Flex魔术字节,与调用版本、id等有关的内容

代码语言:javascript
复制
0x11

AMF3数据的开始

代码语言:javascript
复制
0x0a.....

AMF3对象和常规AMF3编码[1]

注意:关于RTMP,它将AMF数据分成最小的128个字节,后面跟着一个标题字节(不是AMF的一部分),例如上例中的0xc3。

票数 1
EN

Stack Overflow用户

发布于 2013-01-07 16:12:18

我会从阅读开始

AMF0

AMF3

Wikipedia上可以找到更多的例子。

然后是你可能不需要的RTMP Specification

接下来,您可以查看FluorineFX的源代码。这让我开始了解一些事情。Sources FluorineFX。我所做的是在FluorineFX源代码中设置断点,然后从Flex应用程序进行调用。然后我可以一步一步了解FluorineFX源代码(在我旁边是AMF规范)。

规范很难读懂,但它们确实是解析字节所需的全部内容。

也许你也可以看看this JavaScript AMF project

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13621083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档