我如何使用PHP中的Amf ByteArray字符串?

时间:2012-06-29 20:04:56

标签: php actionscript-3 amf amfphp

我有认为是ByteArray。在字符串上使用urlencode时,我会收到此数据......

%0A%82%03%01%11SaleDate%0DToYear%0DYardId%15BuyNowOnly%0BState%0BModel%0FStockId%11FromYear%11FullText%13Inventory%11Category%09Make%0FOrderBy%1DOrderDirection%0FPageNum%11PageSize%01%01%06%05-1%02%06%01%01%01%01%06%0F1024187%06%09Sale%01%01%06%13RunNumber%06%07Asc%04%01%04d

我正在查看php函数unpack,并尝试unpack('c4char/Xstr/...')其中X是a,a,h,H试图拉出“SaleDate”字符串,但我无法让它工作。

可能是完全错误的做法。我是否需要编写某种自定义解包器?

我甚至不确定我在这里处理的是什么,它是来自flash文件的输出,所以我认为这是一个Amf“ByteArray”,但我对如何解析它感到茫然。

寻找一个方向来开始寻找如何操纵/解析/重建这样的东西。最终,我希望能够通过一个函数来运行它,获得一个关联数组,更改一些值,重新打包它,并以快乐的方式发送它。

我认为它是AMF3,这是消息部分中的数据。

我想如果有一个“主要”问题,我该如何简单安全地操纵该数据串呢?

感谢任何线索。

2 个答案:

答案 0 :(得分:1)

有很多AMF反序列化器都是开源的,为了简单起见,尽管AMF3相当简单,但在这里推广自己可能会很有意义。

我在github上看到了这个看起来很有希望的链接:

https://github.com/silexlabs/amfphp-2.0

你可能不想推翻整个框架,但可能会推出这个:

/core/amf/Deserializer.php

/core/amf/Serializer.php

答案 1 :(得分:0)

据我所知,这似乎是供应商特有的专有编码方法。他们使用“字节数组”来实现有效载荷的更大灵活性。如果没有对其编码和解码算法进行完全逆向工程,就没有一种简单的方法可以解决这个问题。