2012-06-29 5 views
2

나는 무엇이 있는가 생각하면은 ByteArray입니다. 문자열에 urlencode를 사용하는 경우, 나는이 데이터를 얻을 수 ...PHP에서 Amf ByteArray 문자열로 어떻게 작업합니까?

%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 함수의 포장을 풀고보고, X는가, A는, 시간이, H 당겨하는 것입니다 unpack('c4char/Xstr/...')을 시도하고있는 "SaleDate "끈이 끊어 지지만 작동시키지 못한다.

아마도 완전히 잘못된 접근입니다. 어떤 종류의 커스텀 언 패커를 써야하나요?

내가 여기서 다루고있는 내용이 확실하지 않습니다. 플래시 파일의 결과물이므로 Amf "ByteArray"라고 생각합니다.하지만 구문 분석 방법은별로 없습니다.

이런 식으로 조작/분석/다시 작성하는 방법에 대한 사냥을 시작하는 방향조차 찾고 있습니다. 궁극적으로 나는 함수를 통해 그것을 실행할 수 있고, 연관 배열을 얻고, 몇 가지 값을 변경하고, 재 포장하고, 그것을 메리 방식으로 보낼 수 있기를 원합니다.

나는 AMF3이라고 생각하며 메시지 부분의 데이터입니다.

"기본"질문이 하나 있는데 간단하고 안전하게 데이터 문자열을 어떻게 조작해야합니까?

모든 리드 주셔서 감사합니다.

+0

안녕하세요 Dustin, 저는 이것이 실제 AMF가 아닌 PHP로 보내는 URL로 인코딩 된 문자열이라고 생각합니다. 그러나 AMFPHP에 대한 Google의 경우 http://cookbooks.adobe.com/post_AMFPHP___Flex_4_demo-16508.html을 참조하십시오. 또한 Zend를 PHP 프레임 워크로 사용하는 것을 고려하고 싶습니다. (그리고 저는 AMFPHP를 포함하고 있습니다.) 설정/구성에 대한 자세한 내용은 Google에 문의해야하지만 한 번 설치하면 PHP 객체에서 AS3으로 객체 직렬화/직렬화를 쉽게 수행 할 수 있습니다. 객체들 (AS3 객체의 정규화 된 이름에 해당하는 PHP 객체에서 _explicitType을 설정하기 만하면 됨) – shaunhusain

+0

실제로 말한 것처럼, 바이트를 표시 할 수 있도록 "urlencoded"합니다. 인코딩되지 않은 형식의 바이트는 실제 문자가 아니기 때문에 공백 문자입니다. 그리고 예, 저는 Zend_AMF와 AmfPHP를 살펴 봤습니다. Amfphp_Core_Amf_Types_ByteArray를 보면 문자열을 유지하는 것으로 문자열을 조작하는 데 아무 것도 찾을 수 없었습니다. 나는 ""PHP로 데이터를 보내지 않을거야, 이건 내가 PHP에서 가지고있는 데이터이며,이 문자열을 생성하거나 안전하게 조작하는 방법을 알아 내려고하고있다. –

답변

0

내가 알 수있는 한, 이것은 pr 벤더 고유의 비 독점적 인 인코딩 방법. 페이로드의 유연성을 높이기 위해 "Byte Array"를 사용합니다. 인코딩 및 디코딩 알고리즘을 완전히 리버스 엔지니어링하지 않고도이 작업을 수행하는 쉬운 방법은 없습니다.

1

오픈 소스 인 AMF 디시리얼라이저가 많이 있습니다. AMF3은 매우 간단하지만 실제로는 여기에 자신을 굴리지 않는 것이 좋습니다.

내가 약속 같은데 GitHub의에이 링크를 통해 온 :

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

당신은 아마 전체 프레임 워크를 롤백 할 수는 없지만, 아마이 롤백 할 수 있습니다 :

/core/amf/Deserializer.php

/core/amf/Serializer.php

+0

네, 저기 있습니다, 그리고 이것은 비 직렬화 된 결과입니다.디시리얼라이저는 'Amfphp_Core_Amf_Packet'을 반환하고 패킷에는 헤더와 메시지가 있습니다. 메시지에는 위의 문자열 만 변수에 저장되어있는 'Amfphp_Core_Amf_Types_ByteArray'가있는 메시지가 하나 있습니다. 내가 볼 수있는 조작 기능이나 추가 디코딩이 없습니다. 이것은 원래 AMF 패킷에서 이미 deserialize되어 있습니다. 그냥 지금 어떻게 조작하는지 알아 내려고합니다. –

+0

흠, bytearray를 다시 deserialize 해 보셨습니까? 예, 이것은 amf3 패킷처럼 보입니다. bytearray는 다른 amf3 패킷입니다. – ansiart

+0

그래도 문제는 보이지만,이 모든 디시리얼라이저에는 참조하는 클래스를 처리하는 데 필요한 모든 추가 코드가 있으며 단순한 객체 만 원할뿐입니다. 좀 더 주변을 둘러 볼 것입니다, 이것은 어딘가에 존재해야합니다. – ansiart