解析 AMF3 对象

标签 parsing object actionscript amf

我正在尝试解码包含 AMF3 的 AMF0 消息..一切顺利 除了理解 U29 格式和字符串的编码方式 在 AMF4

  channel=3  size=134  pkttype=0x11  time=1973

  00000: 00 02 00 14 73 65 6E 64  55 6E 69 76 65 72 73 61  6C 4D 65 73     ....sendUniversalMes
  00020: 73 61 67 65 00 00 00 00  00 00 00 00 00 05 02 00  11 6D 62 5F     sage.............mb_
  00040: 31 32 32 31 30 5F 37 35  39 32 33 33 38 30 05 00  40 58 C0 00     12210_75923380..@X..
  00060: 00 00 00 00 11 0A 0B 01  09 68 62 69 64 04 81 CF  5E 09 73 72     .........hbid...^.sr
  00080: 63 65 06 49 63 37 62 39  32 33 65 65 2D 30 61 30  38 2D 34 62     ce.Ic7b923ee-0a08-4b
  00100: 61 32 2D 38 65 37 63 2D  63 38 32 61 39 33 64 37  37 31 34 32     a2-8e7c-c82a93d77142
  00120: 09 68 62 64 6C 04 00 09  74 65 78 74 01 01                        .hbdl...text..

  first byte I skip 
  02 = string
  00 14 = length of string ( 20 characters , sendUniversalMessage )
  00 00 00 00 00 00 00 00 00 = number = 0
  05 = null
  02 = string
  00 11 = length of string ( 17 characters , mb_12210_75923380 )
  05 = null
  00 40 58 C0 00 00 00 00 00 = number = 99
  11 = AMV+

  here is where I have problems

  0A = AMF3 object 
  now I need to do a readU29 which starts with
  0B = what does this mean
  01 = what does this mean
  09 = what does this mean

  where is the length of the string 'hbid' ?

最佳答案

在 U29 中,如果第一个字节的值小于 128,则它适合第一个字节。所以你必须将其读作 3 个不同的 u29,分别为 0B、01、09。

0B:关于对象类型的详细信息。看来你对那个字节不是太感兴趣而且它很复杂,所以通过。

01:LSB 表示这不是字符串引用。那么01 >> 1 = 0就是类名的长度。这意味着空字符串,这意味着这是一个匿名(无类型)对象。

09: = 00001001。LSB 也是表示这不是字符串引用的位。那么1001 >> 1 = 0100 = 4就是字符串长度。

希望对你有帮助

关于解析 AMF3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12051494/

相关文章:

javascript - AngularJS 显示为纯文本

python - 按特定顺序搜索特定格式的文本文件数据

java - 如何删除一个空的对象数组?

php - 如何在显示图像之前验证对象是否具有值?

vb.net - AxShockwaveFlash.CallFunction() 帮助 (VB 2008)

actionscript-3 - AS3内存泄漏

javascript - 为什么这个 HTML 标签甚至在 body 加载之前就将 body 作为它的 lastChild

c++ - 在 rapidjson 上,只将数字编码为字符串,然后对其进行解码

javascript - 在 JS 中执行函数之前执行带有参数的初始任务

flash - AS3:类型强制失败:无法转换 flash.display::MovieClip