如何在 php 中使用 Amf ByteArray 字符串


How do I work with an Amf ByteArray string in php?

我有一个我认为是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('c4char/Xstr/...') X 是 a、A、h、H 的地方尝试拉出"SaleDate"字符串,但我无法让它工作。

可能是完全错误的方法。我需要编写某种自定义解包程序吗?

什至不确定我在这里处理什么,它是一个闪存文件的输出,所以我认为它是一个 Amf"ByteArray",但我不知道如何解析它。

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

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

我想如果有一个"主要"问题,我如何简单安全地操作该字符串?

感谢您的任何线索。

有很多 AMF 反序列化器是开源的,为了简单起见

,即使 AMF3 相当简单,不在这里推出自己的反序列化器可能也很有意义。

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

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

你可能不想滚动整个框架,但可能会滚动这个:

/

core/amf/解串器.php

/

core/amf/Serializer.php

据我所知,这似乎是特定于供应商的专有编码方法。它们使用"字节数组"来允许有效载荷的更大灵活性。没有一种简单的方法可以解决这个问题,而不完全逆向工程他们的编码和解码算法。