Python解析Minecraft P

2024-10-01 15:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,它连接到矿山工艺服务器,接收数据包,然后发送数据包。在

所以,我发送一个“登录”包,然后收到一个“登录”包。不幸的是,接收到的登录包被编码了(关于编码的信息在这里:http://wiki.vg/Protocol#0x01)。在

接收到的登录包存储在名为received_login_packet的变量中。我需要对它进行解码,这样我就可以得到单独的数据位,例如数据包类型、维度等。。。在

我四处看看,但我完全不知道该怎么做。在

如果有帮助,下面是一些代码:

#encoding the packet to send
encuserlen = str(len(enc_user)) # enc_user is just my username
packfmt = '>bih%sshiibBB' % encuserlen
packetbytes = struct.pack(packfmt, 1, 28, len(data['user']), enc_user, 0, 0, 0, 0, 0, 0)
s.send(packetbytes)
time.sleep(2)
#login packet sent, waited for response
response = s.recv(1024) #this is the raw login response.
#it's encoded as detailed above. i want to decode it

任何帮助将不胜感激,请不要犹豫说,如果不够清楚。在


Tags: thetosend编码lenpacketisresponse
1条回答
网友
1楼 · 发布于 2024-10-01 15:39:05

所以,如果我理解正确的话,您需要解码包响应,它是1024字节,以获得正确的信息。看来你能用结构包语句中,有一个类似的语句要解包,如the documentation中所示。基本上,它看起来像这样。在

packfmt = '>issiibBB'
output=struct.unpack(packfmt,response)

另外,我不太相信您的请求是否被正确发送,但我将把它留给您一个练习,让您弄清楚如何设置它。见format strings。在

相关问题 更多 >

    热门问题