pyamf,python解析amf数据,python和flash交互

首先要安装相关的库,pip install py3amf,注意,py3amf只支持32位python环境,用64位python无法使用py3amf

要注意的是,在构造amf数据格式的时候对应的代码逻辑,单独的数据默认会有下标,有名称对应值的一般没有下标,

messaging.RemotingMessage()声明的数据属于content并且可以有多个且如果有多个默认按顺序有下标

amf协议的十六进制数据如果保存在文件中,也可以直接把该数据解析,在代码中有体现

这是在charles中的请求包
在这里插入图片描述
下面是代码,我代码里构造的integer少了几个,其他的跟上面的一样

import uuid
import pyamf
import requests
from pyamf import remoting
from pyamf.flex import messaging

# 构造flex.messaging.messages.RemotingMessage消息
msg= messaging.RemotingMessage()
msg0= messaging.RemotingMessage()
msg1= messaging.RemotingMessage()
msg=12
msg0=1909911,1910261
msg1=1

# 按AMF协议编码
req = remoting.Request(target='api.stone.challenge', body=(msg,msg0,msg1))
env = remoting.Envelope(amfVersion=pyamf.AMF3)
env.bodies = [('/1',req)]
data = bytes(remoting.encode(env).read())

# 设置请求头和cookie
header={
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0',
    'Accept':'*/*',
    'Accept-Language':'zh-CN',
    'x-flash-version':'34,0,0,282',
    'Content-Type':'application/x-amf',
    'Accept-Encoding':'gzip, deflate',
    'User-Agent':'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)',
    'Host':'这里写域名',
    'Pragma':'no-cache',
    'Cookie':'这里填种子',
    'Connection':'keep-alive'
}

# 发送请求并且接收响应
url = '这里写目标地址'
req = requests.post(url,data,headers=header)

#打印响应报文
resp = remoting.decode(req.content)
print("响应:")
print(resp)

#打印请求报文
resp0 = remoting.decode(data)
print("请求:")
print(resp0)

'''
#python读取十六进制文件后amf解码
words=open("9",'rb')
sss=words.read()
resp1 = remoting.decode(sss)
print("请求:")
print(resp1)
'''
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值