[已解决]POST报文中使用了AMF该怎么处理
本帖最后由 左手猫头鹰 于 2010-10-15 23:47 编辑要想一个系统发送消息,抓包发现POST Data用了AMF协议,AU3能处理这个吗
本来想直接填写16进制字符串进去,但是16进制的起始位“00”,好像被当成空串截断了,相当于没有填写这个内容
这个是AMF内容的截图
这个是16进制内容的截图
想把报文贴出来的,但是发现POST Data那一段,因为“00”的十六进制编码,没有办法黏贴…… 本帖最后由 republican 于 2010-10-15 07:44 编辑
使用二进制传输,我的UDF支持Post二进制内容。
如果给出Obj下的语法,我可以帮你改成UDF的格式。 语法还没有完全搞清楚,不过大概报文规则是这个样子的,我把拼装字符串的代码发出来 ;按照抓包里面内容填的
$strCatchFishStartLevelAMFHeader = _HexToString("0003000000010021")
$strCatchFishStartLevelAMFBodyTarget = "amfService.catchFishStartLevelAMF"
$strCatchFishStartLevelAMFBodyResponse = _HexToString("00022f") & "8"
$strCatchFishStartLevelAMFBodyContent0 = _HexToString("0000001380a00000002020127") & _
$bd_sig_session_key & $bd_sig_user & $bd_sig_portrait
$strCatchFishStartLevelAMFBodyContent1 = _HexToString("004014000000000000")
;最后总的内容
$strCatchFishStartLevelAMF = $strCatchFishStartLevelAMFHeader & _
$strCatchFishStartLevelAMFBodyTarget & $strCatchFishStartLevelAMFBodyResponse & _
$strCatchFishStartLevelAMFBodyContent0 & $strCatchFishStartLevelAMFBodyContent1 回复 4# 左手猫头鹰
我觉得你应该用Binary. 感觉不行,_HexToString("0003000000010021")中数字已经是看到的ASCII码了
用Binary的结果打到文件里面,却0x0003000000010021amfService.catchFishStartLevelAMF,跟我想要的不一样 现在成功了,谢谢republican的启发
发现一个系统转换规则,Binary返回的是一个二进制的内存,例如“373839”,对应的内容为“789”的字符串,但是与其他字符串拼接后,就直接变成了“373839”的字符串了。
然后换了一种思考方式,把内容都换成16进制字符串拼装,再最后统一用一次Binary就可了 简单附一下源码,给以后有需要的人用 $strCatchFishStartLevelAMFHeader = "0003000000010021"
$strCatchFishStartLevelAMFBodyTarget = _StringToHex("amfService.catchFishStartLevelAMF")
;最后总的内容
$strCatchFishStartLevelAMF = "0x" & $strCatchFishStartLevelAMFHeader
;发送消息
$oHTTP.Send(Binary($strCatchFishStartLevelAMF)) 不用说,这个暴强 记录下 ,有需要 做个记号,看下。
页:
[1]