Minecraft 将具有离线帐户的机器人连接到 Python 中的离线 Minecraft 服务器

问题描述 投票:0回答:1

有谁知道如何使用库套接字向 Minecraft 服务器发送握手和登录启动数据包?我正在尝试创建一个库,允许您将数据包发送到 Minecraft 服务器。我见过一些工具,但它们很难理解。有什么想法或代码片段吗?我还想询问是否需要加密密钥请求,并回复是否要将离线帐户连接到离线服务器。我知道如果我想将离线帐户连接到离线的Minecraft服务器,我不需要客户端身份验证、加密请求和响应,但是我如何从服务器获取登录成功数据包?我很困惑。我需要帮助。我需要数据包和连接。 Mineflayer 仅提供连接,而不提供对发送和接收的数据包的访问。

我当前的握手包代码:

def send_handshake(sock_con, host, port, version):
    # sock_con is a socket connection from the client to the server ( I use the library "socket" ) 
    handshake_packet = struct.pack(">B", 0x00) + varint.encode(version) + \
                       varint.encode(len(host)) + host.encode('utf-8') + \
                       struct.pack(">H", port) + struct.pack(">B", 0x02)
    print("Handshake Packet Bytes ", handshake_packet)
    sock_con.send(handshake_packet)

我当前的登录启动数据包代码:

def send_login_start(sock_con, name):
    username_bytes = name.encode('utf-8')
    login_start_packet = struct.pack(">B", 0x00) + varint.encode(len(username_bytes)) + username_bytes
    print("Login Packet Bytes ", login_start_packet)
    sock_con.send(login_start_packet)

现在我被困在加密请求、加密响应和登录成功数据包上。我想通过使用 struct.pack

在 python3 的低级网络中做到这一点

我尝试查看其他工具,但它们要么是我不知道的 Java 脚本,要么是令人困惑。我正在尝试使用数据包将机器人连接到 Python 中的 Minecraft 服务器。当然,通过保持活动数据包,机器人可以保持连接。如果有效,我将添加代理。机器人和服务器都处于离线状态(它们已启动并正在运行,但模式处于离线状态)。我尝试使用 https://gist.github.com/barneygale/1209061 但它不起作用。

python networking minecraft packet
1个回答
0
投票

https://wiki.vg/ 可能会对你有很大帮助,它有一堆协议文档和其他使用 Minecraft 协议的 Python 项目。

© www.soinside.com 2019 - 2024. All rights reserved.