Python解析Minecraft数据包

Python解析Minecraft数据包,python,protocols,minecraft,Python,Protocols,Minecraft,我有一个脚本,可以连接到mine craft服务器,接收数据包,然后发送数据包 因此,我发送一个“登录”数据包,然后收到一个“登录”数据包。不幸的是,接收到的登录数据包已编码(此处有关编码的信息:) 接收到的登录数据包存储在名为received\u login\u packet的变量中。我需要对它进行解码,这样我就可以得到独立的数据位,比如包类型、维度等等 我环顾了一下四周,但我完全不知道该怎么做 如果有帮助,下面是一些代码: #encoding the packet to send encus

我有一个脚本,可以连接到mine craft服务器,接收数据包,然后发送数据包

因此,我发送一个“登录”数据包,然后收到一个“登录”数据包。不幸的是,接收到的登录数据包已编码(此处有关编码的信息:)

接收到的登录数据包存储在名为
received\u login\u 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

如果有任何帮助,我们将不胜感激,如果不够清楚,请毫不犹豫地说出来。

因此,如果我理解正确,您希望解码数据包响应(1024字节),以获得正确的信息。似乎您能够使用struct.pack语句,有一个类似的语句需要解包,如中所示。基本上是这样的

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

另外,我不太相信您的请求发送正确,但我将把它作为一个练习留给您,让您了解如何设置它。请参阅。

如果我理解正确,您需要解码数据包响应(1024字节),以获得正确的信息。似乎您能够使用struct.pack语句,有一个类似的语句需要解包,如中所示。基本上是这样的

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

另外,我不太相信您的请求发送正确,但我将把它作为一个练习留给您,让您了解如何设置它。看。

不够清楚。请包括代码示例。还有更好的吗?我添加了一些代码,虽然实际上不需要太多。大多数必需的信息都在wiki页面中,不够清晰。请包括代码示例。还有更好的吗?我添加了一些代码,虽然实际上不需要太多。大部分需要的信息都在维基页面上。这不太正确,但我意识到我的问题不清楚,它帮助我解决了很多问题。哦,你认为我犯了什么错误?我好像找不到它/请记住%s被替换为字符串len,其结果如下:
>bih20shiibBB
。还有客户端>服务器数据包。这不太正确,但我意识到我的问题不清楚,它帮助我解决了很多问题。哦,你认为我犯了什么错误?我好像找不到它/请记住%s被替换为字符串len,其结果如下:
>bih20shiibBB
。它也是客户机>服务器数据包。